getTransactionReceipt()返回None

时间:2017-11-22 14:26:01

标签: blockchain contract web3

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我猜这是因为你使用了变量名w3,所以你使用的是web3.pygetTransactionReceipt docs说:

  

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

所以sleep(1)不足以等待下一个块被挖掘。

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