首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >etherjs TransactionReceipt有events对象吗?

etherjs TransactionReceipt有events对象吗?
EN

Stack Overflow用户
提问于 2022-08-04 03:52:14
回答 1查看 276关注 0票数 1

在教程和堆栈溢出回答中,常见的情况是看到读取发出的事件数据的代码如下所示:

代码语言:javascript
复制
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()

两个问题:

  1. 事件对象是如何添加到TransactionReceipt中的?以太医学博士 on TransactionReceipt不包括events对象。它只包含一个logs属性。
  2. events[0].topicsevents[0].args有什么区别?

对问题1的更新

还在研究中,但醚的源代码显示如下:接口事件扩展日志(参考)和接口TransactionReceipt有一个日志(参考)事件数组,因此它实现了与Log相同的接口,但在TxReceipt上仍然没有称为events的属性。

所以以太的文档和来源是一致的。

下一个问题是如何将名为events的属性添加到TransactionReceipt接口中。

EN

回答 1

Stack Overflow用户

发布于 2022-10-21 10:43:52

正如这里所讨论的那样,醚类文档具有误导性。

events属性仅在ContractReceipt上可用(请参阅文档),因为普通收据没有访问ABI的权限。

因此,不要期望在本例中是TransactionResponseTransactionReceipt,而是使用ContractTransactionContractReceipt接口。

比如:

代码语言:javascript
复制
const txResponse : ContractTransaction = await contract.method();
const txReceipt : ContractReceipt = await txResponse.wait();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73230175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档