🇨🇿 Pochopení Nakamotova Konsensu

Cardano používá variaci Nakamotova konsensu nazvanou Ouroboros. Jedná se o konsenzus Proof-of-Stake (PoS), který využívá základní principy vynalezené Satoshi Nakamotem pro Bitcoin. Ouroboros je navržen tak, aby poskytoval podobné záruky zabezpečení jako Proof-of-Work (PoW), přičemž je energeticky účinnější. V článku si vysvětlíme základní principy Nakamotova konsenzu a upozorníme na rozdíly mezi PoW a PoS. Důraz bude kladen na principy a základní mechanismy.

Nakamotův konsensus

Nakamoto konsensus vynalezl Satoshi Nakamoto, pseudonymní tvůrce Bitcoinu. Je to řešení problému byzantských generálů, který se ptá, zda je možné dosáhnout konsensu v distribuované síti nezávislých uzlů.

Ouroboros je navržen tak, aby poskytoval podobné záruky zabezpečení jako Bitcoin a zároveň byl energeticky účinnější. Bitcoinový PoW a Cardanoův PoS sdílejí společné principy konsensu Nakamoto, navzdory rozdílům v jejich mechanismech a implementaci.

Primární rozdíl mezi PoW a PoS spočívá v tom, jak tyto principy implementují.

PoW vyžaduje, aby těžaři řešili složité kryptografické hádanky pomocí výpočetního výkonu k přidávání nových bloků do blockchainu.

PoS vybírá výrobce bloků (poolů), aby razili nové bloky na základě množství ADA coinů, které vlastní nebo jim byly delegovány.

Zásadní rozdíl je v drahých zdrojích, které mechanismy PoW a PoS využívají.

PoW potřebuje k provozu enormní množství hash rate (výpočetní výkon). To spotřebuje hodně energie. Elektřina je drahý a obnovitelný zdroj. Množství je neomezené.

PoS je energeticky účinnější, protože jako zdroj se používají digitální mince. Elektřina se spotřebovává pouze na provoz uzlů. Coin ADA je drahý, neobnovitelný a vzácný zdroj.

Využití různých drahých zdrojů ovlivnilo implementaci principů Nakamotova konsensu. Konsensus PoW i PoS používají různé mechanismy k dosažení načasování produkce bloků, náhodnosti, bezpečnosti, decentralizace, inkluzivity, rovnostářství atd.

PoW a PoS se v jednotlivých prvcích liší, ale oba konsensy jsou velmi podobné, pokud jde o principy Nakamoto konsenzu.

V článku se nebudeme zabývat všemi prvky. Zaměřujeme se především na vysvětlení toho, jak je dosaženo konsensu. Než se do toho pustíme, vysvětlíme si potřebnou teorii.

K čemu je konsensus?

Účelem konsensu v distribuované síti je zajistit, aby se všechny zúčastněné uzly, které mohou být rozmístěny na různých místech, shodly na jediném stavu sítě i přes absenci centrální autority.

Tato dohoda umožňuje síti udržovat konzistentní a spolehlivý stav účetní knihy. Síť se musí v pravidelných intervalech dohodnout, což umožňuje změnu stavu účetní knihy.

V blockchainových sítích se stav změní přidáním nového bloku. Do bloků se vkládají transakce uživatelů. V případě Cardano mohou být do bloky inserted také certifikáty.

Co rozumíme konsensem?

Konsensus může odkazovat na soubor pravidel umožňujících uzlům v rámci distribuované sítě dosáhnout vzájemné dohody (prostřednictvím vzájemné výměny informací a přijímání autonomních rozhodnutí).

Tato pravidla jsou zakódována ve zdrojovém kódu síťového protokolu. Protokol je v podstatě plán a klient je software, který tento plán implementuje. Instalací klienta na svůj počítač se uživatelé stávají uzly, které přispívají k provozu distribuované (decentralizované) sítě.

Konsensus může také konkrétně odkazovat na implementaci tohoto procesu dohody, například prostřednictvím mechanismů PoW nebo PoS.

Konsensem tedy může být schopnost sítě dosáhnout dohody, ale také konkrétní implementace. Stejný termín může označovat schopnost a nástroj zároveň.

