🇨🇿 Hydra: řešení škálovatelnosti projektu Cardano

Překlad do češtiny z AJ originálu

Hydra: řešení škálovatelnosti projektu Cardano

Kryptoměny přišly na svět aby se staly alternativou k současnému finančnímu systému. Proto musí být uživatelé schopni platit v obchodě tak rychle, jako s kreditní kartou. To znamená, že transakce musí být vyřízena během několika sekund. Síť Visa zpracovává každý den v průměru 150 milionů transakcí. Co se týče propustnosti, je Visa schopna vyřídit 2 000 transakcí za sekundu (TPS). Taková propustnost je pro současné blockchain sítě nedosažitelná. Běžná propustnost PoW sítí je obvykle jen několik desítek TPS. PoS sítě mohou dosáhnout několika stovek TPS, co že o dost lepší, ale stále dost málo.

Distribuované sítě obecně trpí nízkou škálovatelností, nízkou propustností a vyžadují nadměrný úložný prostor nezbytný pro udržení aktuálního stavu systému a jeho transakční historie. Po asi 5 letech interdisciplinárního výzkumu v IOHK byla vydána studie o Hydře. Vědci a výzkumníci z oblastí teorie sítí, multi-party computation, programovacího jazyka a síťového konsensu museli spolupracovat, aby přišli s řešením škálování, které dobře zapadá do blockchainu a současně podporuje inteligentní smlouvy (smart kontrakty). Je to významný vědecký úspěch a významný mezník ve vývoji Cardana. Ouroboros Hydra přináší nové možnosti ve škálovatelnosti PoS. S Hydrou se Cardano může stát alternativou k současným fiatovým penězům.

Hydra je druhá vrstva nad první vrstvou Cardana, kde se používá PoS konsenzus. Hydra je navržena tak, aby dobře zapadla do modelu skake poolů. Tým IOHK představil rozšířený model UTxO, který umožňuje sharding na úrovni stake prostoru, aniž by bylo nutné zavést sharding ledgeru samotného. Stále je však otevřená cesta pro zavedení shardingu na úrovni ledgeru a Hydra je “jen” doplňkovou součástí celého škálovacího řešení. Každý pool může vytvořit novou hlavu Hydry (Hlava = Head), takže přidání dalších poolů znamená, že lze přidat více hlav. Přidáním nových hlav do protokolu lze tedy dosáhnout téměř lineárního škálování. Byly provedeny simulace a výsledky jsou skvělé. Každá hlava Hydra může zpracovat kolem 1 000 TPS a je zde další prostor pro další optimalizaci. Takže s 1 000 pooly by Cardano mohlo teoreticky dosáhnout až 1 milionu TPS a finalita transakcí bude velmi rychlá.

Nevadí, pokud nerozumíte něčemu co bylo napsáno výše. Pojďme se nyní zavrtat do technických detailů.

Poznámka: Anglická verze je pro pochopení rozhodně lepší a je doplněna mnoha obrázky.

JAKÝ JE VZTAH MEZI CARDANO BLOCKCHAINEM A HYDROU

Možnosti první vrstvy budou vždy omezeny z hlediska počtu transakcí zpracovaných v daném časovém období. Pokud nemá býty obětována decentralizace, nebude propustnost nikdy dostatečná k tomu, aby umožnila velkému počtu lidí používat konsensuální distribuovanou síť. Řešením může být vytvoření druhé vrstvy nad první vrstvou. První vrstva je to, čemu říkáme blockchain. Je to nejbezpečnější a decentralizovaná síť s nižší propustností. Nad touto první vrstvou je možné vytvořit kvazi nezávislou síť, druhou vrstvu.

