În centrul unui blockchain de mare debit este capacitatea sa de a gestiona numeroase tranzacții rapid și în siguranță. Cu toate acestea, atunci când tranzacțiile în Sui implică scrierea pe același obiect partajat, acestea trebuie să fie executate secvenţial. Acest lucru se poate traduce prin timpi mai lungi de punct de control care pot reduce eficiența sincronizării stării.

Primul obiectiv al controlului congestiei obiectelor partajate este de a îmbunătăți eficiența execuției punctelor de control. Prin controlul numărului de tranzacții care ating un obiect partajat aglomerat sau fierbinte în fiecare punct de control, sistemul se asigură că timpii de procesare rămân consecvenți, prevenind întârzierile.

Acest mecanism promovează, de asemenea, corectitudinea tranzacțiilor, asigurându-se că tranzacțiile cu taxe de gaz mai mari sunt prioritizate în includerea punctelor de control. Utilizatorii se vor aștepta ca tranzacțiile mai costisitoare să fie procesate mai rapid.

Abordarea limitărilor anterioare ale lui Sui

Sui gestiona anterior congestionarea obiectelor partajate prin managerul său de tranzacții. Acest sistem monitorizează numărul total de tranzacții care sunt în așteptarea executării, așteptând ca obiectele necesare să devină disponibile. Dacă tranzacțiile în așteptare depășeau un prag, managerul de tranzacții ar înceta să accepte noi cereri de semnare sau execuție a tranzacțiilor.

Mecanismul anterior, deși eficient în anumite scenarii, a fost insuficient în mai multe domenii. De exemplu, a dus adesea la respingeri parțiale ale tranzacțiilor și blocări de obiecte din cauza inconsecvențelor dintre validatori. Nu a estimat cu exactitate timpii de execuție pentru secvențele de tranzacții dependente, ceea ce a dus la ineficiențe și potențiale congestionări în procesare. În cele din urmă, atunci când un obiect era aglomerat, soluția anterioară a respins toate tranzacțiile primite până când tranzacțiile curente au fost executate, ceea ce înseamnă că nu a existat posibilitatea de a prioritiza includerea folosind plăți de gaz.

O privire mai atentă asupra controlului congestiei 

Noul design Consensus Handler introduce o abordare mai nuanțată pentru gestionarea dependențelor de execuție pe obiectele partajate. Aceasta include două funcții noi adăugate la logica validatorului:

  1. Capacitatea de a amâna tranzacțiile: Managerul de consens are acum capacitatea de a amâna tranzacțiile pentru viitoarele comisioane de consens, gestionând mai eficient dependențele de execuție în punctele de control.

  2. Anularea activă a tranzacțiilor: validatorii pot acum anula în mod activ tranzacțiile care au fost amânate excesiv. Când o tranzacție este anulată, aceasta este încă procesată, dar cu o comandă către motorul de execuție pentru a se opri imediat. Odată ce primește această instrucțiune, motorul de execuție eliberează orice obiect pe care le-a blocat și trimite rapid înapoi clientului o eroare de anulare fără a finaliza tranzacția.

Consensus Handler sortează și gestionează tranzacțiile. Această diagramă folosește cercuri colorate pentru a reprezenta tranzacții cu diferite cantități de gaz.

Atunci când Consensus Handler primește un commit de consens, mai întâi combină tranzacțiile din commit cu oricare care au fost amânate anterior, sortându-le după prețul gazului. Apoi examinează fiecare tranzacție una câte una, creând un grafic de dependență de execuție per obiect care subliniază pașii cruciali necesari pentru execuția punctului de control. Acest proces asigură că tranzacțiile sunt gestionate eficient și în ordinea costului lor.​