Na obrázku vidíte klienty využívající konsensus Ouroboros PoS, který jim umožňuje dosáhnout vzájemné dohody o změně stavu účetní knihy. Všimněte si, že účetní kniha je součástí každého klienta. Změny stavu se odehrávají na všech uzlech.

Požadavky na síťový konsensus

Než začneme vysvětlovat Nakamotův konsensus, je nutné vysvětlit některé důležité aspekty, které jsou kladeny na všechny druhy síťového konsenzu pro distribuované sítě.

Mechanismus konsenzu musí zajistit, aby síť fungovala správně i v přítomnosti chybných nebo škodlivých uzlů. Zlomyslní aktéři, kteří chtějí narušit schopnost dosáhnout konsensu a tím poškodit síť, se mohou kdykoli připojit k otevřené síti.

Několik uzlů v síti může z různých důvodů přejít do režimu offline současně.

V decentralizované síti může každý, kdo vlastní drahý zdroj (hash rate v Bitcoinu nebo coin v Cardano), získat podíl na moci (tj. podílet se na dosažení dohody).

Spolehlivost a bezpečnost sítě jsou založeny na předpokladu, že poctiví účastníci drží větší část drahých zdrojů, než potřebují zlomyslní aktéři k narušení konsenzu.

Dalším předpokladem je, že pokud mnoho uzlů náhle přejde do režimu offline, bude stále možné dosáhnout konsensu. Ne každý typ konsensu tohle dokáže zajistit.

Síť by měla být schopna zvládnout poruchy a chyby jak v síti, tak v zúčastněných uzlech, aniž by byla ohrožena celková funkčnost systému. Síť musí být odolná vůči poruchám.

Všechny neporuchové uzly se musí nakonec shodnout na stejném stavu účetní knihy, což zajistí konzistenci a integritu v celém systému. Síť se nesmí dostat do situace, kdy se rozdělí na dva stavy (blockchain fork na dva konkurenční řetězce), aniž by se s touto situací uměla vypořádat.

Na obrázku je vidět, že síť udržovala jednotný stav účetní knihy až do bloku N+3. Poté je stav nejednoznačný. Je zde dvojice bloků se stejnou výškou N+4 a N+5.

V daný okamžit se nedá jednoznačně určit který stav je platný.

Protokolová pravidla musí být připravena pro každou možnost a musí zajistit konzistenci stavu. V případě rozdělení stavu musí být síť schopna detekovat problém a deterministicky rozhodnout, který ze stavů je ten správný (pravidlo delšího řetězce).

Na obrázku je vidět, že síť zahodila spodní bloky N+4 a N+5 (osiřely). Za horní blok N+5 byly přidány nové bloky N+6 a N+7. Tento řetězec vyhrál a představuje aktuální (dohodnutý) stav účetní knihy.

Každý bezchybný proces musí nakonec dospět k rozhodnutí, které zajistí, že protokol o shodě bude nakonec uzavřen. Jinými slovy, síť se nesmí dostat do situace, kdy nebude vědět, jak s konsensem postupovat. Musí být zajištěna kontinuita.

Pokud by se síť po přidání dvojice N+5 bloků zastavila a nedokázala by přidat další blok tak, aby se rozhodlo, který stav je ten správný, musel by zasáhnout centralizovaný subjekt (tým). To je nežádoucí.

Bezpečnost a živost

Bezpečnost a živost jsou dvě kritické vlastnosti, které zajišťují správné a bezpečné fungování sítě. Týmy vytvářející síťový konsensus musí tyto vlastnosti vyvážit. Musí se rozhodnout, který z nich preferují více.

Pojďme si tyto vlastnosti popsat.

Bezpečnost znamená záruku, že síť nedosáhne falešné dohody. Jinými slovy zajišťuje, že každá transakce, kterou jeden správně fungující uzel považuje za konečnou, bude nakonec považována za konečnou každý správně fungující uzel. Znamená to také, že žádné dvě transakce, které by dva správně fungující uzly považovaly za konečné, nebudou nikdy konfliktní.

