🇸🇰 Hydra: riešenie škálovateľnosti Cardana

Hydra: riešenie škálovateľnosti Cardana

V budúcnosti sa väčšina transakcií bude spracovávať pomocou riešení druhej vrstvy. Prvé vrstvy nemusia byť schopné uspokojiť vysoký dopyt po transakciách. Cardano má riešenie druhej vrstvy a jeho názov je Hydra.

Telo Hydry je ako hlavný reťazec. Hydra môže mať viac hláv. Každá hlava dokáže spracovať ~1000 TPS.

Kryptomeny prišli na svet, aby sa stali alternatívou k súčasnému finančnému systému. Používatelia ako takí musia mať možnosť platiť v obchode rovnako rýchlo ako kreditnými kartami. To znamená, že transakcia musí byť zúčtovaná do niekoľkých sekúnd. Sieť Visa spracuje každý deň v priemere 150 miliónov transakcií. Je to približne 2 000 transakcií za sekundu (TPS). Takáto priepustnosť je pre súčasné blockchainové siete nedosiahnuteľná. Bežná priepustnosť sietí PoW je zvyčajne len niekoľko desiatok TPS. Siete PoS môžu dosiahnuť niekoľko stoviek TPS.

Distribuované siete vo všeobecnosti trpia vážnymi obmedzeniami škálovateľnosti, nízkou priepustnosťou a nadmerným úložiskom potrebným na udržiavanie stavu systému a histórie transakcií. Po približne 5 rokoch interdisciplinárneho výskumného úsilia v rámci IOHK bol vydaný dokument Hydra. Vedci a výskumníci z oblasti sietí, výpočtov s viacerými stranami, programovacích jazykov a konsenzu museli spolupracovať, aby prišli s riešením škálovania, ktoré sa dobre hodí k blockchainu a inteligentným kontraktom. Ide o významný vedecký úspech a významný míľnik vo vývoji Cardana. Ouroboros Hydra otvára nové možnosti škálovateľnosti PoS. Vďaka Hydre sa Cardano môže skutočne stať alternatívou k súčasným fiat peniazom.

Hydra je riešenie druhej vrstvy nad prvou vrstvou Cardano, kde sa používa konsenzus PoS. Hydra je navrhnutá tak, aby sa dobre hodila k modelu stake pool. Tím IOHK predstavil rozšírený model UTxO, ktorý umožňuje shardovanie priestoru pre stake bez potreby shardovania samotnej účtovnej knihy. Stále je možné shardovať na úrovni ledgeru a Hydra je doplnkovou súčasťou celého riešenia škálovania. Každý pool môže vytvoriť novú hlavu Hydra, takže pridanie ďalších poolov znamená, že je možné pridať viac hláv. Takže pridávaním nových hláv do protokolu možno dosiahnuť takmer lineárne škálovanie. Boli vykonané simulácie a výsledky sú skvelé. Každá hlava Hydra dokáže spracovať približne 1000 TPS a je tu priestor na ďalšiu optimalizáciu. Takže s 1000 bazénmi by Cardano teoreticky mohlo byť schopné škálovať až na 1 milión TPS a finalizácia transakcií bude veľmi rýchla. Hydra umožňuje horizontálne škálovanie. To znamená zvyšovanie výkonu začlenením ďalších uzlov. Je to vždy jednoduchšie ako pridávať ďalší výkonný hardvér, pretože existujú HW limity.

Hydra zabezpečí nízku latenciu a minimálne ukladanie údajov na uzol. Hydra je tiež schopná vykonávať inteligentné kontrakty, takže vývojári môžu ľahko vytvárať dapps a využívať mikroplatby, hlasovanie a ďalšie veci.

Nevadí, ak nerozumiete všetkému, čo bolo napísané vyššie. Poďme teraz hlbšie do technických detailov.

Aký je vzťah medzi blockchainom a Hydrou

