Jednou budem dál, zní ve známém protestsongu. A opakuje si to i komunita kolem druhé nejpopulárnější kryptoměny dneška. Ethereum v blízké či vzdálenější budoucnosti přejde ze současného algoritmu pro dosahování síťového konsenzu, založeného na pálení velkého množství energie, na algoritmus energeticky šetrnější.
Ten dostal jméno Casper a potíž je v tom, že dávno plánovaný přechod se odsouvá již tak dlouho, až se stal několikátým rokem za sebou terčem nevybíravých vtipů.
Přechod na druhou generaci sítě Etherea, takzvané Ethereum 2.0, měl nastat například v roce 2019. Další datum bylo naplánováno na rok 2020, kdy nakonec vývojáři prohlásili, že bude třeba rozdělit proces přechodu do tří samostatných fází a zatím proběhne jen první přípravná. U poslední fáze to zatím vypadá, že se jí nedočkáme dříve než příští rok.
V případě Bitcoinu je jádro sítě víceméně jasně dané a mění se jen, pokud je to opravdu nutné nebo to přináší nějakou zásadní výhodu, na které se shodne většina aktivních uživatelů. Ethereum se naopak neustále mění a prochází sérií zpětně nekompatibilních změn, takzvaných hard forků.
Nebylo totiž spuštěno jako konečný produkt – plán vývoje Etherea od počátku obsahoval čtyři velké fáze a každá přinesla celou sérii zpětně nekompatibilních změn. Od července 2015 do března 2016 například probíhala první z nich, takzvaná Frontier phase, spočívající v budování a implementaci technologických základů.
Uživatelé již mohli ether těžit a vývojáři testovat první decentralizované aplikace – DApps – napsané formou prvních chytrých kontraktů. Síť měla ale do pořádné použitelnosti daleko: jedním z vleklých problémů byla bezpečnost. Během této fáze také vývojáři zavedli limit na velikost transakčního poplatku, aby neblokovala použitelnost sítě.
Od března 2016 do října 2017 probíhala druhá fáze spočívající v dalším ladění infrastruktury. Jejím hlavním úkolem bylo vyřešit velké množství bezpečnostních nedostatků, které síť měla. Po hacku první decentralizované organizace – The DAO – se bezpečnostní problémy Etherea dostaly do povědomí široké veřejnosti a bezpečnost sítě se stala hlavním tématem.
DAO byl demonstrační projekt, který měl ukázat, jak snadné je prostřednictvím sítě získávat prostředky a řídit decentralizovaný projekt formou skupinové spolupráce. Zneužití slabiny v chytrém kontraktu organizace ale vedlo k odčerpání obrovského množství uživatelských prostředků.
Vše vyústilo v kontroverzní rozhodnutí provést hard fork, během kterého se blockchain Etherea vrátil do stavu před útokem. Ten tak na současné síti vlastně nikdy nenastal.
Ne všichni uživatelé ale s rozhodnutím souhlasili, a proto došlo k rozdělení sítě na současné Ethereum a Ethereum Classic, udržující původní blockchain, na kterém je útok stále platný. Na hlavní síti následovaly ještě další dva rychlé upgrady reagující na čím dál častější útoky typu Denial-of-Service.
Od října 2017 do ledna 2020 pak probíhaly fáze souhrně nazývané Metropolis. Vedle pokračujícího ladění bezpečnosti sítě během nich vývojáři řešili otázku většího soukromí a hlavně škálovatelnost, která od roku 2017 začala rychle narážet na své limity.
Proměna sítě probíhala ve dvou podfázích – Byzantium a Constantinopole. Zejména druhá z nich obsahovala celou řadu příprav na plánovaný přerod sítě. Vývojáři ji však museli odsunout o půlrok, protože upgrade obsahoval kritickou chybu, odhalenou auditem jen pár hodin před plánovaným spuštěním upgradu.
Poslední fáze se jmenuje Serenity a má spočívat v plynulém přerodu na síť Ethereum 2.0 – bezpečnější, škálovatelnější a udržitelnější verzi dnešního Etherea. Probíhá postupně od ledna 2020 a původně měla být skončena letos. Již teď je ale jasné, že se nejspíš opět nestihne.
Plánovaná změna je totiž radikálnější, než by mohlo při pohledu zvenčí vypadat, a Ethereum za svoji krátkou historii vyrostlo v pěkného molocha, na kterého sází korporace i opravdu velcí investoři. V sázce je už zkrátka příliš.
Vedle přechodu na nový algoritmus distribuovaného konsenzu, tedy způsob, jak se síť shoduje na tom, která verze blockchainu je platná, přináší Ethereum 2.0 také radikální řešení otázky nedostatečného škálování – prostého faktu, že síť je často beznadějně zasekaná, což se odráží třeba na výši transakčních poplatků.
Změna přináší rozdělení původního blockchainu na vzájemně propojené sub-blockchainy, takzvané shardy, a řídicí beacon chain. Díky němu by mělo být Ethereum v příštích letech schopné podporovat řádově větší provoz a množství uživatelů. Dnes zvládne odbavit asi třicet transakcí za sekundu. To je ale pro chod světového počítače, jak se Ethereu někdy říká, žalostně málo.
Shardy pocházejí ze světa databází a hlavním smyslem je rozbít jeden rychle bobtnající blockchain na řadu menších částí – shardů. Když se sharduje normální databáze, rozdělí se na 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 až tak jednoduché není. Shardovat u něj můžeme v zásadě dvě věci: zpracování transakcí nebo stav blockchainu. Ethereum 2.0 se snaží o obojí a výsledkem by měla být schopnost provádět přes deset tisíc transakcí za vteřinu. Síť se rozdělí na optimální počet shardů, představující rozumný kompromis mezi efektivitou a bezpečností, a každý z nich bude ověřovat jinou část čekajících transakcí.
Jelikož se na samotném řazení čekajících transakcí do bloku ani na jeho velikosti nic nemění, měla by tímto trikem vzrůst průchodnost sítě více než tisícinásobně – alespoň v ideálním teoretickém světě, kde všechno funguje, jak bylo původně zamýšleno.
Shardování blockchainu je ale naneštěstí všechno, jenom ne jednoduché. Problémem je například zajištění, aby při simultánním zpracovávání transakcí docházelo 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ý a definitivní.
Shardování proto musí obsahovat mechanismus, který bude na jedné straně rozdělovat odpovědnosti, a na druhé zajišťovat, že všechna data zůstanou platná a jejich stav konečný, jako je tomu u současného blockchainu.
A to všechno, aniž zavedením tohoto mechanismu vznikne nějaká nová bezpečnostní slabina.
Zatím by vše mělo fungovat tak, že 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 tak vlastně rozdělí na množství etherových mini-blockchainů. Komplikovat se to však začíná v okamžiku, kdy dochází k vytváření finálního stavu.
Aby jej bylo možné vůbec poskládat, musí 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.
Pokud vám shardování nepřijde dost zamotané již samo o sobě, přidejme k němu nyní ještě tolik diskutovaný přechod na proof of stake síťový konsenzus. V případě současného proof of work těžař, který uhádl náhodné číslo, získal právo podepsat blok s transakcemi a jede se dál.
V proof of stake sítích ale transakce provádějí přiřazení validátoři, kteří nic nehádají. Celé jejich úsilí spočívalo v tom, že se uvolili na určitý čas uzamknout určité množství kryptoměny časovým zámkem a pak už jen čekají, až je algoritmus vybere. Jak zde ale zajistit stejnou úroveň bezpečnosti?
Ta je vynucena několika přidanými procesy. Zaprvé platí, že jsou validátoři k shardu přiřazováni 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, takzvaném beacon chainu. Tento mechanismus probíhá pomocí dalšího hlasování prostřednictvím chytrého kontraktu nazvaného sharding manager.
Teprve pak vzniká křížová vazba mezi shardem a hlavním chainem, a transakční blok se tak stává trvalou součástí blockchainu. Kdyby verifikační mechanismus odhalil, že je kterákoli z těchto vazeb neplatná, stává se neplatným celý blockchain. Bezpečnostní mechanismus tohoto systému sází hlavně na to, že pokud nebude potenciální útočník mezi validátory vědět, kam bude přiřazen, nemůže včas naplánovat a zkoordinovat útok.
Sharding ve spojení s proof of stake je tedy nesmírně komplikovaný mechanismus, u kterého se snadno přehlédne zásadní chyba, která by mohla později síti snadno zlomit vaz – vzpomeňme na DAO z druhé fáze vývoje sítě Etherea.
Jak například provádět rychle a bezpečně transakce přímo mezi jednotlivými shardy nebo jak zajistit v daném okamžiku přesné informace o stavu celé sítě pro lehké klienty? Otazník také visí nad včasnou detekcí podvodů.
Proof of stake a sharding přinášejí do systému mnohem větší míru komplexity, což je inženýrská i bezpečnostní noční můra. Nedivme se tedy, že vývojáři Etherea chodí okolo přepnutí sítě na její druhou generaci jako okolo horké kaše.