Ethereum etherscan api不输出挂起的事务

Ethereum etherscan api不输出挂起的事务,ethereum,web3,web3js,metamask,etherscan,Ethereum,Web3,Web3js,Metamask,Etherscan,我在这里使用etherscan api:()来获取用户的事务列表(给定公钥),并且我只获取已清除事务的列表,即使在etherscan.io上我也可以看到所有待处理的事务,因此信息“在那里”。深入到源代码中,我发现没有迹象表明我可以在何处查找未决事务。代码如下: const etherscan = require('etherscan-api').init(ETHERSCAN_TOKEN, 'ropsten', '3000'); etherscan.account .tx

我在这里使用etherscan api:()来获取用户的事务列表(给定公钥),并且我只获取已清除事务的列表,即使在etherscan.io上我也可以看到所有待处理的事务,因此信息“在那里”。深入到源代码中,我发现没有迹象表明我可以在何处查找未决事务。代码如下:

const etherscan = require('etherscan-api').init(ETHERSCAN_TOKEN, 'ropsten', '3000');

    etherscan.account
        .txlist(public_key, 1, 'latest', 1, 100, 'asc')
        .then(res => {
            console.log("tx_list: ", res.result)
        })


    // get num of transactions
    etherscan.proxy
        .eth_getTransactionCount(public_key, 'latest')
        .then(res => {
            let count = res.result
            console.log("eth_getTransactionCount: ", parseInt(count))
        })

Etherscan在其API中不提供挂起的事务

这可能是因为如何收集和显示待处理事务的性质。所有挂起的事务都收集在以太坊mempool中。我的猜测是Etherscan将mempool中的每个条目添加到某种快速搜索的数据库中,如ElasticSearch,并在事务从mempool中删除时删除DB条目。然后,“地址详细信息”页面在ES中执行简单的搜索,仅过滤从/到该特定地址的事务


如果您的web3提供商允许websocket连接和订阅,您可以访问
pendingTransactions
事件

每次向mempool添加新事务时,它都会触发一个事件。该事件仅包含事务哈希(而不包含其他数据,如发送方和接收方)

由于该事件仅包含tx散列,因此始终对tx详细信息执行新的查询不是很有效,但在其他一些情况下,例如当您事先知道tx散列,并且您只想知道它何时成功广播时,它非常有用


还有BlockCypher REST API,它有一个有限的免费计划(和一些不太有限的付费计划),返回所有未决交易,包括发送详细信息,以便您可以对结果执行自己的搜索。看看他们是否适合您的用例