Možnosti prvej vrstvy budú vždy obmedzené, pokiaľ ide o počet transakcií spracovaných v danom časovom období. Ak sa nemá obetovať decentralizácia, priepustnosť nikdy nebude dostatočná na to, aby veľké množstvo ľudí mohlo používať konsenzuálnu distribuovanú sieť. Riešením môže byť vytvorenie druhej vrstvy nad prvou vrstvou. Prvá vrstva je to, čo nazývame blockchain. Je to najbezpečnejšia a decentralizovaná sieť s nižšou priepustnosťou. Nad touto prvou vrstvou je možné vytvoriť kvázi nezávislú sieť, druhú vrstvu. Druhá vrstva je vytvorená tak, aby sa čo najviac škálovala a aby boli transakcie rýchle a lacné. Hydra je teda riešením druhej vrstvy pre prvú vrstvu Cardano.

Keďže bezpečnosť prvej vrstvy je zabezpečená blockchainom a distribuovaným konsenzom, hovoríme, že transakcie sa spracúvajú v reťazci. Používatelia budú môcť previesť finančné prostriedky na druhú vrstvu. Transakcie v druhej vrstve sa teda spracúvajú mimo reťazca, teda mimo blockchainu. Prvá vrstva teda neoveruje transakcie, ktoré sa uskutočňujú v druhej vrstve.

Ukážme si to na príklade. Alica, Bob a Carol majú v blockchaine v prvej vrstve po 10 mincí ADA. Spolu 30 mincí. Existuje špeciálny mechanizmus, ktorý umožňuje presun mincí do druhej vrstvy. V našom prípade do Hydry. Presnejšie povedané, hlava Hydry je otvorená. V hlave Hydry si všetci účastníci vymieňajú mince prostredníctvom transakcií. Prvá vrstva tieto transakcie neoveruje. Po zatvorení hlavy Hydry blockchain prevezme len poslednú platnú distribúciu mincí z druhej vrstvy. O prenose mincí medzi vrstvami bude reč neskôr.

Blockchain môže ľahko overiť, že z očakávanej hlavy Hydry sa 30 mincí ADA vráti späť do blockchainu. Teda presne toľko, koľko bolo prenesené do blockchainu počas otvorenia Hydrinej hlavy. Vlastníctvo mincí sa mohlo zmeniť v druhej vrstve, pričom Alica má teraz 20 mincí a Bob má Carol 5 mincí. Výhodou je, že v druhej vrstve môže prebehnúť veľké množstvo rýchlych transakcií medzi mnohými používateľmi a blockchain sa o to nemusí priamo starať.

Alica, Bob a Carol prevedú mince ADA z blockchainu do Hydry. Hlava Hydry je otvorená. V hlave Hydry si strany môžu vymeniť toľko rýchlych transakcií, koľko chcú. Na konci sa konečný stav mincí prenesie späť do blockchainu.

Alica, Bob a Carol môžu medzi sebou komunikovať priamo v hlave Hydry. Deje sa to tak, že je možné zabudnúť na históriu transakcií. Strany si navzájom aktualizujú lokálne stavy a po ich potvrdení medzi všetkými je možné históriu transakcií vymazať. V hlave Hydry sa tak uchováva len posledný platný stav, ktorý sa použije pri prevode prostriedkov späť do blockchainu. Podrobnejšie sa mu budeme venovať aj neskôr.

Stavové kanály Hydry

Hydra používa stavové kanály, ktoré rozširujú koncept platobných kanálov. Strany udržiavajú stavové kanály na udržiavanie spoločného stavu a sú schopné sa na ňom dohodnúť bez interakcie s blockchainom.

Hydra nie je len o prevode finančných prostriedkov, ale aj o vykonávaní inteligentných zmlúv. Je teda potrebné pracovať so stavmi. Napríklad je možné vytvoriť inteligentný kontrakt v prvej vrstve a preniesť ho do hlavy Hydry, kde sa môže vykonať.

Inteligentný kontrakt si môžete predstaviť ako program alebo postupnosť určitých operácií, ktoré sa vykonávajú podmienečne. To znamená, že operácia sa vykoná len vtedy, ak nastala očakávaná udalosť. Ak sa tak nestane, môže sa vykonať iná operácia. Môžeme hovoriť o udalosťami riadenom vykonávaní inteligentného kontraktu. Inteligentný kontrakt je v každom okamihu v určitom stave, ktorý sa postupne podmienečne mení, pokiaľ je aktívny a udalosti spúšťajú zmeny.

