Hlavní navigace

Ethereum 2.0 se blíží a s ním i velký nárůst propustnosti sítě. Co přinese?

 Autor: DepositPhotos
Navzdory pandemii a návazné panice na kryptotrzích Ethereum Foundation chystá nejočekávanější událost ve světě veřejného blockchainu – přechod Etherea do fáze Serenity, označované též Ethereum 2.0.
Karel Wolf 21. 4. 2020
Doba čtení: 9 minut

Sdílet

Přestože se příchod Serenity/Ethereum 2.0 neustále posouvá (původně měla být spuštěna již letos v lednu, hlavní testnet nicméně běží již rok), neznamená to, že by se na něm aktivně nepracovalo nebo že by nadace svůj plán na letošní spuštění největšího upgradu Ethereum sítě v jeho dosavadní historii pro letošek odpískalo. Jeho červencové spuštění vypadá nyní dokonce poměrně reálně.

Ethereum 2.0 v kostce
Ethereum 2.0 je na letošní rok plánovaný upgrade současné Ethereum sítě, který přinese přechod na nový algoritmus distribuovaného konsenzu – nahradí důkaz prací (proof of work, tedy těžbu) takzvaným stakovaním (proof of stake, tedy uzamčením určitého podílu vlastněného Etherea v síti) a na něm založeném hlasovacím právu. Vedle přechodu na nový mechanismus konsensu přináší rozdělení původního blockchainu na vzájemně propojené sub-blockchainy (shardy) a řídicí beacon chain, což by mělo výrazně zlepšit možnosti transakčního škálování.

Minulý měsíc (březen) přinesl nejen eskalaci koronavirové pandemie, ale také úspěšně dokončený audit specifikace celého protokolu ETH 2.0 od společnosti Least Authority (Ethereum 2.0 Specifications Security Audit Report). Předběžný audit, který měl odhalit slabiny a omezení designu, dopadl navzdory velkým obavám překvapivě dobře a otevřel tak cestu k ostrému nasazení. Jediné, co audit tvůrcům vytkl, byla velmi málo zdokumentovaná část protokolu s peer-to-peer (zejména P2P messaging systém by mohl představovat možný nový vektor útoku) vrstvou a systémem ENR (Ethereum Node Records) záznamů. (A také trochu alibisticky vzpomíná, že v praxi dosud nikdy v takové škále proof of stake a sharding netestoval.)

Během dubna (ve čtvrtek 16. 4.) tak společnost Prysmatic Labs (technický tým pracující na technické infrastruktuře pro Ethereum 2.0) zpřístupnila v pořadí třetí verzí testnetu (Topaz) sítě, a pokud se na ní neobjeví závažnější problémy, můžeme v dohledné době očekávat již jen fázi Diamant, což není nic jiného než ostré spuštění mainnet Ethereum 2.0 sítě.       

Proč jsou od Ethereum 2.0 tak vysoká očekávání

Ethereum se vidí jako decentralizovaná open-source platforma pro hostování chytrých kontraktů a Ethereum blockchain, který nese řadu podobností s tím bitcoinovým, ale v zásadních věcech se liší. Je navržený tak, aby dokázal spustit chod programového kódu a hostovat chod jakékoli decentralizované aplikace. Tedy, tolik alespoň teorie, síť díky své popularitě poměrně rychle narazila na své limity a hodně věcí na ní dnes zkrátka provozovat nelze, a to bez ohledu na ochotu si jejich chod náležitě zaplatit.   

Současné Ethereum je druhý největší veřejný blockchain podle tržní kapitalizace své nativní kryptoměny a má zhruba dvojnásobek aktivních vývojářů vůči Bitcoinu a čtyřnásobek oproti většině zbývajících největších konkurentů (viz data Dev Reportů od Electric Capital z loňského roku). 

S Ethereem také dávno nepracují pouze pionýři krypto-průmyslu, čím dál více aplikací a nadstaveb pro Ethereum tvoří firmy z tradičního byznysu. Jako jeden příklad za všechny můžeme zmínit nezávisle na sobě vzniklé implementace Zero-Knowledge Proof pro Ethereum, první od EY (je součástí frameworku EY Ops Chain Public Edition), druhé od ING Bank, obě otevírající dveře masivnějšímu nasazení platformy v korporacích. 

Zálohovací a disaster recovery gigant Acronis zase využívá blockchain Etherea jako podkladovou vrstvu pro svoji službu Notary Cloud, která slouží k notarizaci dat, elektronickému podepisování a verifikaci souborů v enterprise měřítku. Existuje dokonce  konsorcium pro standardizaci ethereum aplikací pro byznysové použití (Enterprise Ethereum Alliance), které dnes již čítá stovky členů, mezi kterými nechybí jména jako Microsoft, JPMorgan Chase, Santander, Accenture, ING, Intel nebo Cisco.

