我目前正在编写一些程序来监控 bsc 节点的内存池。由于我的 BSC 节点是按请求计数收费的,因此我正在尝试探索节省时间和成本的最佳方法。这是我找到的一些计划:
- 使用 mempool exploer 的服务。https://www.blocknative.com/。这显然不是最好的计划,因为我已经在 quicknode 服务上支付了 99 美元,而且我发现一些交易仍然不在它提供的列表中。
- 用户 web3py 挂起过滤器:
new_transaction_filter = w3.eth.filter('pending') new_transaction_filter.get_new_entries()
并w3.eth.get_transaction(entry)
为每个条目。这也不是有效的,因为它非常浪费时间并且花费了大量的 web3 请求。 - 使用
pending_block = w3.eth.get_block(block_identifier='pending', full_transactions=True)
该调用仅返回具有已开采块号的交易,而显然不是“待处理”的交易。 - 使用
w3.geth.txpool.content()
. 这可以一次打印出所有待处理的交易,但是当您继续调用它时,会出现重复的记录。
谁能给我一个提示,这是获取内存池的正确方法吗?谢谢你。