Predstavte si stávkovú kanceláriu, v ktorej môžu ľudia tipovať výsledky zápasov. Inteligentný kontrakt bude schopný zablokovať vklady všetkých účastníkov a potom spravodlivo rozdeliť výhry na základe výsledkov zápasov. Ak to zjednodušíme, kontrakt bude v niekoľkých stavoch na jeden zápas.

Verejný blockchain zápasí s prijatím. Vyššie prijatie je kriticky závislé od schopnosti protokolu viac škálovať. Vysvetlíme si, čo presne je škálovateľnosť, a pozrieme sa na rozdiely medzi PoS a PoW Viac informácií .

  1. Zbieranie vkladov a tipov účastníkov pred zápasom.
  2. Zastavenie prijímania vkladov krátko pred začiatkom zápasu.
  3. Čakanie na výsledok zápasu.
  4. Spracovanie výsledku zápasu a výpočet výhier.
  5. Rozdelenie výhier medzi výhercov.

Inteligentný kontrakt sa môže vykonávať v systéme Hydra a môže sa použiť pre viac zápasov za sebou. Blockchain teda nemôže uchovávať všetky transakcie súvisiace so stávkami. História môže byť v systéme Hydra zabudnutá. Po rozdelení výhier medzi výhercov po zápase možno všetky stavy a transakcie vymazať. Samozrejme, okrem konečného stavu. Predpokladajme, že inteligentný kontrakt bol vytvorený pre futbalovú sezónu. Po skončení sezóny sa môže hlava Hydry zatvoriť a jediné, čo bude uložené v blockchaine, je rozdelenie záverečného fondu stávkarov.

Prečo nevsádzať prostredníctvom inteligentného kontraktu?

Koncept stavových kanálov nie je nový a už existujú niektoré implementácie. Majú však niekoľko vážnych nevýhod. Najväčšou nevýhodou je, že infraštruktúru prvej vrstvy a kód inteligentného kontraktu, ktorý je napísaný pre infraštruktúru prvej vrstvy, nie je možné použiť v rámci druhej vrstvy bez zmien. Tieto zmeny, ktoré sú potrebné na prenos finančných prostriedkov a inteligentných zmlúv medzi vrstvami, môžu byť veľmi nebezpečné.

V blockchaine sa napríklad zvyčajne používa model UTxO (Unspent Transaction Output - výstup z nespotrebovanej transakcie). UTxO je v podstate abstrakcia mincí. Každý UTxO predstavuje reťazec vlastníctva implementovaný ako reťazec digitálnych podpisov, kde vlastník používa súkromný kľúč na podpísanie transakcie, ktorá prenáša vlastníctvo jeho UTxO na verejný kľúč príjemcu. Ako sme už povedali, pre zjednodušenie si môžete UTxO predstaviť ako reprezentáciu mince. Vaše vlastníctvo mincí je definované počtom UTxO, ktoré máte v peňaženke a ktoré sa nachádzajú na vašich adresách.

Model UTxO sa považuje za veľmi bezpečný spôsob, ako manipulovať s prostriedkami v rámci blockchainu. Súčasné riešenia druhej vrstvy nie sú schopné pracovať priamo s UTxO. Mince sú teda reprezentované úplne iným spôsobom. Súčasné druhé vrstvy tak strácajú dôležitý bezpečnostný prvok. To isté platí aj pre vykonávanie inteligentných kontraktov, kde musí dôjsť ku konverzii reprezentácie informácií. A to môže byť veľmi nebezpečné.

Hydra výrazne zjednodušuje riešenia druhej vrstvy. Hydra je schopná prijať riešenie prvej vrstvy. Model Extended-UTxO a celú infraštruktúru inteligentných kontraktov prvej vrstvy je možné použiť v rámci Hydry. Transakcie Hydra pracujú priamo s UTxO na zmenu vlastníctva. Inteligentný kontrakt, ktorý je nasadený v blockchaine, sa môže vykonávať tak, ako je v hlave Hydry, a nedochádza k žiadnej konverzii údajov.

V jednoduchosti je sila.

Aby sme rozdiel videli jasnejšie, môžeme sa pozrieť na Ethereum. Ethereum používa na zápis inteligentného kontraktu v prvej vrstve Solidity. Keď sa má kontrakt preniesť do druhej vrstvy, musí sa konvertovať, pretože druhá vrstva nedokáže pracovať priamo so Solidity. Aby sa umožnila konverzia, musí sa upraviť samotný inteligentný kontrakt Solidity. Skriptovací jazyk blockchainu a druhej vrstvy sa výrazne líši. Konverzia je teda nevyhnutná.

