以下の web.py コードを使用して、ローカルの geth ノードを介して Rinkeby テストネットで 1 ETH のトランザクションを送信しようとしています。ライブのローカル イーサリアム ノード ログ ストリームで送信されたトランザクションを確認できますが、ネットワークにブロードキャストされているようには見えません (rinkeby.io ブロック エクスプローラーでは確認できません)。毎回ナンスを手動で設定していますが、以前のナンスが使用されていてブロードキャストされなかった場合、スタックする可能性があることを読みましたか? 答えの一部として、ナンスの目的/使用法を説明できれば幸いです。
import web3, json, requests
from web3 import Web3, HTTPProvider
provider = HTTPProvider( 'http://localhost:8545' )
web3 = Web3(provider)
web3.eth.enable_unaudited_features()
with open('/Users/.../Library/Ethereum/rinkeby/keystore/UTC...') as keyfile:
encrypted_key = keyfile.read()
private_key = web3.eth.account.decrypt(encrypted_key, 'password')
nonce = web3.eth.getTransactionCount('<public_address_of_sending_account>')
tx = {'value': 1000000000000000000, 'to': '0xBa4DE7E3Fd62995ee0e1929Efaf7a19b73df028f', 'nonce': nonce, 'chainId': 4, 'gasLimit': 6994000, 'gasPrice': 1000000000 }
tx['gas'] = web3.eth.estimateGas(tx)
signed = web3.eth.account.signTransaction(tx, private_key)
web3.eth.sendRawTransaction(signed.rawTransaction)