Eventos de ejecución de baja latencia Hoy, estamos documentando el sistema de eventos de ejecución en Monad, que permite a los desarrolladores crear aplicaciones de alto rendimiento que reciben datos de eventos de menor latencia de un nodo Monad a través de una cola de memoria compartida. Para consumir estos datos en tiempo real, escriba software en C, C++ o Rust con un SDK proporcionado y ejecútelo en un host que ejecute un nodo completo de Monad. Aquí hay una breve comparación con otros sistemas similares: - Geth Live Tracing - API basada en "hook": tu código se carga en el nodo Geth como un complemento y se ejecuta de forma sincrónica (a través de devoluciones de llamada) durante la ejecución - Reth ExEx - API basada en funciones asíncronas: su código se carga en un nodo Reth; La ejecución ve los eventos después del hecho en lugar de sincrónicamente - Solana Geyser - API basada en "hook", un complemento que se ejecuta dentro de un validador de Solana e invoca devoluciones de llamada durante la ejecución Los tres son diferentes del enfoque de eventos de ejecución. En eventos de ejecución: - Estás viendo eventos "a medida que suceden", como en el Rastreador Vivo Geth y el Géiser Solana. A diferencia de estos enfoques, el código no se ejecuta como un complemento dentro del motor de ejecución, sino en paralelo (aproximadamente un microsegundo después) en un proceso separado - Al igual que el Geth Live Tracer (pero a diferencia del ExEx de Reth) ves cada "pieza" de la transacción - cada registro, cada cambio de saldo, etc. - como un evento separado - A diferencia del Geth Live Tracer o Geyser, no instala "ganchos" ni recibe devoluciones de llamada; en su lugar, sondea continuamente en busca de nuevos registros de eventos, iterando a través de los nuevos eventos que se le devuelven (e ignorando los eventos que no le interesan) - Debido a que el sistema se basa en búferes de anillo de memoria compartidos, puede perder datos si su consumidor es demasiado lento, ¡debe mantenerse al día!