Druhá vrstva je postavena tak aby umožnila vysokou škálovatelnost a transakce byli rychlé a levné. Protože bezpečnost první vrstvy je zajištěna blockchainem a distribuovaným konsensem, říkáme, že transakce jsou zpracovávány takzvaně onchain. Uživatelé budou moci převádět prostředky z první vrstvy do druhé vrstvy. Transakce ve druhé vrstvě jsou tedy zpracovány mimo blockchain, takzvaně offchain. První vrstva tedy neověřuje transakce, které se uskutečňují ve druhé vrstvě.

Ukažme si to příkladu. Alice, Bob a Carol mají vždy 10 ADA mincí v blockchainu, tedy v první vrstvě. Celkem je to dohromady 30 mincí. Existuje speciální mechanismus, který umožňuje převod mincí do druhé vrstvy. V našem případě do Hydry. Přesněji řečeno, otevře se hlava Hydry. V hlavě Hydry si všichni účastníci vyměňují mince prostřednictvím transakcí. Jakmile je hlava Hydry zavřená, blockchain převezme pouze poslední platné rozdělení mincí z druhé vrstvy. Později budeme detailněji probírat převod mincí mezi vrstvami.

Blockchain může snadno ověřit, že z hlavy Hydry se vrací 30 mincí zpět do blockchainu. Takže přesně stejné množství, které bylo převedeno do blockchainu během otevírání hlavy. Vlastnictví mincí se mohlo ve druhé vrstvě změnit, takže například nyní Alice má 20 mincí a Bob s Carol mají mincí 5. Výhodou je, že ve druhé vrstvě může probíhat velké množství rychlých transakcí mezi mnoha uživateli a blockchain se s tím nemusí přímo zaobírat.

Alice, Bob a Carol spolu mohou komunikovat přímo v hlavě Hydry. Děje se to tak, že je možné zapomenout na historii transakcí. Strany se vzájemně informují o lokálních stavech a jakmile je mezi všemi stranami potvrzen jeden platný stav, může být historie transakcí vymazána. V hlavě Hydry je tedy zachováván pouze poslední platný stav, který se používá, když mají být prostředky převedeny zpět do blockchainu. Budeme o tom také podrobněji hovořit později.

STAVOVÉ KANÁLY HYDRY

Hydra používá stavové kanály, které rozšiřují koncept platebních kanálů. Strany udržují stavové kanály, aby udržely jeden společný stav, a jsou schopny se na tom dohodnout bez interakce s blockchainem.

Hydra není jen o převodu finančních prostředků, ale také o provádění inteligentních smluv. Proto je nutné pracovat se stavy. Například je možné vytvořit inteligentní smlouvu v první vrstvě a přenést ji do hlavy Hydry, kde může být vykonána.

Chytrou smlouvu si můžete představit jako program nebo sled určitých operací, které jsou prováděny podmíněně. To znamená, že operace je provedena, pouze pokud nastala nějaká očekávaná událost. Pokud ne, může být provedena jiná operace. Můžeme mluvit o realizaci inteligentní smlouvy řízené událostmi. Inteligentní kontrakt je v určitém okamžiku v určitém stavu, který se postupně podmíněně mění, pokud je aktivní a události způsobují změny.

Představte si sázkovou kancelář, kde si lidé mohou vsadit na výsledek zápasů. Inteligentní smlouva bude moci uzamknout vklady všech účastníků a poté spravedlivě rozdělit výhry na základě výsledků zápasů. Pokud to zjednodušíme, smlouva bude v několika stavech pro každý jednotlivý zápas.

  • Kolekce vkladů sázkařů a jejich tipy na výsledek zápasu.

  • Uzavření kolekce stavů krátce před zápasem.

  • Čekání na výsledek zápasu.

  • Zpracování výsledku zápasu a kalkulace výher.

  • Distribuce výher výhercům.

Inteligentní smlouva může být realizována v Hydře a může být použita pro více zápasů v řadě. Blockchain tedy nemusí ukládat všechny transakce související se sázením. V Hydře lze navíc zapomenout na celou historii. Po rozdělení výher výhercům po zápase mohou být smazány všechny stavy a transakce. Samozřejmě kromě konečného stavu. Předpokládejme, že inteligentní smlouva byla vytvořena pro fotbalovou sezónu. Po skončení sezóny může být hlava Hydry zavřená a vše, co bude převedeno do blockchainu je finální stav mincí.

