Cum scalează Monad EVM, păstrând în același timp descentralizarea? MonadBFT este algoritmul de consens folosit în Monad, este prima implementare rezistentă la furca de coadă a Hotstuff (wtf înseamnă asta?) Iată cum MonadBFT poate scala la 1000 de validatori în timp ce este performant 🧵
1/7 Mecanisme de consens Mecanismul folosit de blockchain-uri pentru a se asigura că noile blocuri sunt convenite de majoritatea validatorilor. Algoritmii de consens până acum nu sunt capabili să scaleze dincolo de câteva sute de validatori, deoarece complexitatea crește în funcție de pătratul numărului de validatori (în majoritatea cazurilor) Deoarece fiecare validator vorbește cu toți ceilalți validatori pentru a conveni asupra blocurilor: n validatori x n mesaje = mesaje n-pătrate. Prin urmare, complexitatea crește semnificativ odată cu numărul de validatori.
2/7 Hotstuff este un algoritm de consens care poate scala liniar (direct proporțional cu numărul de validatori) evitând mesajele all-to-all și permițând unui singur "lider" să comunice cu toți validatorii pentru consens. Astfel, Hotstuff se poate scala mai eficient decât consensul PBFT tradițional, dar este vulnerabil la atacurile de tailforking. MonadBFT este prima implementare rezistentă la furcă de coadă a Hotstuff.
3/7 Ce este tailforking? Tailforking-ul are loc atunci când următorul lider (validatorul care propune următorul bloc), în mod intenționat sau accidental nu reușește să includă QC al blocului valid al liderului anterior în propunerea sa pentru noul bloc. (QC înseamnă certificat de cvorum, care este o dovadă că toți validatorii au fost de acord asupra blocului anterior) Ca urmare, blocul anterior, în ciuda faptului că este valid și are sprijinul majorității, este lăsat neangajat și în cele din urmă orfan sau înlocuit cu un bloc diferit la aceeași înălțime. Acest lucru perturbă mecanismul de stimulare: propunătorii onești nu pot primi recompense sau taxe de blocare dacă blocarea lor este omisă, încurajând comportamentul nedrept și slăbind securitatea rețelei.
4/7 Cum funcționează MonadBFT? → Un lider (Alice) transmite o propunere de blocare semnată tuturor celorlalte noduri (fan out), care recunosc validitatea acesteia trimițând o atestare semnată următorului lider Bob (fan in). → Bob agregă atestările într-un "certificat de cvorum" (QC) → Bob transmite QC tuturor nodurilor, care atestă că îl primesc trimițând un mesaj celui de-al 3-lea lider (Charlie) care agregă acele atestări. Deoarece atestările sunt despre un QC, numim acest nou QC QC-on-QC. → Charlie trimite QC-on-QC tuturor. După primirea QC-on-QC, toată lumea știe că blocajul lui Alice a fost finalizat.
5/7 Țevi În povestea de mai sus, Bob și Charlie trimit doar QC-uri sau QC-uri, dar în realitate propunerile sunt analizate: mesajul lui Bob conține atât QC-ul pentru blocul lui Alice, cât și conținutul unui nou bloc. Mesajul lui Charlie conține QC pentru blocul lui Bob (care este un QC-on-QC pentru blocul lui Alice) și conține, de asemenea, tranzacțiile pentru un bloc nou. Când validatorii trimit o atestare pentru mesajul lui Bob, ei atestă atât validitatea blocului lui Bob, cât și validitatea QC. Această conductă crește debitul rețelei, deoarece fiecare slot este produs un bloc nou.
6/7 Raptorcast: Protocolul de propagare a blocului Monad MonadBFT cere liderului să trimită propuneri de blocare fiecărui validator. Cu toate acestea, blocurile pot fi destul de mari: 10.000 de tranzacții/s * 200 octeți/tx = 2 MB/s. Trimiterea directă către 200 de validatori ar necesita 400 MB/s. În mod ideal, validatorii nu ar trebui să aibă o lățime de bandă de încărcare atât de mare. Aici intervine Raptorcast. → Blocurile sunt codificate de ștergere de către lider (codificarea de ștergere înseamnă că mesajul este împărțit într-un set de bucăți și poate fi decodat dintr-un subset suficient de mare al acestor bucăți) → Liderul distribuie un set diferit de bucăți tuturor validatorilor din rețea (validatorii cu miză mai mare primesc proporțional mai mult) → Fiecare validator își retransmite bucățile către toți ceilalți validatori din rețea În acest fel, întreaga lățime de bandă a rețelei este folosită pentru a promova propuneri de blocuri.
30,65K