【问题标题】:Different ways of getting Ethereum txpool pending transactions at Infura node via Web3.py通过 Web3.py 在 Infura 节点获取以太坊 txpool 待处理交易的不同方法
【发布时间】:2019-12-03 17:27:17
【问题描述】:

我想通过 Web3.py 查看以太坊 txpool 中的实时待处理交易。我不运行本地节点,而是使用 Infura。

根据 Web3.py 的文档,显然有三个不同的选项:

  1. 使用TX Pool API
  2. 使用web3.eth.getBlock('pending')
  3. 使用web3.eth.filter('pending')

选项 1 不可行,因为 API 似乎不支持 Infura 节点。因此,我尝试了选项 2 和 3,它们给了我两组不同的待处理交易。有谁知道为什么会这样?这两种方法是否检索不同的待处理事务?谢谢!

选项2

pending_block= w3.eth.getBlock(block_identifier='pending', full_transactions=True)
pending_transactions= pending_block.['transactions']

选项3

pending_transactions_filter= w3.eth.filter('pending')
pending_transactions= pending_transactions_filter.get_new_entries()

【问题讨论】:

  • 没错,你每次设置监听器时都会看到不同的待处理交易,因为它只显示你开始收听后添加的交易。它不会返回池中的所有 tx(不幸的是)
  • 自从创建此帖子以来已经安静了一段时间,但是当我尝试选项 3 时,这里有人能够回答我的问题 (stackoverflow.com/questions/70234159/…) 发生的值错误吗?

标签: python ethereum web3


【解决方案1】:

从根本上说,这些是不同的交易集,因为选项 2 似乎只是在待处理的块上过滤,但选项 3 包括更多的待处理交易,这些交易甚至不在待处理的块中。这对我来说很明显,因为选项 2 允许您获取完整的 tx 内容/信息,但选项 3 只给我 txhash ID,其中许多无法查找。

【讨论】:

  • 第一个问题(txpool)呢?
猜你喜欢
  • 2022-07-19
  • 2018-09-19
  • 2021-10-02
  • 2018-11-04
  • 2022-10-06
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 2021-10-14
相关资源
最近更新 更多