Koncept stavových kanálů není nový a dokonce už existují některé implementace. Mají však některé vážné nevýhody. Největší nevýhodou je, že infrastruktura první vrstvy a kód inteligentních smluv, který je napsán pro infrastrukturu první vrstvy, nelze v druhé vrstvě použít beze změn. Tyto změny, které jsou potřebné pro převod finančních prostředků a inteligentních smluv mezi vrstvami, mohou být velmi nebezpečné.

Blockchain obvykle používá model UTxO (Unspent Transaction Output). UTxO je v podstatě abstrakce mincí. Každé UTxO představuje řetězec vlastnictví implementovaný jako řetězec digitálních podpisů, kde vlastník používá soukromý klíč k podpisu transakce, která převádí vlastnictví jejich UTXO na veřejný klíč příjemce. Jak jsme řekli, pro jednoduchost si můžete představit UTxO jako reprezentaci mincí. Váš počet mincí je definován počtem UTxO, který máte v peněžence na vašich adresách.

UTxO model je považován za velmi bezpečný způsob, jak zacházet s prostředky v blockchainu. Současná řešení druhách vrstev nemohou pracovat přímo s UTxO. Mince jsou tedy zastoupeny zcela jiným způsobem. Současné druhé vrstvy tak ztrácí důležitý bezpečnostní prvek. Totéž platí pro provádění inteligentních smluv, kde musí dojít k převodu informací. A to může být velmi nebezpečné.

Hydra výrazně zjednodušuje řešení druhých vrstev. Hydra je schopna zcela bez změn přijmout řešení první vrstvy. V Hydře lze použít Extended-UTxO model a celou infrastrukturu první vrstvy pro smart kontrakty. Inteligentní smlouva, která je nasazena v blockchainu, může být realizována tak, jak je, v hlavě Hydry a nedochází k žádné konverzi dat.

Abychom viděli rozdíl jasněji, můžeme se podívat na Ethereum. Ethereum používá Solidity pro psaní inteligentní smlouvy v první vrstvě. Když má být smlouva převedena do druhé vrstvy, musí proběhnout konverze dat, protože druhá vrstva nemůže přímo pracovat s kódem Solidity. Aby ji bylo možné převést, musí být k tomu dokonce přizpůsobena inteligentní smlouva napsaná v Solidity. Skriptovací jazyk blockchainu a druhých vrstev se výrazně liší. Takže tyto nebezpečné konverze jsou nezbytné.

V Hydře není nutná konverze, protože obě vrstvy jsou schopny používat stejný skriptovací systém. Hydra představuje izomorfní vícestranné stavové kanály. V podstatě to znamená, že skriptovací jazyk ledgeru je používán stavovými kanály.

Stavové kanály umožňují paralelní zpracování transakcí a inteligentních smluv, k nimž dochází mimo blockchain (offchain). Je možné otevřít více hlav Hydry. Hydra tedy může mít více hlav. Každá nově otevřená hlava představuje novou paralelní jednotku. Jakmile je stavový kanál uzavřen, může být stav hlavy plynule absorbován blockchainem. Je to snadný a přímočarý úkol právě díky využití stejné infrastruktury. V Hydře je dokonce možné vytvořit inteligentní smlouvu bez registrace v blockchainu. Blockchain je schopen převzít inteligentní smlouvu a pokračovat v jejím provádění v blockchainu.

Díky Hydře může Cardano škálovat téměř lineárně. To znamená, že když jsou do sítě přidány nové zdroje, lze zpracovat více transakcí a inteligentních smluv. Tím se zvýší výkon sítě ve smyslu škálování. To v případě blockchainu neplatí.

EXTENDED UTXO

