Překlad do češtiny z anglického originálu
V dnešním článku se podíváme na technické podrobnosti týkající se přechodu Cardano protokolu do éry Shelley.
PRÁCE NA PROJEKTU NIKDY NEKONČÍ
Ve světě vývoje softwaru neexistuje období, kdy by tým mohl v klidu říci, že práce jednou provždy hotová. Opravy nových chyb, implementace vylepšení nebo přidávání nových funkcí probíhají po celou dobu trvání projektu. Cardano je projekt, který se bude v průběhu času neustále zlepšovat, aby nabízel stále více funkcí. Je nutné stavět projekt s ohledem na nadcházející změny. Správné navrhování projektu a jeho modularita může v budoucnu výrazně pomoc.
Každý projekt blockchainu se skládá z několika klíčových komponent. Nejdůležitější jsou síťová vrstva, konsensus mechanismus a ledger (blockchain). Existuje závislost mezi komponenty zdola nahoru. To znamená, že nejprve musí být uzlem přijat přes síťovou vrstvu blok, aby se rozhodlo, zda jej uzel přijme nebo ne. Rozhodnutí se provádí skrze konsensus mechanismus za účelem aktualizace ledgeru. Pokud je blok přijat, může být přidán k blockchainu.
Síťová vrstva je zodpovědná za propojení uzlů, výběr peerů a přenos dat přes internet. Bloky a transakce jsou distribuovány přes internet z uzlu na uzlu. Uzly udržují mempool pro ukládání transakcí, které dosud nebyly vloženy do bloku. Když uzel získá právo vytvořit blok, vybere transakce z mempoolu a vloží je do nového bloku. Bloky přijaté síťovou vrstvou se používají konsensus mechanismem, který má na starosti ověřování transakcí, přijetí bloků a hlavně vybírá chain, který je považován za platný. V daném okamžiku může být k dispozici více konkurenčních chainů a mechanismus konsensu musí vybrat jeden. Konsensus mechanismus je také zodpovědný za rozhodování o výrobě bloku. Konsensus činí rozhodnutí na základě současného stavu ledgeru. Je nutné udržovat stav, který pomáhá rozhodovat o přijetí či odmítnutí dalších bloků. Každé přijetí nového bloku mění stav ledgeru a přímo ovlivňuje přijetí dalšího bloku. Je důležité, aby komponenty byly co nejvíce abstraktní a nezávislé. To usnadňuje provádění změn v komponentách. Je to také užitečné pro testování. Například je možné otestovat konsensus s mnoha různými ledgery. Nebo naopak, testovat stejný ledger s různými konsensus mechanismy.
FORKOVÁNÍ BLOCKCHAINU
Blockchainy jsou obvykle upgradovány pomocí soft forků a hard forků. Tým dodá novou verzi klienta s novými funkcemi a oznamuje ji veřejně. Provozovatelé uzlů, včetně provozovatelů poolů, se mohou rozhodnout, zda mají zájem o upgrade. Otázkou vždy je, zda změny v novém klientovi jsou zpětně kompatibilní. Předpokládejme, že nový klient je schopen vyrobit novou verzi bloků. Pokud je stará verze klienta schopna pracovat s novou verzí bloků, jedná se pouze o soft fork. Můžeme říci, že změna je zpětně kompatibilní. Operátoři uzlů nemusí upgradovat na novou verzi klienta a starý i nový klient bude udržovat stejný ledger.
Změna v klientovi může být tak zásadní, že staří klienti nejsou schopni přijmout blok vytvořený novým klientem. V tomto případě mluvíme o hard forku. Vytvoření hard forku znamená, že po vytvoření určitého bloku se blockchain rozdělí na dva řetězce. Představte si to jako vidličku nebo jednosměrnou kolejnici, která se rozdělí na dvě kolejnice. Noví klienti budou udržovat jeden chain a staří klienti budou dělat to samé s druhým chainem. Po hard forku, budou noví klienti ignorovat bloky vytvořené starými klienty a naopak, staří klienti budou ignorovat bloky vytvořené novými klienty. Každá skupina si tedy udržuje svůj vlastní řetězec.
V případě, že noví klienti udržují delší řetězec a starší klienti udržují ten kratší, měřeno od bodu kdy došlo k hard forku, jsou provozovatelé starých klientů nuceni upgradovat, aby se mohli podílet na udržování výtězného řetězce. Všimněte si, že o delším, tedy vítězném chainu nerozhoduje absolutní číslo nových či starých klientů. Rozhodne o tom síťová dominance jedné či druhé skupiny s danou verzí klienta. Pokud je méně upgradovaných uzlů vytvářející nové verze bloků, ale jejich celkový stake je vyšší, vyhrávají a budou udržovat delší chain, přestože počet těchto uzlů může být menší než počet uzlů se starým klientem.
Tým přirozeně doufá, že většina operátorů uzlů aktualizuje své uzly na novější verzi klienta a chain složený z nové verze bloků vyhraje brzy po hard forku. Řetězec udržovaný starými klienty s největší pravděpodobností zmizí, protože nikdo o něj nebude mít zájem. Můžeme říci, že provozovatelé přijali změny provedené týmem.
Hard fork může být docela nebezpečná věc kvůli existenci dvou chainů po jeho aktivování. V některých případech je to však záměr. Má-li být hard-forkem vytvořen nový projekt, jsou zachovány oba chainy. Forking je mechanismus, jak aktualizovat klienty na novější verze. Hard fork však může také vytvořit nový projekt, který vychází ze starého. V tomto případě jsou oba chainy záměrně udržovány i po hard-forku. Jeden chain skrze staré klienty a druhý skrze nové. V obou případech musí být nové bloky průběžně přidávány. Stalo se to například při vzniku projektu Ethereum Classic, který se oddělil od Etherea. Burzy musí nový chain akceptovat a pro novou minci musí být vybrán nový ticker. Pokud je vytvořen nový projekt, každý, kdo měl nějaké mince v původním blockchainu, bude mít tyto mince také v novém. Po rozvětvení mají oba řetězce stejnou minulost, stejné bloky a transakce. Mění se to právě hard-forkem a budoucnost bude pro oba chainy jiná.
HARD-FORK COMBINATOR
Design, který je popsán v první kapitole, je velmi nápomocný pokud má dojít k větší aktualizaci projektu. Modernizace blockchainu je obtížná a často se říká, že se podobá pokusu o výměnu motoru v automobilu při rychlosti 300 Km/h. Blockchain je svou povahou globální, takže někde na planetě je vždy jeho hlavní čas používání. Používání blockchainu nemůže být na čas pozastaveno kvůli aktualizaci protokolu a uživatelé by se měli starat jen upgrade peněženky.
Každý v ekosystému Cardano si musí před hard forkem stáhnout software kompatibilní se Shelley. Operátoři Stake-pool operátoři si budou muset stáhnout nové uzly. Uživatelé si budou muset stáhnout nové peněženky Daedalus. Uzly a peněženky tak budou připraveny na změnu. Nová verze klientů je schopna pracovat jak s bloky a také ledgery éry Byron i Shelley. V současné době, před přechodem do éry Shelley, main-net používá konsensus mechanismus Ouroboros Byzantine Fault Tolerance Tolerance (OBFT) a Byron ledger. Jakmile se aktivuje Shelley hard fork, uzly začnou produkovat a přijímat výhradně bloky Shelley a do ledgeru budou přidány pouze Shelley bloky. Konsenzus OBFT nahradí konsenzus Ouroboros Praos. Součástí nového konsensu je také logika potřebná pro staking. Ta v klientech pro Byron nebyla.
Bude vybrán blok, který spustí změnu a převede protokol z Byron éry do Shelley éry. Tým IOHK za tímto účelem vytvořil hard fork kombinátor, který bude součástí nové verze klienta. Kombinátor umožní uzlu přejít z jedné verze blockchain protokolu do druhé. Kombinátor je schopen kombinovat dva protokoly takovým způsobem, že si uživatelé nevšimnou že se začal používat druhý místo prvního. Tedy že došlo k výměně, kterou aktivuje hard fork. Změna nastane okamžitě po aktivaci hard forku. Pokud si vzpomínáte na naši analogii s autem, kombinátor umožní spolehlivou výměnu motoru během jízdy.
Přepnout běžící protokol na jiný bez zastavení je složitý úkol. Čas je v protokolu Cardano rozdělen do epoch a každá epocha obsahuje určitý počet slotů. Počet slotů se po aktivaci hard forku změní. Aby byla úloha složitější, změní se také délka slotů z 20 sekund na 2 sekundy nebo možná na 1 sekundu. V jednom okamžiku musí protokol přejít na nový konsensus mechanismus a ledger. To se musí stát na všech uzlech na světě. Cardano musí pokračovat v utváření konsensu sítě a přidávat bloky do blockchainu bez přerušení.
ZÁVĚR
V budoucnu můžeme očekávat další změny v protokolu Cardano, pro které bude kombinátor znovu použitý. Po éře Shelley budou éry Goguen, Basho a Voltaire a pro každou z nich bude použit kombinátor. Kombinátor usnadní hladký přechod z jedné verze protokolu do druhé. Je to neviditelný, ale velmi důležitý a složitý kus software. Cardano je navrženo tak, aby umožňovalo rozšíření funkcionality, a proto existuje mechanismus, který to umožňuje.
Přečtěte si originální článek:
[How will Cardano enter the Shelley era | Cardanians]