Evenimente de execuție cu latență scăzută Astăzi, documentăm sistemul de evenimente de execuție din Monad, care permite dezvoltatorilor să construiască aplicații de înaltă performanță care primesc date despre evenimente cu cea mai mică latență de la un nod Monad prin coadă de memorie partajată. Pentru a consuma aceste date în timp real, scrieți software în C, C++ sau Rust folosind un SDK furnizat și rulați-l pe o gazdă care rulează un nod complet Monad. Iată o scurtă comparație cu alte astfel de sisteme: - Geth Live Tracing - API bazat pe "cârlig": codul tău este încărcat în nodul Geth ca un plugin și este rulat sincron (prin apeluri inverse) în timpul execuției - Reth ExEx - API bazat pe funcții asincrone: codul tău este încărcat într-un nod Reth; execuția vede evenimentele după fapt, mai degrabă decât sincron - Solana Geyser - API bazat pe "cârlig", un plugin care rulează într-un validator Solana și invocă apeluri inverse în timpul execuției Toate acestea sunt diferite de abordarea evenimentelor de execuție. În evenimente de execuție: - Vedeți evenimentele "așa cum se întâmplă", ca în Geth Live Tracer și Solana Geyser. Spre deosebire de aceste abordări, codul tău nu rulează ca un plugin în interiorul motorului de execuție, ci în paralel (aproximativ o microsecundă mai târziu) într-un proces separat - La fel ca Geth Live Tracer (dar spre deosebire de ExEx-ul lui Reth) vezi fiecare "bucată" a tranzacției - fiecare jurnal, fiecare schimbare de sold etc. - ca un eveniment separat - Spre deosebire de Geth Live Tracer sau Geyser, nu instalați "cârlige" și nu primiți apeluri inverse; în schimb, interogați continuu pentru noi înregistrări de evenimente, repetând prin orice evenimente noi care vă sunt returnate (și ignorând evenimentele care nu vă interesează) - Deoarece sistemul se bazează pe buffer-uri de inel de memorie partajată, puteți pierde date dacă consumatorul este prea lent - trebuie să țineți pasul!