2

我最近试图为我的 dex 限价订单监控 BSC 链上合约地址的交易,我终于找到了一个稳定的解决方案来监控日志事件——“使用 web sockect 连接”。

bsc = "wss://ws-nd-112-055-480.p2pify.com/xxxxxxxxxxxxxxxxxxx"
web3 = Web3(Web3.WebsocketProvider(bsc))
poolAdd = '0x0eD7e52944161450477ee417DE9Cd3a859b14fD0'
block_filter = web3.eth.filter({'fromBlock': 'latest', 'address': poolAdd, 'topics': [sha128Dic['swap']]})
while 1:
    log_new(block_filter)
    time.sleep(1)

但是,我尝试在下面的列表中更改一些 websokect 端点提供程序,交换事件日志仍有一些巨大的时间延迟。其中一些发生在近一个小时前。

wss://bsc-ws-node.nariox.org:443

莫拉利斯:https ://moralis.io/speedy-nodes/

ANKR:https ://app.ankr.com/api

链栈: https ://chainstack.com/build-better-with-binance-smart-chain/

当我切换回 http 提供程序时,例如:Web3.HTTPProvider('https://bsc-dataseed.binance.org/')。事件日志几乎是及时的,但一些“过滤器未找到异常将在时间流逝期间发现”。

这是写在 BSC websocket 介绍上的注释:'您可以发出 eth_getLogs 请求,最大块范围为 5K。如果您需要频繁拉取日志,我们建议您使用 WebSockets 在可用时将新日志推送给您。

任何人都可以帮助找到更好的方法来获得及时的 websocket 端点吗?

4

2 回答 2

1

运行您自己的节点以最小化延迟。

如果您做不到,请打开您的钱包并浏览商业节点提供商列表

于 2021-12-06T11:17:15.453 回答
-1

为了优化延迟,您需要运行自己的节点,这需要非常强大的专用服务器,或者您可以从fastlynode获取私有节点

于 2022-01-12T17:38:49.090 回答