V systéme Hydra nie je potrebná žiadna konverzia, pretože obe vrstvy dokážu používať rovnaký skriptovací systém. Hydra zavádza izomorfné viacstranové stavové kanály. V podstate to znamená, že stavové kanály používajú skriptovací jazyk podkladovej účtovnej knihy. Hydra zdedila skriptovací jazyk z blockchainu Cardano.

Stavové kanály umožňujú paralelné spracovanie transakcií a inteligentných kontraktov, ktoré sa deje mimo reťazca. Je možné otvoriť viac hláv Hydry. Hydra teda môže byť viachlavá. Každá novootvorená hlava predstavuje novú paralelnú jednotku. Po uzavretí stavového kanála môže byť stav hlavy bezproblémovo absorbovaný blockchainom. Je to jednoduchá a priamočiara úloha, pretože v reťazci aj mimo neho sa používa rovnaký kód inteligentného kontraktu. V Hydre je dokonca možné vytvoriť inteligentný kontrakt bez registrácie v blockchaine. Blockchain je schopný prevziať inteligentnú zmluvu a pokračovať v jej vykonávaní on-chain.

Hlav Hydry je viac.

Vďaka Hydre môže Cardano takmer lineárne škálovať. To znamená, že keď sa do siete pridajú nové zdroje, potom sa môže spracovať viac transakcií a inteligentných zmlúv. Zvyšuje sa tak výkonnosť. V prípade blockchainu to tak vždy nie je. Prinajmenšom to nie je také jednoduché.

Rozšírené UTxO

Používanie modelu UTxO v oboch vrstvách nie je zadarmo a obe vrstvy naň musia byť pripravené. Použitie izomorfných stavových kanálov vyžaduje schopnosť vziať časť stavu blockchainu, spracovať ju nezávisle mimo v Hydre a nakoniec ju vedieť zlúčiť späť do blockchainu. UTxO sa na to dobre hodí a dokáže reprezentovať stav na reťazci aj mimo reťazca. Tradičný model UTxO Bitcoinu sa však ťažko používa na spracovanie mimo reťazca, pretože má obmedzené možnosti skriptovania. IOHK zaviedol rozšírený model UTxO (EUTxO) a podporu pre všeobecný stavový stroj (budeme o ňom hovoriť neskôr). Rozšírený model UTxO a stavový stroj umožňujú bezpečný prenos medzi vrstvami bez obmedzenia skriptovania.

Prenos UTxO z blockchainu do hlavy Hydry koordinujú viaceré strany. Hovoríme o otvorení hlavy Hydry. Samotná hlava je názov protokolu druhej vrstvy. Na začiatku, po prenose, je počiatočný stav hlavy, ktorý sa vyvíja v protokole Head nezávisle od blockchainu. Strany posielajú transakcie, vykonávajú inteligentné zmluvy a spoločne udržiavajú spoločný stav. Vďaka izomorfnej povahe je možné používať rovnaké overovanie transakcií, pravidlá a vykonávanie skriptov v reťazci aj mimo neho.

Ktorákoľvek strana môže chcieť ukončiť protokol Head mimo reťazca. V takom prípade strany prenesú konečný stav Head späť do blockchainu. Stav blockchainu sa teda zodpovedajúcim spôsobom aktualizuje a je konzistentný so stavom finálnej hlavy.

Hydra umožňuje inkrementálne commitovanie a decommitovanie. To znamená, že UTxO možno pridať do hlavy Hydra alebo z nej odstrániť bez toho, aby bolo potrebné hlavu zatvoriť a znovu otvoriť. Je to veľmi praktické, pretože do projektu môže byť zapojených viac účastníkov a bolo by zbytočne režijné zatvárať Head len preto, že jeden účastník potrebuje pridať alebo odobrať prostriedky.

Stavový stroj

