Python

如何通過 Python web3.py、w3.eth.sendRawTransaction 從合約函式呼叫中解碼 txn_hash

  • March 22, 2022

嗨,我正在執行 Python web3.py(不是 web3.js)來執行它:

txn = ctrtInstance.functions.setzString(zString).buildTransaction()
print('\ntxn: '+ str(txn))
txn['nonce'] = 3643
txn['chainId'] = 3
print('\ntxn: '+ str(txn))

#So的TXN看起來這樣:{‘值’:0,1’氣體’:33504,‘gasPrice’:十億,‘chainId’:3’到’:‘0x5227D720d8eFDcB259c6c79C74f3Cfe04DC4D4fa’,‘數據’:‘0xb32e420700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000007476f204d616e2100000000000000000000000000000000000000000000000000’,‘隨機數’:3643}

signed = w3.eth.account.signTransaction(txn, privateKey)
txn_hash = w3.eth.sendRawTransaction(signed.rawTransaction)

然後txn_hash看起來很奇怪:b"\x83\xd4\t’\x9e\xec\xb7\xc0\xf5\xdd\xf9\xb9\x0fD\xdc\x81\xfb\x8d\x0e\xf7\xb5\xbc2e~ \x81R\x8c]Ek|"

它是什麼?如何解碼此交易雜湊?

為什麼它看起來與我在網上看到的其他交易雜湊不同?

我怎樣才能對其進行解碼,以便將其輸入 EtherScan 以檢查此類交易?謝謝

參考:http ://web3py.readthedocs.io/en/latest/web3.eth.html#web3.eth.Eth.sendRawTransaction

使用hex().

txnHash = w3.eth.sendRawTransaction(signed.rawTransaction)
print('txnHash: '+ str(txnHash))

txnHashHex = txnHash.hex()
print('txnHash.hex(): '+ txnHashHex)

終端輸出:

txnHash: b'\x8f\xd8\x89\xfdt\x1f\xeb4\x88\x15\xeb\xb2-\xd8D\xf6\xdb%~\xdb\x0c\xf1\xa9n\x17R\x19\xf6#\xe6\x81\xf5'
binascii.hexlify(txnHash)= b'8fd889fd741feb348815ebb22dd844f6db257edb0cf1a96e175219f623e681f5'
txnHash.hex(): 0x8fd889fd741feb348815ebb22dd844f6db257edb0cf1a96e175219f623e681f5

然後,您可以txnHash.hex()前往 EtherScan 查找此交易狀態 :)

引用自:https://ethereum.stackexchange.com/questions/49019