如何按地址获取以太坊交易列表



我正在寻找一种方法来获取给定地址的事务列表。如果有太多的交易,我希望能够分页结果。如果我能给出最新处理的事务作为参数,这样我就可以从给定的点获得最新的事务,那会更好。

类似这样的东西:

var page = 1;
txList = getTransactionList("0x323432432...", page, lastProcessedTx);

根据我的研究,到目前为止还没有办法获得地址的事务列表。你应该检查区块链中给定地址的所有交易,或者将地址与数据库中的交易哈希相关联。请参阅此线程,确认缺少所需的API:https://github.com/ethereum/go-ethereum/issues/1897

另一种选择是使用Etherscan API:https://etherscan.io/apis但这取决于第三方服务器。

您现在最好的选择可能是使用https://www.covalenthq.com/docs/api/

据我所知,它是免费使用的,没有价格限制。在您的例子中,API请求看起来如下:

curl -X GET "https://api.covalenthq.com/v1/1/address/0x5a6d3b6bf795a3160dc7c139dee9f60ce0f00cae/transactions_v2/?&key=[YOUR_API_KEY]" 
 -H "Accept: application/json"

https://www.covalenthq.com/docs/api/#get-/v1/{chain_id}/地址/{address}/transfers_v2/

已知以太坊节点缺乏获取ETH地址(账户)交易列表的功能。

为了解决这个问题,有一个免费开源的第三方解决方案——以太坊交易索引器:https://github.com/Adamant-im/ETH-transactions-storage

Indexer可以像Etherscan一样,通过以太坊地址探索交易,并在一次移动中获取任何用户|钱包的历史记录。Indexer是用Python编写的。它作为后台服务:

  • 连接到以太坊节点(与geth或奇偶校验配合良好,其他未测试)
  • 将所有事务存储在Postgres数据库中(包括智能合约事务)
  • 为API提供数据,以便按地址获取事务

Indexer连接到以太坊节点,并使用JSON RPC获取事务,在Postgres数据库中创建事务索引。第一个索引器将存储从您指示的块开始的事务。之后,它将每隔20秒检查一次新的块,并更新索引。您可以更改间隔。

以太坊交易索引器的API由Postgrest工具发布。如果您需要提供公共的API,请使用任何Web服务器,如nginx,并在配置中设置Postgrest端口的代理。

创建索引后,您可以使用之类的请求

curl -k -X GET "http://localhost:3000/?and=(contract_to.eq.,or(txfrom.eq.0x6b924750e56a674a2ad01fbf09c7c9012f16f094,txto.eq.0x6b924750e56a674a2ad01fbf09c7c9012f16f094))&order=time.desc&limit=25"

https://yourserver.com/ethtxs?and=(contract_to.eq.,or(txfrom.eq.0x6b924750e56a674a2ad01fbf09c7c9012f16f094,txto.eq.0x6b924750e56a674a2ad01fbf09c7c9012f16f094))&order=time.desc&limit=25

该请求将显示以太坊地址0x6b924750e56a674a2ad01fbf09c7c9012f16f094的最后25笔交易,按时间戳排序。

幸运的是,Geth EVM有了新的工具来完成这项工作。可以将debug_traceTransaction与RPC API一起使用。

在NodeJS中:

var web3 = require('web3').web3;
web3.currentProvider.sendAsync({
    method: "debug_traceTransaction",
    params: ['0x3fac854179691e377fc1aa180b71a4033b6bb3bde2a7ef00bc8e78f849ad356e', {}],
    jsonrpc: "2.0",
    id: "2"
}, function (err, result) {
    ...
});

然后,您需要"REATE"、"CALL"、"CALLCODE"one_answers"DELEGATECALL"操作码并跟踪堆栈。

最新更新