Web3 获取合约交易历史

Posted

技术标签:

【中文标题】Web3 获取合约交易历史【英文标题】:Web3 getting contract transactions history 【发布时间】:2021-12-28 20:22:46 【问题描述】:

我创建了简单的监视器来检查contract 及其最新的transactions。我知道我可以通过获取最新块来获取此信息,例如:

block = await this.web3.eth.getBlock("latest");

稍后检查receiver 是否与我正在监视的contract 相同。 但我想获取该合同的历史记录,例如过去 24 小时,看看transactions 在那里做了什么。是否有可能做到这一点,如果可以,我该如何实现?

【问题讨论】:

【参考方案1】:

您可以指定特定的区块编号而不是“最新”参数 - 在某个点提取最后一个区块的编号,然后将其迭代地减一,直到达到所需的历史深度。

但是,编写一个应用程序会更有效,该应用程序会在新块出现在网络上时以常驻模式读取它们并将它们写入某个数据库 - 在这种情况下,用户可以更快地获取信息并且任意深度。

同时,我们不能忘记跟踪可能的分叉以及相应交易的取消。

【讨论】:

因此您认为创建一个监视器之类的东西会更好,该监视器将计算所选合同的所有交易,将其保存到数据库并在页面上以表格或其他方式显示此信息。所以它每次都会添加这个值。第二件事,我怎么知道确切的事件是一个“订单”,所以当有人购买 NFT 收藏品时?我该如何检查它 1.是 2. 为此,您需要知道交易中传输的相应地址和/或操作码。这里一切都在很大程度上取决于 NFT 交易系统的组织方式以及它在区块链中的显示方式——可能有不同的选项和标准。 我可以与您取得联系,以便在那里询问更多问题吗?有任何不和谐或推特之类的吗? :) 只有电子邮件 :-( bloodjackal #mail.ru 我给你写了邮件:)

以上是关于Web3 获取合约交易历史的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Python 和 Web3.py 获取 ETH 智能合约的数量?

Web3 系列开发教程——创建你的第一个 NFTNFT 历史回溯

如何获取交易的所有事件(不是合约)?

如何获取以太坊合约和账户信息(使用geth和web3.py)

Web3 错误:Geth 无法与/调用合约函数进行交易

关于web3.js中与交易发送交易签名智能合约函数调用相关api的理解