Python

在乙太坊區塊鏈上看不到使用 web3.py 創建的交易

  • January 16, 2018

我正在嘗試使用web3.pyinfura.io 將乙太坊令牌從一個地址發送到另一個地址。這將返回給我一個交易 ID。但是當我檢查它時,它永遠不會進入區塊鏈。我使用了高gas量,但它仍然不起作用(根據etherscan.io和web3.py函式,交易ID不存在於區塊鏈上)

我嘗試了其他幾種簽署交易的方式,但它們也沒有奏效。

請幫我完成這項工作。謝謝你。

import web3
import time
w = web3.Web3(web3.HTTPProvider('https://mainnet.infura.io/12345678'))

# gas example
gas_limit = 250000
gas_price = 60

transaction = {
   'to':to_addr,
   'from':from_addr,
   'value':int(eth_amount*(10**18)),
   'gas':gas_limit,
   'gasPrice':int(gas_price*(10**9)),
   'chainId':1,
   'nonce':int(time.time())
   }
signed_transaction = w.eth.account.signTransaction(transaction, key)
transaction_id = w.eth.sendRawTransaction(signed_transaction.rawTransaction)

print ('\nhttps://etherscan.io/tx/{0}'.format(transaction_id.hex()))

nonce會高得離譜。賬戶的nonce0 開始並隨著每次傳出交易而增加。您可以通過 獲取目前正確的隨機數web3.eth.getTransactionCount

你的 gas 上限也很高:250 萬。以 60 gwei 和最近的乙太幣價格,消耗這麼多 gas 將花費幾百美元。現在,您的交易實際上可能不會消耗那麼多gas,但指定一個更合理的數字會更安全。對於賬戶之間的簡單轉賬,21,000 應該可以。如果您將乙太幣發送到進行一些計算的合約,請考慮使用 100,000。

引用自:https://ethereum.stackexchange.com/questions/36310