Všechny naděje a energie, které jsou ale do Etherea vkládány, zatím stály vždy na nevyřčeném předpokladu, že Ethereum vyřeší svůj dlouhodobý problém se škálováním a bezpečností. Zatímco bezpečnost Etherea nikdy nebude z principu úplně dokonalá, a to z důvodu turing-complete povahy jeho programovacího jazyka, a vytváří tak prostor pro trh s profesionálními bezpečnostními audity a pojištěním, škálování sítě problém řešitelný je, ne ale při zachování současné podobny blockchainu. A tady právě nastupuje první velká očekávaná změna Etherea 2.0 – sharding.

Díky němu a navázaným změnám a dalším vrstvám by mělo být Ethereum v příštích několika letech schopné podporovat řádově větší provoz a množství uživatelů. Současné Ethereum zvládá procesovat 7–25 transakcí za vteřinu. To je vzhledem k tomu, že se nejedná primárně o systém na převádění neutracených transakcí jako Bitcoin, ale je od počátku koncipován coby platforma pro hostování chytrých kontraktů a chod decentralizovaných aplikací (decentralizovaný světový počítač), vyloženě nešťastné a dlouhodobě neudržitelné.

Hlavní viditelnou změnou, kterou Ethereum 2.0 (vedle přechodu na algoritmus distribuovaného konsenzu jménem Casper, který je založený na proof of stake) přináší, je proto takzvaný sharding, který by měl škálovatelnost etherového blockchainu masivně zlepšit. Je to ovšem něco za něco. O co jde, jak funguje a proč je kolem něho taková kontroverze? 

Malá odbočka k proof of stake

Jednou věcí, na kterou je zvědavý celý svět točící se kolem veřejných blockchainů a kryptoměn, je přechod ethereové sítě na proof of stake konsensus, který v takové míře (a na tak velkém a aktivním blockchainu) zatím nasazen nebyl, to je ale spíše, řekněme, nutný předpoklad k tomu ostatnímu, a ne hlavní důležitá změna sama o sobě (byť by ekonomika PoS systému ETH 2.0 vydala na samostatný článek), proto jej zde přejdeme jen stručně.

PoS systémy jsou často, zejména lidmi z bitcoinové komunity, kritizovány za to, že si v nich své rozhodovací právo nekupujete za náklady, které jste museli vynaložit mimo systém, ale za vklad, který je od počátku součástí systému (typicky nativní token), takže je systém méně bezpečný. Realita je nicméně taková, že například malé PoS a PoW blockchainy se ukazují nebezpečné přinejmenším stejně. V míře, jakou nyní plánuje nasadit Ethereum 2.0, nicméně PoS zatím otestovaný nebyl.

Principiální rozdíl PoW a PoS je ten, že PoW odměňuje hlasující uživatele sítě za to, že dělají správnou věc, kdežto PoS spoléhá spíše na to, že vás potrestá, pokud uděláte věc špatnou. U PoW systému musíte vynaložit vysoké náklady (čím vyšší, tím je síť bezpečnější), abyste získali v rámci systému kýženou odměnu, u PoS jsou naopak náklady na získání odměny nízké, ale systém tvrdě trestá za pokus o podvod.

Ethereum 2.0 sharding design v kostce

Jak napovídá již samotný název, který pochází z databázového světa, hlavní smysl shardingu je rozbít jeden rychle bobtnající blockchain, ze kterého se stalo úzké hrdlo, na množství menších částí (shardů), co se tím ale vlastně přesně získá? Když se sharduje normální databáze, rozdělí se velká databáze na větší množství menších zlomků, které je možné následně snadno spravovat, a díky tomu rapidně vzroste rychlost přístupu k jednotlivým položkám. U blockchainu to nicméně tak jednoduché není. Přestože se o něm často jako o databázi mluví, má velmi specifickou strukturu a funguje trochu jinak. Shardovat lze u blockchainu v zásadě dvě věci, zpracování transakcí, nebo stav blockchainu. Ethereum 2.0 se snaží o obojí, výsledkem by měla být schopnost provádět přes 10 000 transakcí (s pomocí dalších vrstev pak i násobně více) za vteřinu, a to bez rizika rostoucí centralizace nodů.

Velmi zjednodušeně řečeno dnes musí postupně každý node ověřit každou transakci. To je součást bezpečnostního designu blockchainu a zajišťuje dostatečnou redundanci, aby síť fungovala i při výpadku velké části sítě, nicméně tím dochází k značnému plýtvání se zdroji (byť záměrnému) a vzniká předpoklad pro vytvoření úzkého hrdla (místa, kde se transakce shromažďují před vytěžením). Sharding pracuje s ideou, že se nody využijí efektivněji. Síť se rozdělí na optimální počet shardů, který představuje rozumný kompromis mezi efektivitou a bezpečností (zatím se počítá s návrhem 1024 shardů), a každý z nich bude ověřovat jinou část čekajících transakcí. Protože na samotném řazení čekajících transakcí do bloku ani jeho velikosti se nic nemění, vzroste touto paralelizací průchodnost sítě více jak tisícinásobně. V případě nasazení dalších vrstev, jako jsou zk-rollupy nebo plazma, navíc celková transakční propustnost ještě dále poroste.

