Ako Ouroboros Leios zmení konsenzus Cardana
Cardano používa konsenzus PoS, ktorý je v čase písania tohto článku schopný spracovať 300 jednoduchých transakcií za sekundu. To je takmer 50-krát viac ako konsenzus PoW, ktorý používa Bitcoin. Pre globálny finančný systém je to však stále nedostatočné. Tím IOG pracuje na novej verzii PoS, ktorú nazval Ouroboros Leios.
Trilema blockchainu
Vývojársky tím každej blockchainovej siete vyvažuje tri kľúčové vlastnosti, ktorými sú bezpečnosť, decentralizácia a škálovateľnosť. Trilema blockchainu odkazuje na všeobecne rozšírené presvedčenie, že decentralizované siete môžu v danom čase poskytovať len dve z troch výhod. Bezpečnosť je bezpodmienečná vlastnosť, ktorú nemožno ohroziť. Tímy balansujú najmä medzi decentralizáciou a škálovateľnosťou. Uprednostňovanie škálovateľnosti pred decentralizáciou však nie je najlepším riešením, keďže decentralizácia je kľúčovou vlastnosťou blockchainového odvetvia. Navyše, s poklesom decentralizácie klesá aj Nakamotov koeficient, a teda aj bezpečnosť.
Vytvorenie blockchainovej siete, ktorá dosahuje vysokú škálovateľnosť a zároveň neobetuje decentralizáciu a bezpečnosť, je pre odvetvie blockchain stále technologickou výzvou. Cardano je v súčasnosti jednou z najviac decentralizovaných sietí s viac ako tisíckou poolových operátorov, ktorí vytvárajú bloky. Je nevyhnutné, aby si Cardano udržalo svoju súčasnú decentralizáciu a nezatvorilo si dvere k ďalšiemu rastu. Zvyšovanie škálovateľnosti je však nevyhnutné aj pre poslanie, ktoré sa Cardano snaží plniť.
Ouroboros Leios je významné rozšírenie súčasného konsenzu PoS, ktoré výrazne zvýši škálovateľnosť a zachová súčasnú úroveň decentralizácie. Pozrime sa na doteraz známe podrobnosti.
Priepustnosť
Siete blockchain používajú bloky ako súbor transakcií a skriptov, nad ktorými sa uskutočňuje konsenzus siete. Z pohľadu siete nie je efektívne prijímať rozhodnutia na globálnej úrovni pre každú jednotlivú transakciu. Efektívnejšie je vziať viacero transakcií súčasne a urobiť rozhodnutie (konsenzus) nad celou kolekciou.
Blok je základná jednotka používaná na prechod do nového stavu na úrovni účtovnej knihy. Ak väčšina siete považuje navrhnutý blok za platný, nový blok sa navždy uloží do blockchainu a stane sa východiskovým bodom pre ďalší prechod do iného stavu.
Priepustnosť blockchainových sietí ovplyvňujú dva parametre. Sú to veľkosť bloku a čas bloku.
Veľkosť bloku definuje maximálnu veľkosť bloku, ktorá ovplyvňuje počet transakcií a skriptov, ktoré sa do neho zmestia. Ak je veľkosť bloku 88 kB (90,112 B) a jednoduchá transakcia má veľkosť napríklad 300 B, do bloku sa zmestí 300 transakcií.
Čas bloku definuje časový interval medzi pridávaním nových blokov. Cardano má čas bloku nastavený na 20 sekúnd. To znamená, že za 1 minútu môže Cardano spracovať 900 jednoduchých transakcií. Za 10 minút 9000 transakcií atď.
Môže sa stať, že ak počet používateľov, ktorí chcú používať sieť, začne narastať, sieť nemusí byť schopná vložiť všetky nové transakcie do nového bloku. Niektoré transakcie tak musia čakať v mem-poole na ďalší blok.
To by sa napríklad stalo, ak by 400 používateľov chcelo poslať jednoduchú transakciu v priebehu 20 sekúnd, a to by sa opakovalo hodinu. 400 transakcií je viac ako 300, ktoré Cardano bez problémov zvládne. Každých 20 sekúnd zostane 100 transakcií mimo nového bloku, takže musia zostať v mem-poole.
Mem-pool si môžete predstaviť ako dočasné úložisko transakcií v uzloch siete. Keď sa výrobca bloku stane lídrom slotu, t. j. získa právo vytvoriť nový blok v danom slote, vezme vopred overené transakcie z mem-poolu a vloží ich do bloku. Potom blok rozšíri do siete. S každým novo pridaným blokom sa priestor mem-poolu zväčšuje, pretože transakcie, ktoré sa už v blockchaine nachádzajú, môžu byť vyňaté. Nové transakcie však prichádzajú neustále.
Ak je počet transakcií neustále vyšší, ako je počet, ktorý sieť dokáže spracovať, je potrebné zabrániť zaplneniu mem-poolu nad požadovaný limit. Sieť je nútená nové transakcie odmietnuť. Používatelia musia dlhšie čakať na vyrovnanie transakcií, ktoré sú už v mem-poole. Používatelia, ktorým sa nepodarilo odoslať transakciu, to musia skúsiť znova. Obe možnosti sú pre používateľov nepriaznivé. Používatelia očakávajú, že vyrovnanie bude krátke a že sieť nebude mať problémy s priepustnosťou.
Mem-pool je schopný absorbovať krátkodobé špičky, ale nemá zmysel, aby bol mnohonásobne väčší ako veľkosť bloku. Ak by bolo v mem-poole dostatok transakcií napríklad na 100 blokov dopredu, znamenalo by to, že novo zadané transakcie by sa do bloku nedostali relatívne dlho. V ideálnom prípade by mem-pool mal byť čo najmenší a sieť by mala byť dostatočne škálovaná, aby transakcie nezostávali v mem-poole len preto, že sa nezmestia do bloku.
Decentralizovaná sieť dokáže šíriť transakcie relatívne rýchlo a teoreticky je obmedzená len šírkou pásma internetu. Internet má vyššiu priepustnosť ako blockchainové siete, keďže blockchainy sú obmedzené veľkosťou bloku a časom bloku. Inými slovami, blockchainové siete v súčasnosti nedokážu využiť priepustnosť internetu, pokiaľ ide o produkciu blokov. To, čo brzdí blockchainové siete, je pomalý konsenzus, ktorý je navyše obmedzený veľkosťou údajov v danom intervale. Transakcie by síce mohli cez blockchainovú sieť prúdiť relatívne rýchlo, ale jediným výsledkom by bolo, že by sa zaplnil mem-pool.
Existujú zdanlivo jednoduché riešenia, ako napríklad zväčšenie veľkosti bloku alebo skrátenie času blokovania. Obe vedú k vyššej priepustnosti, keďže do bloku by sa zmestilo viac transakcií a nový blok by sa vytváral častejšie. Nanešťastie, zmena týchto parametrov by mohla mať negatívny vplyv na bezpečnosť a decentralizáciu. Napríklad čím väčší je blok, tým dlhšie trvá jeho šírenie v sieti Peer-to-Peer (zvyšuje sa oneskorenie). Čím kratšia je veľkosť bloku, tým väčšie je riziko vzniku forkov, pretože producent bloku nemusí včas dostať posledný vyrobený blok (a použiť predchádzajúci).
S rastúcim počtom uzlov v sieti môže rásť počet skokov, cez ktoré musia dáta v sieti prejsť. Keďže každý uzol pred odoslaním údajov overuje ich platnosť (aby sa zabránilo odosielaniu neplatných údajov v sieti), distribúcia údajov sa spomaľuje.
Ako zvýšiť priepustnosť
Ako sme už povedali, v súčasnosti blockchainové siete nevyužívajú väčšinu komunikačnej šírky pásma. Väčšinu času uzly len čakajú. Respektíve prijímajú, prevalidujú a ďalej distribuujú nové transakcie a skripty. Overovanie nových prichádzajúcich transakcií nie je pre uzly výpočtovo náročná úloha. Trochu viac práce majú len vtedy, keď dostanú nový blok alebo sú poverené výrobou nového bloku.
Ak je čas bloku nastavený na 20 sekúnd, môžeme povedať, že uzol vykonáva minimálnu prácu 19 sekúnd a overuje alebo vytvára nový blok raz za 20 sekúnd. Z hľadiska využitia šírky pásma siete je to podobné. Po sieti sa neustále posiela množstvo malých transakcií, ale raz za 20 sekúnd je potrebné distribuovať relatívne veľký blok, čo trvá oveľa dlhšie ako pri transakciách.
Na zvýšenie škálovateľnosti je potrebné využiť výpočtový výkon uzlov a naplno ich využiť. Nemá zmysel využívať výpočtový výkon a šírku pásma siete len vtedy, keď sa má vytvoriť nový blok. Jednoducho povedané, čím dlhší je čas bloku, tým menej sa využíva výpočtový výkon a šírka pásma siete.
Nezamieňajte si úlohu PoW, ktorá spočíva najmä v kreslení výrobcu ďalšieho bloku a zabezpečení proti prepísaniu histórie, s overovaním transakcií. V kontexte škálovateľnosti Bitcoinu sieť tiež v podstate 10 minút nečinne sedí, kým sa ťažiarov snaží vyriešiť výpočtovo náročný kryptografický problém.
Je teda potrebné využívať dostupné zdroje. Overené transakcie a skripty by mali byť čo najskôr prijaté a uložené do blockchainu. Inými slovami, výsledky validácie je potrebné dostať do bloku čo najskôr, bez ohľadu na ich množstvo.
Mnohí nováčikovia v oblasti kryptomien nemajú jasno v tom, čo presne je decentralizácia, a hlavne, čo môže zmeniť. V tomto článku sa pozrieme na to, ako je decentralizovaný protokol Cardano, a potom sa budeme venovať tomu, čo všetko môže decentralizácia zmeniť v našej spoločnosti Viac informácií .
Ako zvýšiť priepustnosť pri zachovaní bezpečnosti a decentralizácie? Nesmie dôjsť k zásadnej zmene počtu uzlov v sieti. Sieť musí zostať otvorená, aby sa do nej mohol kedykoľvek pripojiť nový uzol.
Riešenie musí byť nezávislé od parametrov veľkosti bloku a času bloku. Je potrebné využiť celú priepustnosť komunikačného spojenia, aby bolo možné rýchlo spracovať čo najviac nových transakcií a skriptov. Uzly môžu viac využívať svoj výpočtový výkon počas čakania na vytvorenie nového bloku. Tím IOG našiel riešenie.
Je potrebné oddeliť overovanie transakcií a vykonávanie skriptov od tvorby blokov. Ouroboros Leios rozdeľuje úlohy súvisiace s validáciou a výrobou blokov do dvoch skupín uzlov. Každý uzol však môže vykonávať obe úlohy.
Vstupné schvaľovacie zariadenia
Cardano rozdeľuje čas do slotov. Dĺžka jedného slotu je jedna sekunda. Protokol je nastavený tak, že približne každých 20 sekúnd sa jeden náhodne vybraný uzol stane vedúcim slotu. Vedúci slotu získa právo vkladať transakcie do nového bloku a zverejňovať ho. Veľkosť podielu ovplyvňuje frekvenciu, s akou sa uzol môže stať vedúcim slotu. Vybraný slot leader je zároveň producentom bloku, ak využije právo a vytvorí nový blok.
Na obrázku nižšie môžete vidieť čas rozdelený na sloty. V slotoch 20 a 40 sú vylosovaní noví lídri slotov, sú to uzly označené 11 a 3. Tieto uzly môžu produkovať nový blok a publikovať ho.
V sieti existujú subjekty (prevádzkovatelia stake poolov), ktorým delegáti dôverujú, a to sa dá využiť. Okrem producentov blokov bude existovať aj druhá skupina, ktorá sa nazýva schvaľovatelia vstupov. V rámci jedného slotu je teda možné náhodne vybrať nielen vedúcich slotu, ale aj jedného vstupného schvaľovateľa (teoreticky viac vstupných schvaľovateľov).
Úloha vedúcich slotov sa nemení a ich úlohou je vyrobiť nový blok. Úlohou schvaľovateľov vstupov je schvaľovať vstupy, ktoré by sa mali dostať do bloku. O obsahu schvaľovaného vstupu budeme hovoriť neskôr. Vstupných schvaľovateľov si možno predstaviť ako druhú vrstvu, ktorá pred spracovaním transakcií a skriptov pred ich vložením do bloku náhodne vybraným vedúcim slotu.
Vstupní schvaľovatelia budú náhodne vyberaní mechanizmom podobným spôsobu, akým sa vyberajú vedúci slotov. Rozdiel je v tom, že vstupní schvaľovatelia môžu byť vybraní v každom jednotlivom slote (jeden vstupný schvaľovateľ za sekundu) pred výberom vedúceho slotu (približne každých 20 sekúnd). Vstup pripravený schvaľovateľom vstupu bude vedúcim slotu prijatý len vtedy, ak sa kryptograficky overí, že schvaľovateľ vstupu získal právo na prípravu vstupu.
Medzi dvoma blokmi sa náhodne vyberie viacero schvaľovateľov vstupov, ktorí pripravia vstupy. Po výbere vedúceho slotu bude k dispozícii viacero schválených vstupov, ktoré sa môžu vložiť do bloku. Namiesto toho, aby vedúci slotu vkladal do bloku vybrané transakcie a skripty, ako to robí teraz, bude do bloku vkladať odkazy na schválené vstupy.
Bloky a schválené vstupy sú v sieti distribuované nezávisle. Každý blok môže obsahovať 0 až N schválených vstupov.
Na obrázku nižšie môžete opäť vidieť čas rozdelený do slotov. Približne každých 20 sekúnd sa vykreslí nový vedúci slotu. Okrem toho sa v každom slote vylosuje schvaľovateľ vstupu, ktorý má právo vytvoriť nový vstup. Paralelne teda prebiehajú dve žrebovania v rovnakom čase.
Schvaľovanie vstupov je možné len preto, že Cardano používa model Extended-UTXO. Transakcie a skripty je možné potvrdzovať lokálne bez ohľadu na okolité prostredie (neexistuje globálny stav). Overovanie transakcií a vykonávanie skriptov prebieha lokálne na úrovni vstupných endorserov, t. j. mimo hlavného reťazca, ktorý zostáva pod kontrolou lídrov slotov. Zodpovednosť za hľadanie konfliktov dvojitých výdavkov zostáva na vybraných vedúcich slotov. Stáva sa však odľahčeným procesom, ktorý sa musí spoliehať len na zisťovanie a riešenie konfliktov v grafe UTXO.
Tá istá transakcia môže byť obsiahnutá vo viacerých schválených vstupoch. To sa môže stať, ak schvaľovateľ vstupov nevie, ako vyzerajú predchádzajúce vstupy. V prípade, že je transakcia v blockchaine prítomná viacnásobne, jej prvý výskyt bude iba jej kanonickou pozíciou v účtovnej knihe.
Na obrázku nižšie môžete vidieť, ako sa každú sekundu vytvára nový schválený vstup. Hneď ako sa vykreslí nový líder slotu, vzniknú ďalšie endorsed inputs, ktoré sú pripravené na použitie. Vedúci slotu vykoná svoj schvaľovací proces a môže vložiť všetky vybrané vstupy do nového bloku.
Pozrime sa, čo sa deje od odoslania transakcie po jej vloženie do bloku.
Keď uzol prijme novú transakciu, validuje ju. Všetky platné transakcie sa vložia do mem-poolu. Ak uzol získa právo vytvoriť potvrdený vstup v danom slote, zahrnie do nového vstupu vopred overené transakcie. Vytvorí sa dávka transakcií. Môžete si to predstaviť ako nový druh bloku. Schválené vstupy (bloky) sa distribuujú v sieti Peer-to-Peer. Okrem mem-poolu pre transakcie bude existovať aj mem-pool pre schválené vstupy. Uzly budú mať vo vyhradenom mem-poole viacero schválených vstupov, aby boli pripravené na výrobu nového bloku v prípade, že by sa stali lídrom slotu.
Uzly nielen uchovávajú schválené vstupy, ale lokálne dokazujú ich platnosť prostredníctvom mitrilových certifikátov, ktoré sú kryptografickými dôkazmi platnosti skupín transakcií.
Po výbere nového lídra slotu vyberie schválené vstupy z mem-poolu a overí, či nedošlo k dvojitému výdavku. Potom do nového bloku vloží odkazy na všetky vybrané schválené vstupy. Nový blok sa potom distribuuje do siete a overenie ostatnými uzlami sa vykoná podobným spôsobom ako teraz. Počas distribúcie nového bloku môžu uzly vybrať použité schválené vstupy zo svojich pamäťových rezerv.
Na obrázku nižšie môžete vidieť, ako uzol prijíma nové transakcie a tiež nové schválené vstupy zo siete Peer-to-Peer. Obidve sú uložené vo vyhradených mem-pooloch. Uzol mal šťastie a bol zvolený za vedúceho slotu, takže vytvoril nový blok.
Všimnite si, že tento koncept deleguje overovanie transakcií a vykonávanie skriptov na všetky uzly a nezaťažuje uzol touto prácou v čase, keď je zvolený za vedúceho slotu. Umožňuje využiť výpočtový výkon uzlov počas “nečinnosti”, keď všetky uzly čakajú na nového lídra slotu.
Transakcie a skripty sa v sieti spracovávajú v podstate neustále, takže vytvorenie nového bloku je relatívne rýchly proces. Keďže sa používajú odkazy na potvrdené vstupy, veľkosť bloku môže zostať rovnaká ako dnes, aj keď objem spracovaných údajov môže byť mnohonásobne väčší. Inými slovami, každý schválený vstup môže obsahovať napríklad 1000 transakcií. Distribúcia bloku sa teda nebude spomaľovať kvôli veľkosti. Zároveň však uzly majú prístup ku všetkým potrebným údajom, na ktoré sa v novom bloku odkazuje.
Tento koncept môže pripomínať riešenia L2, ako sú ZK Rollups a Optimistic Rollups, alebo iné riešenia, napríklad Lightning Network. Výhodou však je, že neexistuje druhá sieť s vlastnou infraštruktúrou. Všetko bude pod kontrolou súčasných prevádzkovateľov staking poolov v rámci siete Cardano. Používatelia si zmenu okrem lepšieho výkonu nevšimnú. Nie je potrebné používať mosty alebo rôzne adresy, takže používateľský zážitok nebude negatívne ovplyvnený.
Záver
V čase písania tohto článku všetci fanúšikovia netrpezlivo očakávajú ďalšie podrobnosti od tímov IOG. Asi najväčšou otázkou pre nás je, kde a ako sa budú ukladať transakcie a skripty, keďže blok bude iba odkazovať na údaje. Keďže Cardano bude oveľa lepšie škálovať, bude generovať aj viac dát, ktoré bude potrebné niekde ukladať. Ideálne riešenie by bolo prostredníctvom shardingu, aby uzly nemuseli ukladať všetky dáta, ale len ich časť. Uvidíme, ako to tím IOG vyrieši.
Je predčasné tvrdiť, že trilema blockchainu je vyriešený problém. Ouroboros Leios však bude významným krokom vpred, pretože priepustnosť siete nebude obmedzená parametrami veľkosti a času bloku. V súčasnosti nie je známe, aká vysoká bude škálovateľnosť Cardana, je však viac ako pravdepodobné, že sa posunieme minimálne o jeden rád. Predtým sa hovorilo, že blockchain je pomalá databáza. Ouroboros Leios toto tvrdenie zneplatňuje a môže prepísať históriu sieťového konsenzu.
(Napísal @Cardanians.io) - preklad @Martin.M
Pôvodný článok: How Ouroboros Leios will change the Cardano Consensus | Cardanians