V krajním případě to lze interpretovat tak, že síť preferuje zastavení konsenzu před nesprávným vypořádáním transakcí. V síti, která upřednostňuje bezpečnost před živostí, je vyhýbání se rozvětvení klíčové, protože rozvětvení znamená, že existuje neshoda ohledně stavu účetní knihy, což může vést k porušení bezpečnosti.

Vyřazení transakcí je pro takovou síť vysoce nežádoucí, protože by to mohlo podkopat důvěru a spolehlivost systému. Uživatelé očekávají, že jejich transakce budou konečné a neměnné, jakmile jsou zahrnuty do bloku a připojeny k blockchainu.

Tuto nežádoucí situaci můžete vidět na obrázku. Síť vytvořila dva bloky N+4 a v každém z bloků jsou různé transakce (malá červená a modrá políčka). Síť musí vyřadit jeden z bloků N+4 včetně transakcí.

To jsou požadavky odlišné od sítí, které preferují živost před bezpečností.

Živost je zárukou, že síť bude pokračovat v pokroku a nezastaví se. To znamená, že dokud budou existovat transakce, které nebyly dokončeny, bude soubor dokončených transakcí nadále narůstat. Zajišťuje, že každá transakce bude nakonec vypořádána všemi čestnými uzly.

Síť, která upřednostňuje živost před zabezpečením, se při rozvětvení nezastaví. Místo toho umožňuje dočasnou existenci dvou řetězců a spoléhá na to, že účastníci sítě budou pokračovat v budování na vrcholu řetězce, o kterém se domnívají, že je ten správný. Jinými slovy, nekonzistentní stav účetní knihy je dočasně tolerován.

Na obrázku vidíte podobnou situaci jako výše. Pravidla sítě tuto situaci umožňují. Spodní blok N+4 je vyřazen (včetně červené transakce) Přidá se blok N+5, do kterého byla vložena červená transakce. Obě transakce jsou nakonec v blockchainu.

Doufám, že víte, která vlastnosti preferuje síť využívající konsensus Nakamoto. Cardano i Bitcoin upřednostňují živost před bezpečností.

Tato volba designu je zřejmá ve způsobu, jakým konsensus zachází s forky blockchainu. V Nakamotově konsensu, když dojde k rozvětvení, jsou uzly instruovány, aby následovaly nejdelší řetězec. Toto pravidlo zajišťuje, že síť pokračuje v pokroku a rozšiřování blockchainu, i když dojde k dočasným neshodám nebo rozvětvení.

Tento přístup však může vést k dočasnému porušení bezpečnosti, například když dva těžaři vytěží blok se stejnou výškou (height) přibližně ve stejnou dobu, což vede k rozvětvení. V Cardano mohou být současně zvoleni dva vedoucí slotů.

Síť se nakonec bude konvergovat k jednomu z těchto bloků (řetězců) jako součást pravidla o nejdelším řetězci, ale do té doby mohou existovat protichůdné pohledy na historii transakcí. Bezpečnostní vlastnost se nakonec obnoví, neboť konsensus pokračuje v přidávání nových bloků. Jedna větev se výrazně prodlužuje než ostatní, což z ní činí všeobecně přijímaný řetěz.

Zatímco Nakamoto konsensus si klade za cíl poskytnout bezpečnost i živost, je navržen tak, aby zajistil, že síť zůstane živá a schopná zpracovávat transakce i přes dočasné neshody nebo problémy se sítí. Bezpečnost je dosažena, když blockchain roste a pravděpodobnost hluboké reorganizace se stává zanedbatelnou.

Pravděpodobnostní konečnost

Vlastnosti bezpečnosti a živosti souvisí s pravděpodobnostní konečností Nakamotova konsensu.

Pravděpodobnostní finalita se týká konceptu, že konečnost transakce není absolutní, ale stává se stále pravděpodobnější, jak se za blok obsahující transakci přidávají další bloky.

Bezpečnost a živost souvisí s pravděpodobnostní konečností následujícím způsobem:

Bezpečnost znamená, že jakmile byla transakce zahrnuta do bloku a bylo na ni přidáno několik bloků (prohloubení její pozice v řetězci), pravděpodobnost, že tato transakce bude zrušena, je velmi nízká. Není to však nula. Vždy existuje malá šance, že by se mohl objevit delší konkurenční řetězec, i když pravděpodobnost s každým dalším blokem exponenciálně klesá.

