es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Punto final de latencia de Websocket BSC.

Recientemente he estado tratando de monitorear transacciones de una dirección de contrato en la cadena BSC para mi límite de orden DEX y finalmente encontré una solución estable para monitorear el evento de registro: ‘usando conexión de web socket’.

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)

Sin embargo, intenté cambiar algunos proveedores de punto final de web socket de la siguiente lista, pero aún hay un gran retraso en el registro del evento de intercambio. Algunos de ellos ocurrieron hace casi una hora.

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

Moralis: https://moralis.io/speedy-nodes/

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

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

Cuando regreso a un proveedor HTTP como: Web3.HTTPProvider(‘https://bsc-dataseed.binance.org/’), el registro del evento está casi en tiempo, pero se encontrará una ‘excepción de filtro no encontrado durante el transcurso del tiempo’.

Aquí hay una nota escrita en la introducción del web socket de BSC: ‘Puede realizar solicitudes de eth_getLogs con un rango de bloque de hasta 5K. Si necesita extraer registros con frecuencia, recomendamos el uso de WebSockets para recibir nuevos registros cuando estén disponibles’.

¿Alguien puede ayudarme a encontrar una forma mejor de obtener un punto final de web socket oportuno?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto informático especializado en python, endpoint y web3py, hay algunas sugerencias que se pueden realizar para abordar el problema de demoras en el monitoreo de transacciones de una dirección de contrato en la cadena BSC:

    1. Verificar la conexión y velocidad de la red: Una conexión a internet lenta o congestión de red puede ocasionar demoras en la recepción de eventos de registro. Asegúrese de que la conexión de red sea estable y lo suficientemente rápida para manejar el tráfico.

    2. Intente utilizar un proveedor de punto final WebSocket diferente: Hay varios proveedores de punto final WebSocket disponibles y algunos pueden ofrecer un mejor rendimiento que otros. Experimente con diferentes proveedores para ver cuál funciona mejor para sus necesidades. Algunos proveedores populares incluyen Infura, QuickNode y Alchemy.

    3. Utilice una biblioteca de cliente WebSocket: En lugar de configurar manualmente la conexión WebSocket, utilizar una biblioteca de cliente WebSocket como websockets o asyncio puede simplificar el proceso y mejorar el rendimiento.

    4. Aumente el rango de bloques: Como se menciona en la nota de introducción de WebSocket de BSC, se pueden realizar solicitudes de registro con un rango de bloques de hasta 5.000. Si no se reciben registros de manera oportuna, aumentar el rango de bloques puede ayudar.

    5. Optimice el código: Para mejorar el rendimiento del script de monitoreo, revise el código para asegurarse de que esté optimizado para la eficiencia. Esto puede incluir reducir operaciones innecesarias, utilizar técnicas de programación asíncrona y almacenar en caché datos accesados con frecuencia.

Comments are closed.