Поддержка конечной точки BSC websocket
Недавно я пытался отслеживать транзакции адреса контракта в цепочке BSC для моего лимитного ордера dex, и я, наконец, нашел стабильное решение для мониторинга события журнала - «с использованием соединения с веб-сокетом».
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?
2 ответа
Запустите свой собственный узел для минимизации задержки.
Если вы не можете этого сделать, откройте свой кошелек и просмотрите список поставщиков коммерческих узлов .
чтобы оптимизировать задержку, вам нужно запустить свой собственный узел, для которого нужен очень мощный выделенный сервер, или вы можете получить частный узел от fastlynode.