Monad este o nouă platformă de contracte inteligente de nivel 1 care a strâns recent 225 de milioane de dolari în finanțare de la firma de capital de risc Paradigm.
Deși Monad nu s-a lansat încă, este de așteptat să fie live pe rețeaua de testare publică la sfârșitul anului 2024, implementarea rețelei principale fiind planificată pentru începutul lui 2025.
Monad este un proiect paralel Ethereum Virtual Machine (EVM) și, ca și proiecte similare precum Aurora (construit pe Near Protocol) sau Sei, încearcă să paralelizeze execuția instrucțiunilor EVM, astfel încât rețeaua să poată procesa mai multe tranzacții simultan. Acest lucru face posibilă gestionarea unui volum mai mare de tranzacții, crește debitul și reduce costurile.
Paralelizarea implică împărțirea execuției tranzacțiilor în sarcini mai mici, independente, care pot fi procesate simultan. Monad introduce patru optimizări pentru a-și îmbunătăți consensul, execuția și stocarea datelor: MonadBFT, execuție amânată, execuție paralelă și MonadDb.
MonadBFT
MonadBFT este un algoritm bizantin cu toleranță la erori în două faze, conceput pentru a îmbunătăți scalabilitatea și eficiența blockchain-ului. Este un derivat al algoritmului HotStuff optimizat pentru a funcționa în condiții parțial sincrone.
Această optimizare este importantă, deoarece majoritatea rețelelor din lumea reală nu prezintă un comportament perfect sincron din cauza timpilor variabili de livrare a mesajelor cauzate de congestionarea rețelei, latența și alți factori. Prin adaptarea acestor condiții parțial sincrone, MonadBFT asigură performanță decentă și fiabilitate în implementările practice.
Algoritmul HotStuff este un protocol de consens conceput pentru sistemele blockchain pentru a atinge toleranța bizantine la erori (BFT), care este capacitatea unui sistem de computer de a continua să funcționeze chiar dacă unele dintre nodurile sale acționează rău intenționat sau sunt defecte.
Ea atinge această robustețe printr-o serie de runde de comunicare între noduri pentru a conveni asupra următorului bloc din lanț. HotStuff necesită trei runde de comunicare pentru a ajunge la un consens, care poate deveni un blocaj pentru scalabilitate și eficiență. MonadBFT îmbunătățește HotStuff prin reducerea rundelor de comunicare necesare pentru consens de la trei la două.
Mecanismul consensului funcționează în etape. Un nod lider propune blocuri, iar validatorii le revizuiesc. În fiecare rundă, liderul trimite un nou bloc fie cu un certificat de cvorum (QC), fie cu un certificat de timeout (TC) pentru runda anterioară. Un QC este dovada că un bloc a fost aprobat de majoritatea validatorilor, indicând că aceștia sunt de acord cu validitatea blocului.
Un TC, pe de altă parte, indică faptul că numărul necesar de validatori nu a ajuns la un consens într-un interval de timp dat. Acesta acționează ca un mecanism de rezervă pentru a preveni blocarea sistemului.
Validatorii votează noul bloc propus de lider. Dacă un număr suficient de validatori (două treimi) aprobă, blocul este finalizat în runde ulterioare și sunt emise QC.
Dacă validatorii nu primesc un bloc valid la timp, ei trimit mesaje de timeout semnate, care pot fi agregate într-un TC. Acest TC este apoi trimis direct următorului lider. Un bloc este finalizat atunci când validatorii văd două blocuri certificate consecutive.
Această regulă de confirmare în două faze asigură finalizarea rapidă a blocului, menținând în același timp securitatea rețelei și toleranța la erori. La fel ca în toate setările BFT asincrone, două treimi din nodurile de validare ale Monadului trebuie să nu fie adversare și să aibă o miză de vot egală pentru a menține securitatea.
Execuție amânată
Execuția amânată decuplă execuția tranzacției de consens. Spre deosebire de blockchain-urile tradiționale, cum ar fi Ethereum, unde nodurile trebuie să execute tranzacții înainte de a stabili un consens, consensul MonadBFT se concentrează exclusiv pe ordinea tranzacțiilor.
Pe Ethereum, nodurile trebuie să ajungă la un consens atât cu privire la lista de tranzacții din bloc, cât și la rădăcina arborelui Merkle pentru execuția post-tranzacție. Aceasta înseamnă că liderul de consens trebuie să execute tranzacțiile înainte de a trimite blocul, iar nodurile de validare trebuie să refacă această execuție înainte de a-și exprima votul.
Prin urmare, timpii de blocare pot deveni destul de lungi, iar complexitatea calculului pe care o poate gestiona rețeaua este redusă. Mecanismul de consens al MonadBFT determină numai ordinea tranzacțiilor și permite execuția să aibă loc independent după ce se ajunge la consens.
Pentru a se asigura că execuția este efectuată corect, Monad întârzie acordul asupra rădăcinii Merkle a statului prin blocuri D. D este un parametru la nivel de sistem care se estimează în prezent să fie 10.
Acest design atenuează riscurile asociate cu un nod rău intenționat care nu execută tranzacțiile corect. Odată ce rețeaua ajunge la un consens cu privire la blocul N cu o majoritate de două treimi de voturi, ea este de acord și asupra statului reprezentat de arborele Merkle în blocul N-D.
Dacă orice nod descoperă o eroare în timpul executării blocului N-D, votează împotriva propunerii pentru blocul N. Acest lucru declanșează o revenire la starea finală a blocului N-D-1, urmată de reexecuția tranzacțiilor din blocul N-D. Un nod își poate verifica și corecta rezultatele execuției față de alte noduri din rețea verificând propria rădăcină Merkle. Nodurile ușoare pot interoga nodurile complete pentru dovezile Merkle ale valorilor variabilelor de stare.
Execuție paralelă
Blockchain-urile populare cu execuție paralelă sunt fie deterministe, fie optimiste.
Monad folosește execuția optimistă pentru a realiza procesarea tranzacțiilor paralele. Această metodă este oarecum analogă cu execuția speculativă folosită de unitățile centrale de procesare (CPU), în care procesoarele prezic calea instrucțiunilor de ramificație și le execută din timp.
Motorul de execuție al Monad începe să proceseze noi tranzacții chiar înainte ca execuția tranzacțiilor anterioare să fie finalizată, crescând debitul general.
Cu toate acestea, această strategie, numită control optimist al concurenței, poate duce la erori atunci când tranzacțiile ulterioare sunt interdependente. Dacă este detectat un conflict (de exemplu, atunci când două tranzacții încearcă să modifice același sold de cont), tranzacțiile afectate sunt reexecutate pentru a corecta discrepanțe.
În cel mai rău caz, o tranzacție trebuie să fie executată de două ori, dar, în total, aceasta adaugă doar 1,5% cheltuieli generale. Monad folosește, de asemenea, un analizor de cod static pentru a prezice din timp dependențele dintre tranzacții. Această analiză statică permite Monad să identifice potențiale conflicte înainte de execuție și, deși nu previne toate conflictele, ajută la optimizarea programării inițiale a tranzacțiilor pentru o execuție paralelă mai eficientă și optimistă.
Sei folosește, de asemenea, paralelizarea optimistă, presupunând că tranzacțiile nu vor intra în conflict, dar urmărește o abordare distinctă pentru gestionarea conflictelor. În timpul procesului de paralelizare, Sei urmărește ce părți ale statului modifică fiecare tranzacție. Dacă detectează că două tranzacții sunt în conflict, ceea ce înseamnă că încearcă să modifice aceeași parte a stării, sistemul oprește temporar execuția și reprocesează secvențial tranzacțiile aflate în conflict, similar cu Monad.
Cu toate acestea, utilizarea de către Monad a unui analizor de cod static permite o programare mai eficientă a tranzacțiilor, reducând astfel posibilitatea de conflict, în timp ce Sei pur și simplu abordează conflictele pe măsură ce apar în timpul execuției.
Execuția optimistă elimină, de asemenea, nevoia de programare complexă și algoritmi de analiză a dependenței, care sunt necesari pentru metodologiile deterministe. Într-o abordare deterministă folosită de Sui și Solana, tranzacțiile trebuie să declare ce părți ale statului vor accesa înainte de executare.
Această declarație inițială permite sistemului să programeze tranzacțiile într-un mod care să evite conflictele în timpul execuției. Avantajul principal al acestei metode este predictibilitatea: deoarece dependențele sunt cunoscute dinainte, sistemul se poate asigura că tranzacțiile nu interferează între ele, rezultând rezultate consistente și fiabile.
Cu toate acestea, această predictibilitate are un cost. Analiza dependențelor și programarea tranzacțiilor necesită algoritmi sofisticați, care trebuie să țină seama de toate interacțiunile potențiale dintre tranzacții și să introducă cheltuieli de calcul, rezultând cerințe hardware mai mari.
Nevoia de analiză și programare în timp real se adaugă și la complexitate, deoarece sistemul trebuie să monitorizeze și să ajusteze continuu ordinea de execuție pentru a preveni conflictele.
În plus, o abordare deterministă se poate confrunta cu provocări în scalarea eficientă. Pe măsură ce numărul de tranzacții crește, complexitatea analizei dependenței crește exponențial.
MonadDB
MonadDB este o bază de date personalizată concepută special pentru a optimiza implementarea execuției paralele. În blockchain-urile tradiționale, cum ar fi Ethereum, accesul de intrare/ieșire (I/O) devine un blocaj semnificativ, în primul rând pentru că aceste sisteme se bazează pe operațiuni I/O sincrone.
Procesele trebuie să aștepte finalizarea fiecărei operațiuni de citire sau scriere înainte de a trece la următoarea, ceea ce limitează drastic debitul și performanța generală. Pentru a depăși această limitare, MonadDB folosește operațiuni asincrone pe disc, care permit sistemului să inițieze mai multe operațiuni de citire și scriere simultan, fără a aștepta finalizarea fiecăreia. Acest lucru îmbunătățește viteza generală de procesare a tranzacțiilor, în special atunci când este combinat cu execuția paralelă.
Concluzie
Monad reprezintă un progres semnificativ în tehnologia blockchain. Utilizează tehnici inovatoare, cum ar fi execuția optimistă, execuția amânată și o bază de date personalizată, MonadDB, pentru a îmbunătăți scalabilitatea și eficiența.
Metoda sa optimistă de paralelizare, asemănătoare cu execuția speculativă în procesoare, permite un randament mare prin procesarea tranzacțiilor concomitent și reexecutarea tranzacțiilor conflictuale numai atunci când este necesar.
Combinată cu analiza statică a codului, această metodă optimizează programarea tranzacțiilor și reduce probabilitatea conflictelor. În comparație cu alte proiecte EVM paralele precum Sei și sisteme deterministe precum Sui și Solana, abordarea Monad echilibrează eficiența și complexitatea, oferind o soluție robustă pentru volume mari de tranzacții.
Introducerea MonadBFT, un algoritm bizantin cu toleranță la erori în două faze, asigură în continuare finalizarea rapidă a blocurilor și securitatea rețelei.
Pe măsură ce Monad se pregătește pentru rețeaua de testare publică la sfârșitul anului 2024 și pentru implementarea rețelei principale la începutul lui 2025, se poziționează ca un jucător formidabil în următoarea generație de platforme blockchain scalabile.