【发布时间】:2022-01-20 23:42:00
【问题描述】:
目前,我正在尝试使用 web3.py 从以太坊解码和提取一些交易日志。这是我的代码:
def exarctevent(List, w3, target=None):
# for tran in List:
infos=w3.eth.get_transaction_receipt(List)
abr=[]
log=infos["logs"]
for case in log:
smart_contract=case["address"]
abi_endpoint = f"https://api.etherscan.io/api?module=contract&action=getabi&address={smart_contract}&apikey={mykey}"
abi = json.loads(requests.get(abi_endpoint).text)
contract=w3.eth.contract(smart_contract, abi=abi["result"])
the_event=[print(adi) for adi in contract.abi if adi['type']=='event']
但今天当我测试我的代码时,我发现我从交易中解码的事件远远超过它们在以太坊上显示的内容。 这是我的解码结果。 交易hx:0x7121a17975f447900eb1e5f664eed712c6129c160f0abaad70bc564cb5a3dd0e
这就是它在以太坊上展示的内容,那里只放了一个事件。 为什么?不是所有发出的事件都会记录为日志吗?为什么有这么多事件没有显示?
我想问的另一件事是索引参数可以做什么。从图2可以看到有两个indexed_topic,它们是干什么用的?我需要为索引参数输入数据吗?上面的地址是什么意思?
如果有人能回答这个问题,真的很感激。
【问题讨论】: