web3py transaction 数据解析

使用 web3py 代码得到的是一个字典结构的数据,但是大部分的数据都是 HexBytes,非常头疼这些数据的具体内容,查阅了一些资料。

首先是代码:

from web3 import Web3

w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/f6c8f8c206d6431599b73ead57ab9737'))
print(w3.eth.get_transaction_receipt('0x0acf73a58fbb879ffc43150aef0fc31cbe94cab036ba29948923994852643e83'))

返回结果:

有一些内容可以直接看出是什么,但是也有很多 HexBytes 的不知道是什么,查到很多资料之后才知道这些是经过编码的。编码规律是有资料的,ABI 接口中。

比如 topics 中一个很常见的:

topics[0]

0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

 

这是  Transfer 就是转账的函数

Transfer(address,address,uint256)

topics[1]是从哪个账户转出; topics[2] 是转入哪个账户;data 是转账的数值。

etherscan 可以解析出所有的信息,格式化的很好。

例如:

https://etherscan.io/tx/0x0acf73a58fbb879ffc43150aef0fc31cbe94cab036ba29948923994852643e83

发表评论

邮箱地址不会被公开。 必填项已用*标注