Použití modelu UTxO v obou vrstvách není zadarmo a musí na něj být připraveny obě vrstvy. Použití izomorfních kanálů vyžaduje schopnost převzít část stavu blockchainu, zpracovat jej nezávisle offchain v Hydře, a nakonec je potřeba převést výsledek zpět do blockchainu. UTxO se k tomu hodí velmi dobře. Tradiční bitcoinový UTxO model je však obtížně použitelný pro zpracování mimo řetězec, protože má omezené možnosti skriptování. IOHK představila model Extended UTxO (EUTxO) a podporu pro stavovou mašinu (probereme jej později). Model Extended UTxO a stavová mašina umožňují bezpečný přenos mezi vrstvami a skriptovací jazyky nejsou limitací.

Převod UTxO z blockchainu do hlavy Hydry je koordinován několika stranami. Mluvíme o otevření hlavy Hydry (nebo také Head - Hlava). Head sám je název protokol druhé vrstvy. Na začátku, po přenosu, existuje počáteční stav hlavy, který se dále vyvíjí v Head protokolu nezávisle na blockchainu. Strany zasílají transakce, provádějí inteligentní smlouvy a společně udržují jeden společný stav. Vzhledem k izomorfní povaze lze stejnou validaci transakcí, pravidla a provádění skriptů použít v řetězci i mimo něj (onchain i offchain).

Kterákoli strana může chtít ukončit hlavu. V tomto případě strany převedou konečný stav hlavy zpět do blockchainu. Stav blockchainu je tedy odpovídajícím způsobem aktualizován a je v souladu s konečným stavem hlavy.

Hydra umožňuje postupné odevzdání a zrušení závazků (commit/decommit). To znamená, že UTxO lze přidat nebo vyjmout z hlavy Hydry bez uzavření a opětovného otevření hlavy. To je velmi užitečné, protože v Hlavě může být více účastníků a bylo by zbytečné a na výkon zbytečně náročné zavírat hlavu jen proto, že jeden účastník potřebuje přidat nebo odebrat finanční prostředky.

STAVOVÁ MAŠINA

Možná nebudete obeznámeni s pojmem státní stroj. Jednoduše řečeno, je to matematický model výpočtu. Je to abstraktní stroj, který může být v daném okamžiku přesně v jednom z konečných čísel. Stavový stroj se může v závislosti na některých vstupech změnit z jednoho stavu do druhého. Změna z jednoho stavu do druhého se nazývá přechod. V první vrstvě Cardano se používá k naprosté jistotě, že přenos UTxO mezi vrstvami je spolehlivý a bezpečný, protože v každém okamžiku existuje pouze jeden platný stav a přechod do dalšího stavu je deterministický.

Bloková část Hydry musí zajistit dvě věci:

  • Postará se o uzamčení UTxO v blockchainu, protože UTxO jsou přeneseny na hlavu. UTx0s zůstávají uzamčeny v blockchainu, zatímco je hlava aktivní. Stává se to, když má být hlava otevřena.

  • Když má být hlava uzavřena, usnadňuje to urovnání konečného stavu Hydry. Zajišťuje, že UTxOs jsou bezpečně přeneseny zpět do blockchainu a zrušeny. Stává se to, když má být hlava zavřená.

Tyto dvě funkce zajišťují, aby byly UTxO, které byly použity jako počáteční stav hlavy, nahrazeny UTxO, které odpovídají konečnému stavu hlavy.

Ve stavovém automatu Hydry se používají čtyři stavy: Počáteční, Otevřený, Uzavřený a Konečný a my se na to podíváme blíže níže.

Pravděpodobně není nutné jednat se státním strojem hlouběji. Je důležité vědět, že přenos UTxO mezi vrstvami je přísně a bezpečně definován. Konkrétní UTxO lze ovládat buď blockchainem, nebo hlavou Hydry. Nikdy oběma vrstvami současně.

HEAD PROTOKOL