Pentru a adăuga o tranzacție la graficul de dependență, handlerul evaluează toate obiectele partajate implicate în tranzacție. Identifică obiectul cu cea mai lungă coadă pentru a începe execuția tranzacției, aliniind cozile tuturor obiectelor implicate la această lungime maximă. Costul tranzacției este apoi adăugat la coada fiecărui obiect, actualizând ordinul de execuție.

Graficul de dependență oferă o estimare a latenței de execuție pentru fiecare obiect pe baza celei mai lungi cozi de așteptare, care indică, de asemenea, latența generală pentru comiterea de consens. Există o limită maximă pentru lungimea cozii în fiecare comitere de consens. Dacă o tranzacție depășește această limită, este amânată pentru o comitare viitoare. Dacă amânată depășește în mod repetat un anumit prag, o tranzacție este anulată și scoasă din procesare. Acest lucru se întâmplă de obicei atunci când o tranzacție vizează un obiect foarte solicitat, dar oferă un preț al gazului prea mic pentru a fi competitiv.

Noul design mărește eficiența prin monitorizarea dependențelor de execuție și prin limitarea tranzacțiilor care implică obiecte partajate foarte solicitate în cadrul fiecărei comenzi consensuale, protejând astfel execuția punctului de control. În mod esențial, tranzacțiile care nu implică aceste obiecte cu cerere mare nu sunt afectate de aceste limite.

Rezolvarea provocărilor anterioare

După cum am menționat, sistemul anterior a avut probleme cu urmărirea cozilor de tranzacții pentru fiecare obiect, ceea ce duce la ineficiențe. Mecanismul de control al congestiei obiectelor partajate nu numai că abordează aceste provocări, dar introduce și îmbunătățiri semnificative pentru a eficientiza procesul. Noua abordare asigură luarea deciziilor uniforme în rândul tuturor validatorilor cu privire la executarea, amânarea sau anularea unei tranzacții. Această modificare elimină efectiv problemele asociate cu obiectele blocate și permite eliberarea rapidă a obiectelor deținute de tranzacții cu prioritate mai mică.

Mecanismul de control al congestiei îmbunătățește, de asemenea, acuratețea prin urmărirea graficului complet al dependenței de tranzacție în cadrul fiecărei comenzi consensuale. Aceasta înseamnă că notează cu atenție secvența și dependențele tranzacțiilor, oferind o vedere mult mai clară a timpului real necesar pentru a executa punctele de control. Procedând astfel, abordează complexitățile și ineficiențele care au fost trecute cu vederea anterior.

În plus, prin amânarea tranzacțiilor și încorporarea acestora cu altele noi în angajamentele de consens ulterioare, noua metodă sprijină piețele locale de taxe. Această configurație avantajează tranzacțiile cu prețuri mai mari ale gazului, asigurând că acestea au șanse mai mari de a fi procesate în perioadele aglomerate. Utilizatorii câștigă capacitatea de a plăti pentru includere, ceea ce poate fi deosebit de puternic pentru activitățile DeFi.

În cele din urmă, noua abordare tinde să obțină o performanță mai bună în încărcarea de lucru cu obiecte partajate înainte de a avea loc orice degradare în execuția punctului de control. Această îmbunătățire provine din luarea deciziilor consecvente și colective de către validatori, ceea ce duce la o procesare mai eficientă a tranzacțiilor și la creșterea debitului general al rețelei. Această uniformitate asigură că sistemul poate gestiona mai multe tranzacții înainte să apară probleme de performanță.

Sui eliberează calea

Implementarea controlului congestiei obiectelor partajate este mai mult decât o actualizare tehnică, este o îmbunătățire strategică care îmbunătățește semnificativ scalabilitatea și eficiența Sui.  Cu această bază, utilizatorii și aplicațiile de pe Sui se pot bucura acum de o mai mare eficiență și fiabilitate a tranzacțiilor. Mecanismul simplificat de control al congestiei oferă o rampă de lansare pentru implementarea unor aplicații mai complexe și mai receptive, extinzând și mai mult capacitățile ecosistemului.