【问题标题】:How do I decode the hex from a specific part of a BSC transaction receipt, using web3 py?如何使用 web3 py 从 BSC 交易收据的特定部分解码十六进制?
【发布时间】:2022-06-21 05:58:44
【问题描述】:

我正在使用 web3 包编写 python 脚本。

流程说明:

  1. 我有一笔交易,我阅读了交易收据

    txn_receipt = w3.eth.getTransactionReceipt('0x8ddd5ab8f53df7365a2feb8ee249ca2d317edcdcb6f40faae728a3cb946b4eb1')

  2. 对于这个例子,我阅读了日志的特定部分。这将返回一个十六进制。

    x = txn_receipt['logs'][4]['data']

问题: 我如何解码这个十六进制?如果你去 BSC SCAN,你会在块 453 看到我期望的解码值。

预期值:

amount0In :
2369737542851785768252
amount1In :
0
amount0Out :
0
amount1Out :
82650726831815053455

请看这里: https://bscscan.com/tx/0x8ddd5ab8f53df7365a2feb8ee249ca2d317edcdcb6f40faae728a3cb946b4eb1#eventlog

【问题讨论】:

  • 您找到解决问题的方法了吗?我也有同样的问题。

标签: python transactions hex decode web3py


【解决方案1】:

假设您不需要键名,您可以使用基本的 python 来做到这一点(不需要 web3 库)。

BSC 日志中的数据字段是一串十六进制编码值,它只是十进制值的 base 16 表示。在您的示例中:

0x00000000000000000000000000000000000000000000008076b6fbd0ebb5bd3c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047b025e26b62ed08f

只需修剪开头,将其拆分,然后使用 python 的int() 函数转换每个字符串:

hexdata = '0x00000000000000000000000000000000000000000000008076b6fbd0ebb5bd3c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047b025e26b62ed08f'

# Trim '0x' from beginning of string
hexdataTrimed = hexdata[2:]

# Split trimmed string every 64 characters
n = 64
dataSplit = [hexdataTrimed[i:i+n] for i in range(0, len(hexdataTrimed), n)]

# Fill new list with converted decimal values
data = []
for val in range(len(dataSplit)):
    toDec = int(dataSplit[val], 16)
    data.append(toDec)

print(data) 
# returns [2369737542851785768252, 0, 0, 82650726831815053455]

来源:

https://www.binaryhexconverter.com/hex-to-decimal-converter https://www.w3schools.com/python/ref_func_int.asp

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 2022-01-05
    • 2022-01-15
    • 2021-05-29
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    相关资源
    最近更新 更多