Événements d'exécution à faible latence Aujourd'hui, nous documentons le système des Événements d'exécution dans Monad, qui permet aux développeurs de créer des applications haute performance recevant des données d'événements à latence minimale d'un nœud Monad via une file d'attente en mémoire partagée. Pour consommer ces données en temps réel, vous écrivez un logiciel en C, C++ ou Rust en utilisant un SDK fourni, et l'exécutez sur un hôte exécutant un nœud complet Monad. Voici une brève comparaison avec d'autres systèmes similaires : - Geth Live Tracing - API basée sur des "hooks" : votre code est chargé dans le nœud Geth en tant que plugin et est exécuté de manière synchrone (via des callbacks) pendant l'exécution. - Reth ExEx - API basée sur des fonctions asynchrones : votre code est chargé dans un nœud Reth ; l'exécution voit les événements après coup plutôt que de manière synchrone. - Solana Geyser - API basée sur des "hooks", un plugin qui s'exécute à l'intérieur d'un validateur Solana et invoque des callbacks pendant l'exécution. Ces trois systèmes sont différents de l'approche des Événements d'exécution. Dans les Événements d'exécution : - Vous voyez les événements "au fur et à mesure qu'ils se produisent", comme dans le Geth Live Tracer et le Solana Geyser. Contrairement à ces approches, votre code ne s'exécute pas en tant que plugin à l'intérieur du moteur d'exécution, mais en parallèle (environ une microseconde plus tard) dans un processus séparé. - Comme le Geth Live Tracer (mais contrairement à l'ExEx de Reth), vous voyez chaque "élément" de la transaction - chaque journal, chaque changement de solde, etc. - comme un événement séparé. - Contrairement au Geth Live Tracer ou au Geyser, vous n'installez pas de "hooks" et ne recevez pas de callbacks ; au lieu de cela, vous interrogez en continu de nouveaux enregistrements d'événements, en itérant à travers tous les nouveaux événements qui vous sont retournés (et en ignorant les événements qui ne vous intéressent pas). - Parce que le système est basé sur des tampons circulaires en mémoire partagée, vous pouvez perdre des données si votre consommateur est trop lent -- vous devez suivre le rythme !