【问题标题】:How can I filter incoming transactions for a given address?如何过滤给定地址的传入交易?
【发布时间】:2022-01-06 00:47:17
【问题描述】:

使用 Infura 作为我的以太坊节点,我已经订阅了 Web 套接字中的 pendingTransactions 项目。对于发生的每笔交易,我都会收到一个交易 ID。为了确定它是否与我相关,我必须调用getTransaction() 方法

因此,我不得不调用该方法 100,000 次,这使我超出了 Infura 配额

公平地说,我什至不想要待处理的交易。我更喜欢已完成的交易,但 API 似乎没有提供该功能

我看到了这篇文章:https://medium.com/coinmonks/monitoring-an-ethereum-address-with-web3-js-970c0a3cf96d,这似乎支持以太坊不会让这件事变得简单的观点

谁能推荐一个更好的方法?

TIA, ekkis

【问题讨论】:

    标签: ethereum web3js


    【解决方案1】:

    您可以订阅您的节点提供商支持的任何 websocket 频道。但是,大多数提供商(包括 Infura)使用 go-ethereumopenethereum 客户端软件,默认情况下仅实现 web3js 文档中列出的四个通道:pendingTransactionsnewBlockHeaderssyncinglogs

    因此,为了仅订阅与指定地址之间的挖掘交易,您需要找到一个提供者,该提供者使用过滤器实现交易通道(不太可能)。或者运行您自己的节点并使用通道的自定义实现来扩展其代码(技术上可行,但范围不小)。

    解决方法:使用收集所有交易的外部服务,将它们存储在可搜索的数据库中,并允许其用户请求过滤数据。例如,Etherscan 有一个有限的免费endpoint 用于这种情况。

    【讨论】:

    • 谢谢。那是全面而权威的。 10 年后,以太坊仍然没有提供最基本的功能,而是不得不诉诸这种恶作剧,这真是一个可悲的状况。再次感谢,我会调查 Etherscan
    猜你喜欢
    • 1970-01-01
    • 2015-03-28
    • 2022-10-25
    • 2018-10-31
    • 2022-08-10
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2013-01-07
    相关资源
    最近更新 更多