最近,我试图为我的dex限制订单监视BSC链上一个合同地址的事务,最后我找到了一个稳定的解决方案来监视日志事件--“使用web套接点连接”。
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/
Chainstack:https://chainstack.com/build-better-with-binance-smart-chain/
当我切换回http提供者时,比如: Web3.HTTPProvider('https://bsc-dataseed.binance.org/')。事件日志几乎是及时的,但在时间流逝期间会发现一些“筛选器未找到异常”。
以下是BSC websocket简介中的注释:“您可以在最多5K块范围内发出eth_getLogs请求。如果您需要频繁地拉动日志,我们建议您在可用时使用WebSockets将新日志推送给您。”
有人能帮忙找到一个更好的方法来获得一个及时的websocket端点吗?
发布于 2022-01-12 17:38:49
要优化延迟,您需要运行自己的节点,这需要一个非常强大的专用服务器,或者您可以从快速节点获得一个私有节点。
发布于 2021-12-06 11:17:15
用于最小化延迟的运行您自己的节点。
如果你不能这样做,打开你的钱包和浏览商业节点提供程序列表。
https://stackoverflow.com/questions/70242780
复制相似问题