Pojem stavový stroj vám možno nie je známy. Zjednodušene povedané, ide o matematický model výpočtu. Je to abstraktný stroj, ktorý sa v danom čase môže nachádzať presne v jednom z konečného počtu stavov. Stavový stroj môže prejsť z jedného stavu do druhého v reakcii na určité vstupy. Zmena z jedného stavu do druhého sa nazýva prechod. Používa sa v rámci prvej vrstvy Cardano, aby bola absolútna istota, že prenos UTxO medzi vrstvami je spoľahlivý a bezpečný, pretože v každom okamihu existuje len jeden platný stav a prechod do ďalšieho stavu je deterministický.

Výber poschodia. Dvere sa zatvoria a výťah sa bude bezpečne pohybovať.

Predstavte si výťah. Výťah môže otvárať a zatvárať dvere. Môže sa tiež pohybovať o jedno poschodie nahor alebo nadol. Používatelia môžu používať tlačidlá, čo je vstup pre výťah. Výťah vie, či sú dvere zatvorené alebo otvorené a na ktorom poschodí sa nachádzajú. To sú tiež vstupy. Výťah sa nikdy nesmie pohybovať s otvorenými dverami. Bolo by to nebezpečné pre ľudí vo vnútri. Výťah sa bude pohybovať hore/dole len vtedy, keď sú dvere zatvorené. To je to, čo môže robiť stavový stroj. Sú definované platné prechody zo stavu do stavu. Výťah môže pracovať so stavmi: Dvere sú otvorené, dvere sú zatvorené, pohyb hore, pohyb dole, nečinnosť. Platný prechod zo stavu do stavu je: Dvere zatvorené → Pohyb nahor. Opíšme si situáciu z vyššie uvedeného obrázka. Vo výťahu sú ľudia. Stav je Dvere otvorené. Niekto stlačí tlačidlo. Je to vstup pre výťah, ktorého výsledkom je zatvorenie dverí. Stavový automat prepne stav na stav Dvere zatvorené. Potom je možné bezpečne prejsť do stavu Pohyb hore. Neplatná transakcia by bola: Dvere otvorené → Presun nahor. Stavový stroj výťahu zabezpečuje, že k neplatnému prechodu nikdy nemôže dôjsť. Inými slovami, zabezpečuje, aby sa mohli uskutočniť len definované a očakávané prechody. Trochu sme to zjednodušili, ale dúfame, že ste pochopili myšlienku.

Vráťme sa späť k Hydre. Bloková časť Hydry musí zabezpečiť dve veci:

  1. Stará sa o uzamknutie UTxO v blockchaine, keď sa UTxO prenášajú do Head. UTx0s zostávajú uzamknuté v blockchaine, kým je Head aktívny. To sa deje, keď sa má Head otvoriť.
  2. Keď má byť Head zatvorený, uľahčuje to vyrovnanie konečného stavu Hydry. Zabezpečuje, aby sa UTxO bezpečne preniesli späť do blockchainu a dekomitovali. Deje sa to, keď má byť Head uzavretý.

Stavový stroj sa stará o prenos UTxOs.

Tieto dve funkcie zabezpečujú, že UTxO, ktoré boli použité ako počiatočný stav Hlavy, sú nahradené UTxO, ktoré zodpovedajú konečnému stavu Hlavy.

UTxO sa uzamknú pri otvorení hlavice a odomknú pri jej zatvorení.

V rámci stavového stroja Hydra sa používajú štyri stavy: Počiatočný, Otvorený, Zatvorený a Konečný, a my sa na ne pozrieme bližšie hneď nižšie.

Je pravdepodobne zbytočné zaoberať sa stavovým strojom hlbšie. Dôležité je vedieť, že prenos UTxO medzi vrstvami je prísne a bezpečne definovaný. Konkrétne UTxO môže byť spracované buď blokovým reťazcom, alebo hlavou Hydry. Nikdy nie oboma vrstvami súčasne.

Protokol Hlavy

Ktorákoľvek strana môže iniciovať vytvorenie Hlavy Hydry tým, že požiada súbor strán o pripojenie. Každá strana vytvorí kanál so všetkými ostatnými stranami. Ak to nie je z nejakého dôvodu možné, vytvorenie hlavy sa preruší. Strany si vymieňajú materiál s verejným kľúčom prostredníctvom vytvorených kanálov. Materiál s verejným kľúčom sa používa na overovanie transakcií súvisiacich s hlavou v reťazci, pretože to môžu robiť len členovia hlavy. Materiál sa používa aj na potvrdzovanie udalostí v hlave na základe viacerých podpisov.

