通过Web3.py在InFura节点获取Etherum txpool挂起事务的不同方式

2022-04-01 00:00:00 python ethereum web3

问题描述

我希望通过Web3.py查看Etherum 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()

解决方案

这些是根本不同的事务集,因为选项2似乎只筛选挂起块,但选项3甚至包括甚至不在挂起块中的更多挂起事务。这对我来说是显而易见的,因为选项2允许您获取完整的TX内容/信息,但选项3只给了我txhash ID,其中许多ID无法查找。

相关文章