w3.eth.getTransactionReceipt(tx_hash)
函数返回None
。
我的代码:
provider = HTTPProvider('http://0.0.0.0:9945')
w3 = Web3(provider)
contract = w3.eth.contract(contract_interface['abi'], bytecode=contract_interface['bin'])
tx_hash = contract.deploy(transaction={'from': w3.eth.coinbase, 'gas': 250000})
print (tx_hash)
time.sleep(1)
tx_receipt = w3.eth.getTransactionReceipt(tx_hash)
print (tx_receipt)
contract_address = tx_receipt['contractAddress']
tx_hash
是正常值,但tx_receipt
是None
。
所以我的错误:
contract_address = tx_receipt['contractAddress']
TypeError: 'NoneType' object is not subscriptable
我该如何解决这个问题?
答案 0 :(得分:0)
我猜这是因为你使用了变量名w3
,所以你使用的是web3.py。 getTransactionReceipt docs说:
如果尚未挖掘交易,则返回
None
所以sleep(1)
不足以等待下一个块被挖掘。
解决问题取决于您要连接的客户端类型及其设置。例如,如果它类似geth
,则可能需要打开--mine
以开始挖掘块。一旦您可以共享您的客户端和配置,您可能很幸运能够在Ethereum StackExchange site找到为特定客户生成块的答案。