gpt4 book ai didi

javascript - etherscan-api 不输出挂起的交易

转载 作者:行者123 更新时间:2023-12-05 02:01:02 34 4
gpt4 key购买 nike

我在这里使用 etherscan-api:( https://sebs.github.io/etherscan-api/#txlist ) 来获取用户的交易列表(给定公钥),我只获取已清除交易的列表,即使在 etherscan.io 上我也可以看到所有未决 交易,因此信息“在那里”。深入源头https://github.com/sebs/etherscan-api/blob/master/lib/account.js#L122 ,我找不到任何迹象表明我可以在哪里寻找未决交易。代码如下:

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 中提供待定交易。

这可能是因为待处理交易的收集和显示方式的性质。所有未决交易都收集在以太坊内存池中。我的猜测是 Etherscan 将 mempool 中的每个条目添加到某种可快速搜索的数据库(例如 ElasticSearch),并在交易从 mempool 中删除时删除 DB 条目。地址详细信息页面然后在 ES 中执行简单搜索,仅过滤来自/到该特定地址的交易。


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

每当有新交易添加到内存池时,它都会触发一个事件。该事件仅包含交易哈希(不包含发送方和接收方等其他数据)。

因为事件只包含 tx 哈希,所以总是对 tx 详细信息执行新查询不是很有效,但它在其他一些情况下很有用,例如当你事先知道 tx 哈希并且你只想知道什么时候已经播出成功。


还有 BlockCypher REST API,它有一个有限的免费计划(和有限的付费计划),它返回所有待处理的交易,包括 tx 详细信息,以便您可以对结果执行自己的搜索。查看他们的 docs如果这适合您的用例。

关于javascript - etherscan-api 不输出挂起的交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66848400/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com