45 可以通过哪些方式, 获取钱包的最新pending状态交易

试错:

  1. 通过bsc区块浏览器提供的开发者api,获取账户的交易列表; 但是无法获取pending状态的交易
  2. 爬虫 bsc浏览器 钱包主页 列表数据, 但是请求量过快时,很容易被禁止;

调研:

  1. 能否通过rpc-json来过滤某个钱包的pending交易hash
  2. 能否直接写一个合约,合约的逻辑是用来获取某个钱包的所有交易,是否能获取到pending状态的交易, web端在通过定时的调取合约的方法拿到对应的数据

有使用过rpc-json来进行实现, 但是一直无法成功,使用的是如下两个api

eth_newPendingTransactionFilter

eth_getFilterChanges

请先 登录 后评论

最佳答案 2021-10-05 11:43

使用合约获取 pending 交易是不可行的, 可以尝试使用一下几个方法:

  1. eth_newPendingTransactionFiltereth_getFilterChanges 组合使用。
  2. 使用 websocket 连接 (ws) 订阅 pendingTransactions:
subscription = web3.eth.subscribe('pendingTransactions', function (error, result) {})
    .on("data", function (transactionHash) {
        web3.eth.getTransaction(transactionHash)
        .then(function (transaction) {
            createNode(transaction.from, transaction.to);
        });
    })
  1. 如果是自己搭的geth 节点,或者支持 txpool api 的节点,可以发起rpc 请求 txpool_content 来获取交易池的内容
  2. 有一些节点服务提供商有专门接口获得 pending 交易, chainstack 好像提供有 GraphQL 来获取 pending 交易, 可以查查看。
请先 登录 后评论

其它 0 个回答

  • 2 关注
  • 1 收藏,5488 浏览
  • xuhao 提出于 2021-10-04 17:06