Körningshändelser med låg latens Idag dokumenterar vi systemet Execution Events i Monad, som gör det möjligt för utvecklare att bygga högpresterande applikationer som tar emot händelsedata med lägst latens från en Monad-nod via en delad minneskö. För att konsumera dessa realtidsdata skriver du programvara i C, C++ eller Rust med hjälp av en tillhandahållen SDK och kör den på en värd som kör en fullständig Monad-nod. Här är en kort jämförelse med andra sådana system: - Geth Live Tracing - "hook"-baserat API: din kod laddas in i Geth-noden som ett plugin och körs synkront (via callbacks) under körningen - Reth ExEx - asynkront funktionsbaserat API: din kod laddas in i en Reth-nod; Körningen ser händelser i efterhand i stället för synkront - Solana Geyser - "hook"-baserat API, ett plugin som körs inuti en Solana-validerare och anropar återanrop under körning Alla dessa tre skiljer sig från metoden för körningshändelser. I utförande händelser: - Du ser händelser "som-de-händer", som i Geth Live Tracer och Solana Geyser. Till skillnad från dessa metoder körs din kod inte som ett plugin-program i körningsmotorn, utan parallellt (ungefär en mikrosekund senare) i en separat process - Precis som Geth Live Tracer (men till skillnad från Reths ExEx) ser du varje "del" av transaktionen - varje logg, varje saldoförändring etc. - som en separat händelse - Till skillnad från Geth Live Tracer eller Geyser installerar du inte "krokar" och får återuppringningar; I stället söker du kontinuerligt efter nya händelseposter och itererar igenom alla nya händelser som returneras till dig (och ignorerar händelser som du inte är intresserad av) - Eftersom systemet är baserat på delade minnesringbuffertar kan du förlora data om din konsument är för långsam - du måste hänga med!