如何使用web3.py来分析事件数据



我有一些下面的事件数据字符串是从块过滤器方法中获得的。如何将其转换为原始数据?

from web3 import Web3
#event1 string
a = '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000000'
#event2 uint16
b = '0x0000000000000000000000000000000000000000000000000000000000000005'
#event3 string uint16
c = '0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000016200000000000000000000000000000000000000000000000000000000000000'
#event4 string string
d = '0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016200000000000000000000000000000000000000000000000000000000000000'
#event5 uint16 uint16
e = '0x00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005'
print('event1 data:', Web3.toText(a[130:]))
print('event2 data:', Web3.toInt(hexstr=b))
print('event3 data: num = {}; str = '{}''.format(Web3.toInt(hexstr=c[66:130]), Web3.toText(c[194:])))
print('event3 data: str_1 = '{}'; str_2 = '{}''.format(Web3.toText(d[194:258]), Web3.toText(d[322:])))
print('event5 data: num_1 = {}; num_2 = {}'.format(Web3.toInt(hexstr = e[2:66]),Web3.toInt(hexstr = e[66:])))
>>> event1 data: a
>>> event2 data: 5
>>> event3 data: num = 5; str = 'b'      
>>> event3 data: str_1 = 'b'; str_2 = 'b'
>>> event5 data: num_1 = 5; num_2 = 5 

最新更新