Ereignisse mit niedriger Latenz Heute dokumentieren wir das System der Ausführungsereignisse in Monad, das Entwicklern ermöglicht, leistungsstarke Anwendungen zu erstellen, die die latenzärmsten Ereignisdaten von einem Monad-Knoten über eine gemeinsame Speicherwarteschlange empfangen. Um diese Echtzeitdaten zu konsumieren, schreiben Sie Software in C, C++ oder Rust unter Verwendung eines bereitgestellten SDK und führen sie auf einem Host aus, der einen vollständigen Monad-Knoten betreibt. Hier ist ein kurzer Vergleich zu anderen solchen Systemen: - Geth Live Tracing - "Hook"-basiertes API: Ihr Code wird als Plugin in den Geth-Knoten geladen und synchron (über Rückrufe) während der Ausführung ausgeführt. - Reth ExEx - asynchrones Funktions-basiertes API: Ihr Code wird in einen Reth-Knoten geladen; die Ausführung sieht Ereignisse nach der Tatsache und nicht synchron. - Solana Geyser - "Hook"-basiertes API, ein Plugin, das innerhalb eines Solana-Validators läuft und Rückrufe während der Ausführung aufruft. Alle drei unterscheiden sich von dem Ansatz der Ausführungsereignisse. Bei den Ausführungsereignissen: - Sie sehen Ereignisse "wie sie passieren", wie im Geth Live Tracer und Solana Geyser. Im Gegensatz zu diesen Ansätzen läuft Ihr Code nicht als Plugin innerhalb der Ausführungsmaschine, sondern parallel (etwa eine Mikrosekunde später) in einem separaten Prozess. - Wie beim Geth Live Tracer (aber im Gegensatz zu Reths ExEx) sehen Sie jedes "Stück" der Transaktion - jedes Protokoll, jede Kontostandsänderung usw. - als separates Ereignis. - Im Gegensatz zum Geth Live Tracer oder Geyser installieren Sie keine "Hooks" und erhalten keine Rückrufe; stattdessen fragen Sie kontinuierlich nach neuen Ereignisdatensätzen und iterieren durch alle neuen Ereignisse, die Ihnen zurückgegeben werden (und ignorieren Ereignisse, an denen Sie nicht interessiert sind). - Da das System auf gemeinsamen Speicher-Ringpuffern basiert, können Sie Daten verlieren, wenn Ihr Verbraucher zu langsam ist - Sie müssen mithalten!