Python
在乙太坊區塊鏈上看不到使用 web3.py 創建的交易
我正在嘗試使用
web3.py
infura.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
會高得離譜。賬戶的nonce
0 開始並隨著每次傳出交易而增加。您可以通過 獲取目前正確的隨機數web3.eth.getTransactionCount
。你的 gas 上限也很高:250 萬。以 60 gwei 和最近的乙太幣價格,消耗這麼多 gas 將花費幾百美元。現在,您的交易實際上可能不會消耗那麼多gas,但指定一個更合理的數字會更安全。對於賬戶之間的簡單轉賬,21,000 應該可以。如果您將乙太幣發送到進行一些計算的合約,請考慮使用 100,000。