Živost zajišťuje, že transakce budou nakonec potvrzeny a přidány do blockchainu. Dokud pooly (producenti bloků) pokračují v rozšiřování blockchainu přidáváním nových bloků, síť vykazuje živost. Není zaručeno, že transakce budou zahrnuty do dalšího bloku, ale budou zahrnuty, pokud budou platné a síť bude nadále fungovat.

Ve srovnání s jinými síťovými konsensem, které preferují bezpečnost před živostí, má konsensus Nakamoto pomalé vyřízení.

Uživatel musí počkat, až síť přidá několik bloků nad blok, do kterého byla vložena jeho transakce. Transakce je nevratná až po přidání dalších bloků. Každý další nově přidaný blok (nad blok s transakcí uživatele) představuje souhlas se stavem účetní knihy. K podrobnostem se dostaneme později.

Na obrázku vidíte, že do bloku N+3 byla vložena Aliceina transakce (malý modrý rámeček). Finalita transakce je 0, protože zatím nebyl přidán žádný další blok. S každým dalším přidaným blokem se zvyšuje konečnost transakce (a také bloku N+3). Jakmile je přidán blok N+4, konečnost je 1 a tak dále. Pokud Alice potřebuje 3 bloky jako dostatečný počet potvrzení (3 další výrobci bloků souhlasí s blokováním N+3), může transakci považovat za dokončenou (nevratnou) v bloku N+6.

Sítě upřednostňující bezpečnost před živostí jsou schopny získat státní souhlas rychleji. Tedy ne přidáním bloků, ale nějakou formou hlasování buď před přidáním bloku, nebo krátce po něm. Tento druh konsensu obvykle vyžaduje velký počet uzlů, které se aktivně účastní hlasování o každém bloku.

Finalitu transakcí lze rychle dosáhnout pouze tehdy, pokud je možné v krátké době získat souhlas s novým stavem (blokem) od většiny uzlů.

Pojďme vyrobit nový blok způsobem Nakamoto

Řekli jsme, že konsensus je o dohodě napříč uzly o změně stavu účetní knihy. Nakamotův konsensus by se dal jednoduše popsat následovně.

V daném časovém intervalu si náhodně vyberme v síti jednoho, který získá právo vyrobit nový blok. Tento blok bude vysílán do sítě. Pokud jiný náhodně zvolený uzel souhlasí s tímto blokem, připojí svůj nový blok za tento blok. Pokud nesouhlasí, připojí k předchozímu bloku nový blok (tedy ne za poslední blok).

Pojďme si popsat následující obrázek.

Alice přidala blok N+2. Tento blok obdrží ostatní uzly v síti, takže ho obdrží i Bob a Carol. Bob je náhodně zvolen jako další producent bloku. Blok N+3 (zeleně) připojí za blok N+2.

Carol dostává blok N+3 který vytvořil Bob. Je náhodně zvolena jako další producent bloku. Carol má dvě možnosti. Může propojit blok N+4 za existujícím blokem N+3. Toto je očekávaný scénář (protože by nedošlo k žádné nekonzistenci účetní knihy). Ale nelíbí se jí Bobův blok N+3. Rozhodla se proto přidat blok N+3 (červeně) k bloku N+2.

Tím se vytvoří vidlice v blockchainu (stav účetní knihy je nyní nekonzistentní). Jiný náhodně zvolený výrobce bloku se může rozhodnout, zda přidá nový blok za červený nebo zelený blok N+3.

Pro přidávání bloků jsou klíčové dvě funkce. Určení, kdy má být přidán nový blok a kdo jej vyrábí. Takže časování protokolu a randomizace uzlů.

Ke shodě mezi uzly dochází až po navržení nového stavu. Ostatní uzly souhlasí se změnou s velkým zpožděním připojením nového bloku za předchozí blok. Souhlas nelze získat ze všech uzlů současně, ale pouze z jednoho uzlu - toho, který bude vybrán jako další výrobce bloku.

