Înțelegerea Algorandului — Blockchain-ul care pretinde că rezolvă trilema
Conceptele de bază ale blockchain-ului începute de Silvio Micali, Câștigător al Premiului Turing și profesor MIT
Blockchain-urile din ziua de azi sunt departe de a fi perfecte. Bitcoin a fost lansat pentru prima dată în urmă cu peste 10 ani, dar incă suferă de producţie redusă și de comisioane prea mari de tranzacție. Ethereum accelerează actualizările de ani buni, dar de abia se descurcă mai bine decât Bitcoin în ceea ce privește scalabilitatea. Această problemă apare din cauza a ceea ce este cunoscut sub numele de trilema blockchain.
În acest articol, voi acoperi ce înseamnă trilema blockchain, ce este Algorandul și cum alţii încearcă să o rezolve de la cel mai înalt nivel. Acest articol presupune cunoștințe de bază despre blockchain-uri și terminologia asociată acestora.
Trilema Blockchain… Ce este?
O trilemă este o situație în care există trei opțiuni, dar cel mult două dintre ele sunt posibile în același timp. În cazul trilemei blockchain, cele trei opțiuni sunt:
• Securitate
• Scalabilitate
• Descentralizare
Dacă trilema este valabilă, nu există situații bune cu doar două opțiuni fiind adevărate.
Fără descentralizare, rămânem în esență în același sistem care există deja în ziua de azi: exclusiv și secret.
Această situaţie include proiecte care au un număr mic de „delegați” - nu este o adevărată descentralizare.
Fără securitate, tranzacțiile pot dispărea în aer. Ai putea primi bani de la cineva în schimbul unui produs sau serviciu, dar o vreme mai târziu ți-ai da seama că de fapt nu ai primit niciodată banii.
În cele din urmă, fără scalabilitate, rețeaua ar fi lentă și predispusă la înfundare (vă amintiți ce s-a întâmplat cu Ethereum când CryptoKitties a explodat?). Acest lucru nu este favorabil deoarece vrem să construim o rețea instantanee globală.________________________________________
Ce ar trebui să facă un blockchain?
Un blockchain are în esență două nevoi:
• Rezistentă la manipulare și trasabilă. Acest lucru se face prin tehnici de one-way hashing și prin incluziunea hash-ului ultimului bloc în cel mai recent bloc. Aproape toate blockchain-urile valabile fac acest lucru și nu sunt foarte diferite din acest punct de vedere.
• Generarea de blocuri noi. Cum alegeți ce bloc se adaugă lanțului? Acesta este cea mai dificilă decizie, diferite blockchains folosind algoritmi de consens (consensus algorithms) diferiți pentru a determina acest lucru.
Rezolvarea trilemei se reduce la dezvoltarea unui algoritm de consens care poate face toate aceste trei lucruri simultan.
Algoritmi de consens populare și defectele acestora
Dovada muncii (Proof of Work /PoW)
PoW este cunoscut datorită lui Satoshi Nakamoto, care îl folosește ca algoritm de consens pentru Bitcoin. La momentul scrierii, Ethereum folosește (încă) și PoW. Deşi algoritmul s-a dovedit a fi oarecum fiabil, deoarece rulează Bitcoin de peste 10 ani, are îndeajuns de multe probleme.
• Nu este scalabil: în PoW, „minerii” sunt obligați să rezolve un puzzle criptografic foarte complex pe maşinăriile lor. Primul din lume care face acest lucru are dreptul de a adăuga un nou bloc în lanț. Acest proces este scump deoarece rezolvarea puzzle-ului necesită multă putere de calcul și necesită foarte multă energie electrică. Cu excepţia minerului câștigător, toată lumea pierde bani, deoarece au petrecut timp încercând să rezolve un puzzle, dar nu a câștigat.
• Centralizat de facto: Deși PoW în sine nu este un mecanism centralizat de consens, datorită costurilor ridicate extracția Bitcoin a devenit în timp centralizată de facto. Exploatarea minieră în lumea de astăzi utilizează un număr enorm de mare de hardware specializat care utilizează tone de energie electrică. Exploatarea minieră pe un computer personal sau laptop este complet inutilă și probabil vei avea şi garanția că vei pierde bani. Având în vedere cantitatea uriașă de investiții necesară pentru a obține profituri, blockchain-ul Bitcoin este controlat în principal de doar trei grupuri miniere.
• Vulnerabil la un atac de 51%: dacă minerii principali ai unui lanț PoW complotează sau un singur actor rău intenționat ajunge să controleze 51% din hashrate-ul minier al rețelei, aceștia pot colabora pentru „blocuri false” și pot controla întregul lanț. Nu contează dacă ceilalți 49% nu sunt de acord cu deciziile lor, deoarece consensul majorității devine valabil. Acest lucru face ca punctul de centralizare de facto să fie foarte înfricoșător.
• Bifurcare (forking) și sfârşit lent: Atunci când doi sau mai mulți mineri rezolvă puzzle-ul unul lângă celălalt, lanțul se ramifică, deoarece rețeaua vede acum mai mulți candidați pentru următorul bloc, cauza fiind latența în răspândirea acestor informații. Această ramificare este cunoscută sub numele de forking, iar prelungirile pot exista pentru o vreme, sau chiar pot continua să se alungească prin adăugarea de blocuri noi. În cele din urmă, toate prelungirile vor dispărea cu excepția uneia. Acest lucru provoacă incertitudine și întârziere în tranzacții, deoarece nu veţi putea fi pe deplin sigur dacă tranzacția a avut loc sau nu. Pentru Bitcoin, se recomandă să așteptați 6 blocuri pentru a vă asigura că tranzacția este finală, deoarece șansa ca aceasta să fie pe un lanț de prelungiri după ce 6 blocuri au fost atașate este extrem de redusă. Dar acest lucru poate dura aproximativ o oră, ceea ce nu este bine.
Dovada delegată a mizei (Delegated Proof of Stake / DPoS)
În DPoS, comunitatea împuternicește un set de utilizatori numiți „delegați” să aleagă următorul bloc. Acest algoritm este utilizat în EOS. Algoritmul are, de asemenea, multe critici și vulnerabilități.
• DPoS este centralizat direct dintr-o lovitură. Un număr mic fix de delegați care aleg care bloc se adaugă lângă lanț nu reprezintă nimic atunci când doriți ca rețeaua să ruleze pentru milioane de utilizatori. Dar să te bazezi mult timp pe delegații aleși poate fi foarte riscant.
• Poate fi blocat. Deoarece există doar un număr limitat de noduri care fac toată munca grea, atacatorii le pot identifica uşor și pot opri rețeaua să funcționeze, de ex. prin DDoS’ing nodurile delegate.
Dovadă obligatorie a mizei (Bonded Proof of Stake / BPoS)
BPoS permite utilizatorilor rețelei care sunt dispuși să pună niște bani pe masă într-o „legătură” pe care nu o pot atinge. Acest lucru le oferă o anumită putere în rețea, iar acești utilizatori validează și adaugă blocuri noi în lanț. Ideea este că în eventualitatea în care acționează cu răutate, își pierd banii legați. Această metodă un defect foarte clar:
• Un simplu utilizatorul al rețelei nu are suficienți bani disponibili pentru a-i pune în această legătură. Este mult mai ușor pentru actorii rău intenționați să pună în joc sume uriașe de bani, ceea ce le-ar permite să controleze complet blockchain-ul. Ei își pot permite să piardă câteva milioane de dolari dacă ceea ce primesc în schimb sunt miliarde sau trilioane.
Dovada pură a mizei Algorand (Algorand’s Pure Proof of Stake / PPoS)
Soluția Algorand la aceste probleme este algoritmul lor PPoS. PPoS nu cere utilizatorilor să mizeze niciun ban în astfel de legături, ci doar să le aibă în primul rând. Acest lucru nu încearcă să îi facă cinstiți pe utilizatori prin teama de a aplica amenzi, ci mai degrabă face „trișarea cu o minoritate a banilor imposibilă și trișarea cu o majoritate a banilor o prostie”. Acest algoritm este sigur când majoritatea banilor se află pe mâini cinstite.
Implementarea dovezii pure de miză (Pure Proof of Stake)
La un nivel ridicat, Algorand construiește un bloc nou în două faze:
- În faza 1, un singur token este selectat aleatoriu, iar proprietarul acelui token este selectat pentru a propune următorul bloc.
- În faza 2, câteva mii de tokens sunt selectate aleatoriu din toată mulţimea de tokens din rețea. Proprietarii acestor tokens sunt selectați pentru a forma un comitet de fază 2 care au scopul de a valida și aproba blocul propus în faza 1. Deoarece mulţimea de tokens este selectată aleatoriu în detrimentul proprietarilor, unii membri pot fi aleși de k > 1 ori și au k voturi în comisie.
Cum este sigur acest lucru?
Răspunsul la această întrebare este unul oarecum filosofic. Ipoteza de bază este că în orice societate există o minoritate de actori răi. Poate 1%, poate 2%. Dacă unul dintre ei se află într-o societate deosebit de periculoasă, poate chiar 10% sau 20%. Însă în nicio societate nu ar exista o majoritate de actori răi, deoarece societatea nu ar mai exista în acest fel.
Considerați rețeaua Algorand ca o societate. Să presupunem cel mai rău scenariu și să considerăm că 20% din tokens din rețea aparțin unor actori rău intenționați. Apoi, de 1/5 ori simbolul ales pentru faza 1 va fi deținut de un actor rău. Să presupunem că vor spune unor utilizatori despre bloc fiind X, în timp ce vor spune altor utilizatori despre bloc fiind Y, încercând să provoace dezacord în societate.
Numărul de tokens din rețeaua Algorand este un număr foarte mare, aproape de 2²⁵⁶ (variază ușor în funcție de miza totală de vot). Probabilitatea ca un token să fie selectat pentru a vota un bloc este de ~ 2990 / 2²⁵⁶. Prin urmare, comisia care votează blocurile a dimensionat aproximativ de o distribuție Poisson cu media 2990. Pragul pentru a ajunge la un consens este de 2267 voturi. De vreme ce adversarul deține 20% din miză, numărul de voturi așteptat pentru actorii răi este de aproximativ 2990/5 = 598 (numărul real se bazează pe o distribuție Poisson), iar numărul așteptat de alegători cinstiți este de aproximativ 2990 * ( 4/5) = 2239.
Adversarul ar câștiga dacă ar putea obține mai mult decât pragul de voturi pentru două valori diferite, împărțind astfel lanțul și provocând dezacord în rețea.
Ca un exemplu, să examinăm ce se întâmplă în cazul în care numărul voturilor oneste este exact expectativa de 2239. Pentru ca adversarul să câștige, ar avea nevoie de [(2 * 2267)-2239]/2 voturi pentru a câștiga - sau 1147,5 voturi. Deoarece numărul de voturi sunt numere întregi, au nevoie de ≥ 1148 de voturi pentru a câștiga. Cu toate acestea, valoarea așteptată a voturilor către adversar, așa cum este descris mai sus, este 598. Calculând probabilitatea de a obține ≥ 1148 voturi într-o distribuție Poisson cu E(X) = 598 este aproximativ (5 / 10⁸⁷), un număr foarte, foarte mic. Calculul îl puteți găsi aici.
Însă cea mai interesantă întrebare a acestui algoritm încă nu a primit un răspuns. Cine alege acest comitet?
Cum sunt selectați utilizatorii pentru a face parte din comitet
Dacă v-aș spune că acest comitetul este ales chiar de Algorand (compania), aceasta ar fi o soluție extrem de centralizată și ar deține trilema.
Dacă v-aş spune că utilizatorii discută între ei până când decid cine sunt membrii, acesta este un sistem foarte lent pentru a determina dacă ai sau nu încredere în altcineva și nu poate duce niciodată la o selecție.
Aici intervine partea distractivă. Membrii comitetului se aleg singuri. Nu vă gândiţi la aşa ceva: „mă aleg pe mine pentru această rundă și runda următoare și runda următoare...”. Pentru a aparține comitetului, nodurile conduc o „loterie” verificabilă criptografic pe toate conturile lor și în cazul în care oricare dintre monedele lor câștigă la loterie, sunt selectaţi pentru a face parte din comitet. Această loterie se desfășoară izolat, fără niciun mod de comunicare cu alte noduri din rețea. Deoarece este verificabil criptografic, nimeni nu își poate modifica șansele de a câștiga la loterie. Indiferent cât de multă putere de calcul ai, nu îți poți modifica șansele de a fi selectat.
Când un utilizator conduce loteria, există două scenarii posibile:
- Niciuna dintre token-urile lor nu câștigă la loterie, caz în care părerea lor despre bloc este complet ignorată.
- Unele k ≥ 1 tokens câștigă la loterie, caz în care utilizatorul primește un „bilet câștigător” (o scurtă dovadă criptografică) pentru a dovedi că a câștigat la loterie. Apoi vor propaga acest bilet împreună cu părerea lor despre bloc către restul rețelei.
Revizuirea Trilemei
Securitate
Să presupunem că un puternic adversar rău intenționat ar dori să corupă membrii comitetului și să le influențeze voturile cu privire la următorul bloc. Să presupunem chiar că ar putea face acest lucru știind cine sunt membrii comitetului.
Aici intervine avertismentul - ei nu știu cine sunt membrii comitetului. Întrucât loteria se desfășoară izolat, doar membrii știu dacă sunt selectați sau nu până la momentul în care își propagă dovada și opinia despre bloc către restul rețelei.
Odată ce își propagă opinia, alte noduri știu cine sunt membrii comitetului, dar în acest moment este prea târziu pentru a-I corupe. Deja au spus ceea ce aveau de spus, iar părerea lor este deja transmisă în rețea. Nu există nicio garanție că vor fi din nou membri ai comisiei. Astfel, adversarul rău intenționat nu poate face nimic acum pentru a-i reduce la tăcere.
Deci Algorand este sigur în primul rând deoarece adversarul nu știe cine sunt membrii comitetului. Iar atunci când vor afla este prea târziu pentru a-i corupe.
În plus, deoarece nimeni nu știe iniţial cine sunt membrii comitetului, nu își pot ataca nodurile folosind metode precum DDoS.
Scalabilitate
Este nevoie doar de o microsecundă pentru ca orice utilizator să conducă „loteria”, indiferent de câte tokens ar avea. De asemenea, deoarece toate loteriile se desfășoară independent una de cealaltă, nodurile nu trebuie să aștepte ca alte noduri să termine mai întâi să facă ceva. Acest lucru se poate întâmpla simultan pe toate nodurile.
Odată selectați, membrii propagă un singur mesaj scurt către restul rețelei. Deci, indiferent cât de mulți utilizatori sunt în rețea, doar câteva mii de mesaje trebuie propagate în rețea. Acest lucru este foarte scalabil.
Descentralizare
Nu sunt puțini utilizatori care decid care va fi următorul bloc. Nici nu există un comitet fix care să ia această decizie de fiecare dată. Comitetul este ales aleatoriu și sigur și nu necesită deloc multă putere de calcul. Acest lucru permite tuturor celor din rețea să aibă șansa de a fi în comisie și de a vota următorul bloc.
Bonus: Esențial neramificat (Non-Forkable)
În Algorand există un singur bloc în fiecare moment care poate avea pragul necesar pentru votul comitetului. În consecință, toate tranzacțiile sunt finale imediat ce sunt adăugate la un bloc. Odată ce apare un bloc, vă puteți baza pe acesta pentru a fi acolo pentru totdeauna, tranzacțiile fiind astfel instantanee şi finale.