Iniciátor hlavy zakladá hlavu predložením počiatočnej transakcie do blockchainu. Vytvoria sa špeciálne tokeny a pridelia sa všetkým členom Head. Verejné kľúče členov Head tak môžu byť prepojené s tokeny. V tomto okamihu sa zapája stavový stroj a stará sa o bezpečný prenos UTxO z blockchainu do hlavy. Prvým stavom je počiatočný stav. V tomto bode môžu všetci členovia Head odovzdať UTxO do Head. Ak niektorý člen Head neodošle transakciu commit, potom sa stav prepne priamo z Initial do Final a Head sa neotvorí. Predpokladajme, že všetkým členom sa podarilo odoslať transakciu commit. V tomto prípade sú UTxO uzamknuté v rámci blockchainu, aby s nimi mohli členovia Head pracovať. Členovia Hlavy môžu začať používať UTxO v rámci Hlavy, keď stavový stroj prepne stav na Otvorené. Od tohto momentu sa UTxO začnú vyvíjať mimo reťazca.

V ktoromkoľvek okamihu, keď je Head otvorený, môže ktorákoľvek strana iniciovať uzavretie Head. Stavový automat prepne stav na Close (zatvoriť). Nastáva obdobie spochybňovania, počas ktorého strany poskytujú svoj konečný stav, ktorým je ich súbor UTxO. Po uplynutí obdobia spochybňovania stavový automat prepne stav na Konečný. Podobne ako na začiatku sa stavový stroj postará o bezpečný prenos sady UTxO, ktorá zodpovedá konečnému stavu Head, späť do blockchainu.

Pozrime sa na spracovanie transakcií v Head. Protokol Head je asynchrónny a dokáže spracovávať transakcie paralelne. Každá strana si udržiava vlastný konečný stav UTxO. Protokol Head zhromažďuje a distribuuje viacero podpisov na každej vydanej transakcii. Po potvrdení transakcie sa stáva súčasťou posledného platného stavu UTxO. Posledný platný stav UTxO je nezvratný, preto je možné jednotlivé UTxO okamžite minúť. Vzhľadom na asynchrónne spracovanie sa môže konečný stav strany navzájom líšiť. UTxO sa vyvíja v čase od počiatočnej fázy. Každá strana uplatňuje všetky transakcie, ktoré boli potvrdené v hlave, a tak sa konečný stav môže neustále meniť.

Protokol Head neuchováva históriu transakcií, aby sa minimalizovalo lokálne ukladanie strán. Namiesto uchovávania histórie sa neustále generujú snímky UTxO. Vždy je vybraný vedúci snímky, ktorý ponúka svoj pohľad na potvrdený stav. Ostatné strany potvrdia stav podpisom a výsledkom je vygenerovanie nového snímku. Na rozdiel od asynchrónneho spracovania transakcií sa snímky generujú sekvenčne. Po potvrdení novej snímky môžu strany vymazať všetky transakcie, ktoré boli spracované a sú súčasťou novej snímky. Potvrdený stav strany je vždy pred poslednou potvrdenou snímkou. Nie je teda potrebné čakať na potvrdenie niektorej transakcie, aby bolo možné potvrdiť nový návrh snímky. Snímka odráža konečný stav vedúceho, ktorý bol potvrdený všetkými členmi vedúceho.

Chcete získať viac informácií? Článok o Hydre si môžete prečítať na blogu IOHK:

Zhrnutie

Hydra umožní to, čo je absolútne nevyhnutné pre ďalšie prijatie kryptomien, a to je vysoká škálovateľnosť. Bez tejto vlastnosti je globálny systém v podstate nepoužiteľný, pretože keď ho ľudia budú chcieť začať používať, zistia, že musia dlho čakať na vyrovnanie transakcie. A často si aj priplatia. Hydra mení pravidlá hry. Okrem posielania transakcií umožňuje aj vykonávanie inteligentných kontraktov. Všetko je navyše v porovnaní s konkurenciou veľmi bezpečné vďaka priamemu využitiu UTxO.

Odkaz na pôvodný článok: Hydra: Cardano scalability solution | Cardanians