Kterákoli strana může zahájit vytvoření hlavy Hydry tím, že požádá skupinu účastníků o připojení. Každá strana zřídí kanál se všemi ostatními stranami. Pokud to z nějakého důvodu není možné, je vytvoření hlavy přerušeno. Strany si vyměňují materiál spojený s veřejnými klíči prostřednictvím zavedených kanálů. Tento materiál se pak používá k ověřování transakcí souvisejících s blockchainem, protože to mohou provádět pouze členové hlavy. Materiál se také používá pro potvrzení události v hlavě.

Iniciátor otevírající hlavu pošle počáteční transakci do blockchainu. Na základě toho jsou vytvořeny speciální tokeny a přiřazeny všem členům Hlavy. Veřejné klíče členů tak mohou být spojeny s tokeny. V tomto okamžiku se stavová mašina zapojí do procesu a postará se o bezpečný přenos UTxO z blockchainu do Hlavy. První stav je Initial. V tomto okamžiku mohou všichni členové Hlavy vložit UTxO do Hlavy. Pokud některý z členů neodešle potvrzovací transakci, pak se stav přepne přímo z počátečního na konečný a hlava nebude otevřena. Předpokládejme, že se všem členům podařilo odeslat počáteční transakci. V tomto případě jsou UTxO uzamčeny v blockchainu, aby s nimi mohli členové Hlavy dále pracovat offchain. Členové hlavy mohou začít používat UTxO v hlavě, jakmile stavový stroj přepne stav na Open. Od tohoto okamžiku se UTxO začnou dále vyvíjet mimo blockchain.

Kdykoli je otevřena Hlava, může kterákoli strana zahájit uzavření. Stavový stroj přepne stav na Close. Existuje určité soutěžní období, během kterého strany poskytují svůj konečný stav, což je jejich sada UTxO. Jakmile uplyne toto soutěžní období, stavový stroj přepne stav na Final. Podobně jako na začátku se stavový stroj stará o bezpečný přenos sady UTxO, která odpovídá konečnému stavu Hlavy, zpět do blockchainu.

Pojďme se podívat na zpracování transakcí v hlavě. Protokol Head je asynchronní a dokáže zpracovávat transakce paralelně. Každá strana si udržuje svůj konečný stav UTxO. Protokol Head shromažďuje a distribuuje multisig pro každou vydanou transakci. Jakmile je transakce potvrzena, stává se součástí posledního platného stavu UTxO. Poslední platný stav UTxO je nevratný, takže jednotlivé UTxO lze okamžitě utratit. V důsledku asynchronního zpracování se konečný stav jednotlivých členů Hlavy liší. Každý člen zařadí všechny transakce, které byly potvrzeny v hlavě, a tak se konečný stav může lokálně neustále měnit.

Protokol Head neudržuje historii transakcí, aby minimalizoval nároky na lokální datové úložiště. Místo udržování historie jsou neustále generovány nové snímky (snapshots) UTxO. Vždy je vybrán vedoucí snímku, který nabízí jeho pohled na potvrzený stav. Ostatní strany potvrzují stav podpisem a výsledkem je vygenerování nového snímku. Na rozdíl od asynchronního zpracování transakcí je snímek generován postupně (sekvenčně). Po potvrzení nového snímku mohou strany smazat všechny transakce, které byly zpracovány a jsou součástí nového snímku.

ZÁVĚR

Hydra umožní to, co je naprosto nezbytné pro další adopci kryptoměn, a to je vysoká škálovatelnost. Bez této funkce je globální systém v podstatě nepoužitelný, protože jakmile ho lidé začnou používat, zjistí, že musí dlouho čekat na zpracování transakcí. A často také platit něco navíc. Hydra změní pravidla hry. Kromě odesílání transakcí také umožňuje provádění inteligentních smluv. Díky přímému použití UTxO je navíc vše ve srovnání s konkurencí velmi bezpečné.