Potud alespoň velmi zjednodušená teorie, ve které vše ideálně funguje. Shardování blockchainu je naneštěstí cokoli jiného než jednoduché. Problém je například to, jak zajistit, aby při simultánním zpracovávání transakčních subsetů docházelo zároveň ke správnému aktualizování stavu sítě a zároveň bylo zajištěno, že bude takto získaný stav sítě platný (vzpomeňme si, jaké manévry kolem toho dělá veřejný blockchain normálně) a definitivní (problém, který běžně řeší nákladný kumulovaný proof of work, který ale u ETH 2.0 zcela chybí). Systém proto musí obsahovat mechanismus, který bude na jedné straně rozdělovat odpovědnosti, na té druhé pak zajišťovat, že všechna data zůstanou platná a jejich stav konečný, jako je tomu u současného Ethereum blockchainu. Sám o sobě se přitom nesmí stát dalším vektorem útoku a centralizovaným bodem možného selhání celého systému.

V principu by to mělo fungovat tak, že všechny uživatelské účty budou vždy přiděleny konkrétnímu shardu a v rámci nich bude probíhat všechno podobně jako doposud (síť se rozdělí na množství etherových mini-blockchainů). Komplikovat se to ale začíná v okamžiku, kdy dochází k vytváření finálního stavu. Aby jej bylo možné vůbec poskládat, budou muset transakce na začátku projít seskupením do jakýchsi transakčních balíčků, podle automatického optimalizačního procesu. Ty následně projdou procesem dvojité validace a teprve pak se mohou připojit k hlavní síti.

Protože zde nefunguje proof of work, tedy ověřování neprovádí miner, který zrovna uhádl nonci, funguje zde princip validace transakcí hlasováním přiřazených validátorů. Bezpečnost a nestrannost je během tohoto procesu vynucena několik přidanými procesy. Za prvé platí, že jsou validátoři k shardu přiřazování náhodně a pravidelně se mění. Pokud validátoři transakční blok schválí, musí jej ještě před zařazením do hlavního blockchainu schválit separátní samostatný výbor na hlavním (tzv. beacon) chainu, to probíhá pomocí dalšího hlasování pomocí smart kontraktu pojmenovaného sharding manager. Teprve pokud projde i toto hlasování, vznikne křížová vazba mezi shardem a hlavním chainem, a transakční blok se tak stává trvalou součástí blockchainu. Podobně jako u řetězce hashí neshardovaného blockchainu, jakmile by verifikační mechanismus odhalil, že je některá z vazeb neplatná, stává se neplatným celý blockchain. 

Logika náhodného přiřazování validátorů k shardu je taková, že pokud nebude potenciální útočník vědět, kam bude přiřazen, nemůže spolu s ostatními útočníky včas naplánovat a zkoordinovat útok, čímž by měla být teoreticky vynucena dostatečná bezpečnost. Samotný beacon chain by měl mít do budoucna ještě další funkce než řízení celého procesu a garanci nahodilosti při ověřování a transakční finality, ty jsou ale zatím ještě hudbou daleké budoucnosti.

Proč je sharding kontroverzní

V rámci našeho popisu shardingu jsme se zatím zabývali hlavně rozdělením blockchainu na shardy a jejich komunikací s hlavním chainem (beacon chainem), aby ale systém skutečně fungoval tak svižně a efektivně, jak je zamýšleno, musí být také schopný provádět relativně rychle a bezpečně transakce přímo mezi jednotlivými shardy a umět si navzájem na data odkazovat, a to všechno při zachování perfektní integrity sítě. Existuje více přístupů, jak lze tento problém řešit, žádný ale není úplně univerzální a praktický pro všechny reálně hrozící scénáře. Problematika efektivní a přitom bezpečné komunikace mezi shardy při zachování integrity celé sítě je ale natolik komplexní, že se do článku nevejde (musel by mít dvojnásobnou délku).

MIF obecny

Sharding přináší i jiné problémy. Jedním z nich je výzva, jak například zajistit v daném okamžiku přesné informace o stavu celé sítě pro lehké klienty, nebo včasná detekce podvodů. Sharding přináší do systému mnohem větší míru komplexity (nemáme již co do činění s jedním blockchainem, ale celým systémem chainů), což přinejmenším z bezpečnostního hlediska, ale také co do předvídatelnosti chování, nikdy nebyla úplně dobrá zpráva.

Také je to zároveň zajímavý paradox, neboť oficiálními cíli přechodu od dnešního Etherea na Ethereum 2.0 bylo dosažení větší decentralizace, odolnosti, bezpečnosti a dlouhodobé udržitelnosti a jednoduchosti. Nad každým z těchto bodů ale maluje příchod shardingu malý otazník.