在教程和堆栈溢出回答中,常见的情况是看到读取发出的事件数据的代码如下所示:
let someTx = await contractRef.someFunc();
let txReceipt = await someTx.wait(1);
let eventData = txReceipt.events[0].topics[0]
// or txReceipt.events[0].args.someData.toString()两个问题:
logs属性。events[0].topics和events[0].args有什么区别?对问题1的更新
还在研究中,但醚的源代码显示如下:接口事件扩展日志(参考)和接口TransactionReceipt有一个日志(参考)事件数组,因此它实现了与Log相同的接口,但在TxReceipt上仍然没有称为events的属性。
所以以太的文档和来源是一致的。
下一个问题是如何将名为events的属性添加到TransactionReceipt接口中。
发布于 2022-10-21 10:43:52
正如这里所讨论的那样,醚类文档具有误导性。
events属性仅在ContractReceipt上可用(请参阅文档),因为普通收据没有访问ABI的权限。
因此,不要期望在本例中是TransactionResponse和TransactionReceipt,而是使用ContractTransaction和ContractReceipt接口。
比如:
const txResponse : ContractTransaction = await contract.method();
const txReceipt : ContractReceipt = await txResponse.wait();https://stackoverflow.com/questions/73230175
复制相似问题