我们正在开发 cpp-ethereum/aleth 的以太坊分支,我想知道如果 websocket 不可用,如何监听合约事件? 在 web3 中有 web3.eth.subscribe 但如果没有 websocket 它不起作用,因为只有 HTTP 提供程序可用。
如果没有它,我们该如何监听合约事件?使用 'pending' 调用 eth_getlogs 那么当事件发生时我们如何被触发?
答案 0 :(得分:1)
这是 HTTP 和 WSS 连接之间的主要区别之一。
因此,如果您需要使用 HTTP 连接,则需要轮询 eth_getlogs
的结果。轮询不断要求更新,例如每一秒。请注意,如果间隔很短,您很可能会遇到提供商的速率限制。
日志是作为挖矿的结果发布的,因此它们在内存池中尚不可用(即 pending
选项)。您需要查询每个 latest
块(或其编号)。