正如标题所说,扫描比特币内存池进行交易的最佳方式是什么?
我们可能会想出一些方法:
方法 1:
乍一看似乎是正确的,但是,对于大多数应用程序来说,这并不是一个好方法。为什么?因为它不可扩展。如果您有 100 万个活跃用户,并且每个用户有 1 个地址怎么办? (别告诉我这不会发生,它确实发生在我身上,也许不是一百万,而是几千,而且这种方法对我来说不再有效,它太慢了,所以迫使我将我的应用程序切换到方法2号)
方法 2:
每隔几秒扫描内存池中的新交易,并在其中找到您的交易。 它运行良好、可扩展且速度快。 但这里有一个大问题。如果网络繁忙并且内存池中有 15 万笔交易怎么办? 好吧,这里我们可以使用缓存,并且不再每次都检查重复的事务。效果很好,差不多。为什么几乎?因为当网络繁忙时,每秒都会收到数百个新交易。你需要向比特币核心发送一个请求,让它们中的每一个都获取他们的数据并读取它们,看看它们是否是你的。比特币-RPC方法
getrawmempool
仅返回交易哈希而不返回数据。所以每秒发送数百个新的 HTTP 请求有点慢。
你知道如何改进吗?
或者也许是检查新交易地址的更好方法?!
探索区块链数据提供商(例如 Blockstream 的 Esplora 或其他类似解决方案)提供的服务。这些提供商提供 API 和 WebSocket 连接,旨在实现高效的区块链数据访问。