0

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_receiptNone

所以我的错误:

contract_address = tx_receipt['contractAddress']
TypeError: 'NoneType' object is not subscriptable

我该如何解决这个问题?

4

1 回答 1

0

我猜是因为您使用了变量 name w3,所以您使用的是web3.pygetTransactionReceipt 文档说:

如果交易尚未被挖掘,则返回None

因此sleep(1),等待下一个区块被开采是不够的。

解决问题将取决于您连接的客户端类型及其设置。例如,如果它是类似的geth,您可能需要打开--mine才能开始挖掘块。一旦您可以共享您的客户端和配置,您可能会很幸运地在Ethereum StackExchange 站点上找到为特定客户端生成块的答案。

于 2017-11-22T15:00:47.243 回答