Transactions 如何按地址获取以太坊事务列表

Transactions 如何按地址获取以太坊事务列表,transactions,ethereum,Transactions,Ethereum,我正在寻找一种方法来获取给定地址的事务列表。如果有太多的交易,我希望能够页面的结果。 如果我可以将最新处理的事务作为参数,这样我就可以从给定的点获取最新的事务,这会更好 大概是这样的: var page = 1; txList = getTransactionList("0x323432432...", page, lastProcessedTx); 从我目前的研究来看,没有办法获得地址的事务列表。您应该检查区块链中的所有事务以获得给定地址,或者将地址与数据库中的事务哈希关联。查看确认缺少所需

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

大概是这样的:

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

从我目前的研究来看,没有办法获得地址的事务列表。您应该检查区块链中的所有事务以获得给定地址,或者将地址与数据库中的事务哈希关联。查看确认缺少所需API的此线程:

另一种方法是使用Etherscan API:
但是它依赖于第三方服务器。

幸运的是,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) {
    ...
});

然后,您需要“创建”、“调用”、“调用代码”和“DELEGATECALL”操作码并跟踪堆栈。

已知以太坊节点缺乏获取ETH地址(帐户)事务列表的功能

为了解决这个问题,有一个免费的开源第三方解决方案-以太坊交易索引器:

索引器允许通过以太坊地址浏览交易,并像以太扫描一样,只需移动一下就可以获得任何用户钱包的历史记录。索引器是用Python编写的。它在后台作为服务工作:

  • 连接到以太坊节点(与geth或奇偶校验配合良好,其他未经测试)
  • 在Postgres数据库中存储所有事务(包括智能合约事务)
  • 为API提供按地址获取事务的数据
Indexer连接到以太坊节点并使用JSON RPC获取事务,在Postgres数据库中创建事务索引。第一个索引器将存储从您指定的块开始的事务。之后,它将每20秒检查一次新块,并更新索引。你可以改变间隔时间

Ethereum事务索引器的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"


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

您可以使用etherscan.io API:

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