Uzly se vzájemně nedohodnou na změně stavu dříve, než k ní má dojít. Místo toho náhodně zvolený uzel autoritativně navrhuje změnu a předpokládá, že ostatní budou souhlasit. Ostatní uzly budou s největší pravděpodobností souhlasit, pokud je blok platný.

Výrobce bloku je motivován, aby navrhl platný blok, protože je to jediný způsob, jak získat nárok na odměnu.

V každém kole je jeden navrhovatel a mnoho schvalovatelů. Uzly v síti přijímají platný blok, protože nemají důvod ho zahodit. Pokud by uzly vyřadily platné bloky, například všechny bloky vyrobené Alicí, v síti by vznikaly rozvětvení (a tedy nekonzistence účetních knih). To je nežádoucí.

Proces přidání nového bloku se skládá z následujících kroků:

  • Náhodná volba výrobce bloku.
  • Produkce bloku náhodně zvoleným uzlem.
  • Vyslání bloku do sítě od producera.
  • Validace bloku a jeho případná akceptace.
  • Stejný proces znovu od kroku jedna.

Proces je stejný pro Cardano i Bitcoin. Přestože každý projekt používá jiný konsenzus, zásadně se neliší. Pojďme si popsat rozdíly.

Rozdíly jsou v časování protokolu a náhodné volbě výrobce bloku.

Bitcoin je navržen tak, aby vytvořil nový blok zhruba každých 10 minut. Síť upravuje obtížnost těžby přibližně každé dva týdny (nebo každých 2016 bloků), aby udržela tuto dobu bloku. Tato úprava zajišťuje, že čas potřebný k vytvoření bloku zůstává konzistentní, i když se mění hash rate sítě (celkový výpočetní výkon použitý pro těžbu).

Náhodná volba je založena na řešení výpočetně náročné matematické úlohy (kryptografické hádanky). Uzly, které chtějí těžit nový blok (pooly), začnou řešit úkoly v okamžiku, kdy dostanou nový blok. Všechny uzly začínají zhruba ve stejnou dobu (zpoždění sítě). Uzel, který úlohu vyřeší jako první, okamžitě vytvoří nový blok a rozešle jej do sítě.

Všimněte si, že všechny pooly řeší stejný úkol, ale jen jeden může uspět. Jakmile pool obdrží nový platný blok, přestane pracovat na aktuálním úkolu a začne řešit úkol nový (těžba nového bloku).

Někdy se stane, že úkol vyřeší dva pooly přibližně ve stejnou dobu. V takovém případě dojde k forku blockchainu, který bude vyřešen výše popsaným mechanismem.

V Bitcoinu se proces přidání nového bloku skládá z následujících kroků:

  • Všechny pooly (s minery) začnou těžit nový blok.
  • Jeden pool vyřeší úkol.
  • Pool vytvoří blok a vysílá jej do sítě.
  • Ostatní uzly a pooly ověřují blok.
  • Stejný proces znovu od kroku jedna (pokud byl blok platný).

Cardano rozděluje čas do jednosekundových slotů a pro náhodný výběr využívá moderní kryptografii, jmenovitě Verifiable Random Function (VRF).

Místo toho, aby všechny uzly řešily počítačově náročnou matematickou operaci, o tzv. slot leaderu rozhoduje matematika a náhodné vstupy.

Každý uzel v každém slotu ověřuje, zda se stal vedoucím bloku. Pokud ano, vyrazí nový blok. Neexistuje žádný ústřední orgán, který by řídil hlasování. Uzly se registrují pro hlasování prostřednictvím certifikátů, které jsou uloženy v blockchainu. Uzly si mohou ověřit, že se staly vedoucími slotů zcela autonomně.

Každý uzel potřebuje vypočítat své prahové číslo. Odvozuje se od velikosti stake. Stake se skládá z ADA coinů provozovatele (zástava) a všech stakerů. Čím větší stake, tím více bloků může pool v dané epoše vyprodukovat. Jde o stejný princip, jaký pozorujeme u Bitcoinu. Čím více hash rate je poolu delegováno, tím více bloků pool vytěží.

Každý pool využívá každou sekundu algoritmus VRF k získání výstupu VRF. Výstup VRF je porovnán s prahovou hodnotou. Pokud je výstup VRF nižší než prahová hodnota, pool se stal lídrem slotu a získává právo razit nový blok.

V Cardano se proces přidání nového bloku skládá z následujících kroků:

  • V každém slotu všechny pooly ověří, zda se staly vedoucím slotu.
  • Vedoucí slotu vyrazí nový blok a odešle jej do sítě.
  • Ostatní uzly a pooly ověřují blok.
  • Stejný proces znovu od kroku jedna (pokud byl blok platný).

Jak vidíte, jde v podstatě o stejný proces jako v případě Bitcoinu.

Podobně jako u Bitcoinu se může stát, že v časovém úseku 20 sekund (čas bloku Cardana) je zvoleno několik slot lídrů. Je dokonce možné, že ve stejném slotu budou zvoleni 2 vedoucí slotů. Podobně jako u Bitcoinu se používá pravidlo delšího řetězce.

Výstupem volby VRF je číslo, které rozhoduje o tom, který řetězec následovat v případě rozvětvení blockchainu.

Jedním z dalších rozdílů je motivační model. Bitcoin odměňuje pooly (těžaře) v každém novém bloku. Cardano odměňuje všechny provozovatele stakign poolů a stakery jednou za 5 dní (epocha).

Podobných drobných rozdílů bychom našli mnoho.

Například při validaci bloku. V případě Bitcoinu se ověřuje důkaz, že matematický úkol byl skutečně vyřešen. V případě Cardana se ověřuje důkaz, že blok pochází z uzlu, který byl skutečně zvolen vedoucím slotu (ověřují se další věci, např. podpis KES).

V obou případech je zajištěno, že se stav účetní knihy svévolně nezmění podvodným uzlem. V Bitcoinu by podvodný uzel musel vynaložit obrovský výpočetní výkon, aby vytvořil nový podvodný blok. V Cardanu by podvodný uzel musel prolomit kryptografii, což by také vyžadovalo obrovský výpočetní výkon.

Oba přístupy mají podobné bezpečnostní záruky.

Prostřednictvím kryptografie může Cardano efektivněji náhodně volit vedoucí slotů v daném časovém intervalu a zajistit, že nikdo jiný než zvolený vedoucí slotu nemůže do blockchainu přidat nový blok. Bitcoin k tomu potřebuje spotřebovat enormní množství energie.

Závěr

Konsensus Nakamoto má pomalou finalitu transakcí, ale je velmi robustní. Pokud velký počet uzlů přejde do režimu offline, síť je stále schopna produkovat bloky (i když pomaleji).

Cardano a Bitcoin se liší v mnoha aspektech, jako je decentralizace, bezpečnostní rozpočet, rovnostářství, inkluzivita atd.

Konsensus Nakamoto nemůže přímo ovlivnit například kvalitu decentralizace. V Bitcoinové síti je více než 50 % bloků produkováno pouze dvěma pooly, zatímco v síti Cardano je více než 1000 poolů. To je způsobeno jiným mechanismem odměny (důležitý je koncept saturace poolů). Bitcoinu je jedno, jestli existuje jediný výrobce bloků nebo 1000. Protokol Cardano zná svou decentralizaci a může ekonomicky stimulovat její růst.

Decentralizace je klíčovou vlastností distribuované sítě. Primárním cílem síťového konsenzu je umožnit shodu mezi relativně velkým počtem výrobců bloků (mohou být v řádu stovek až tisíců). Kvalita jednotlivých vlastností sítě je dána mixem různých prvků a detailů. Konsenzus Nakamoto je jedním z klíčových prvků pro Bitcoin i Cardano, ale ne jediný.

Decentralizace je ovlivněna mechanismem odměňování, inkluzivitou a rovnostářstvím. Zde se PoW a PoS zásadně liší. Na rozdíl od těžby má staking menší vstupní bariéru, je méně riskantní a dostupný všem na světě. To je jen jeden z mnoha rozdílů.

Článek napsali Cardanians s podporou Cexplorer.

Přečtěte si celý článek: https://cexplorer.io/article/understanding-the-nakamoto-consensus

1 Like