síťový konsensus

Co je síťový konsensus a proč je u kryptoměn nutný

Jak dojít k síťovému konsensu

Pokud se mají dva lidé domluvit na čase setkání a každý má jiné preference, začnou se o tom bavit a většinou dospějí k dohodě, která vyhovuje oběma. Můžeme říct, že došli ke konsensu. Mohou nastat případy, kdy dohoda končí hádkou a lidé se nepotkají. Předpokládejme, že skupina lidí má stejné postavení a mají se také dohodnout na čase setkání. Obecně platí, že čím více lidí se bude dohadovat, tím déle to potrvá. Od určitého počtu lidí je dohoda nemožná a je nutné přejít k hlasování nad alternativami. Někdo musí určit pravidla, které k dohodě povedou. Tím vzniká konsensus.

V P2P sítích dochází ke konsensu nad tím, jaký blok se má zařadit do blockchainu. V článku se budeme zabývat tím, jak se mezi sebou uzly dokáží domluvit a dospět k síťovému konsensu.

Konsensus v P2P síti

Blockchainová P2P síť je tvořena určitým počtem uzlů, které mezi sebou dokáží komunikovat. Každý uzel je připojený k několika dalším uzlům ve svém okolí. Daný protokol obvykle uzlům umožňuje výměnu transakcí a bloků. Uzly si však mohou předávat další druh zpráv týkající se konsensu. Jakmile uzel pošle do světa třeba novou transakci, oběhne doslova celý svět. Uzly si ji mezi sebou začnou přeposílat. Do otevřené sítě se může kdykoliv připojit nový uzel. Síť mohou uzly také libovolně opouštět. Vzniká tak dynamická skupina uzlů, která se mezi sebou musí domluvit na přidání nového bloku.

Distribuovaný konsensus si můžete představit jako sadu pravidel nebo algoritmus, který každý poctivý uzel dodržuje. Rámec dohody je tak pevně definovaný. Každý uzel přesně ví co má dělat, co může od svého okolí očekávat a jak na to reagovat. Uzly musí fungovat autonomně, neboť v decentralizované síti není žádná autorita, která by něco nařizovala. Očekává se, že všechny uzly dělají totéž. Uzly si nemusí být 100% rovny a často tomu tak není. 

V síti mohou být uzly, které se dohodnout nechtějí, nebo chtějí podvádět. Dokonce se může stát, že podvodných uzlů může být víc a mohou spolupracovat. Skupina čestných uzlů tak může soupeřit se skupinou uzlů nečestných. Soupeření mezi dobrem a zlem nemusí nutně být o počtu uzlů v dané skupině. Jednotlivé uzly či skupiny mohou mít různou konsensuální sílu. Dominance čestných uzlů je hlavně o celkové konsensuální síle skupiny v porovnání se silou útočníků.

Obecně se dá říct, že k poctivému utváření síťového konsensu bude docházet za předpokladu, že potřebnou konsensuální sílu budou ovládat čestné nody. Za pozornost stojí, že toto musí platit i tehdy, když čestné uzly bojují mezi sebou o získání odměny. U některých protokolů stačí čestným uzlům disponovat s nadpoloviční konsensuální silou, u jiných to musí být více než dvě třetiny. 

Co je to vlastně ta konsensuální síla? Do veřejné sítě se může připojit kdokoliv a kdyby možnost způsobit škodu nic nestálo, bylo by relativně snadné škodit. Konsensuální síla tak nemůže být vázána na pouhé zapojení se do sítě. Účastníci tak musí být ekonomicky motivování k čestnému chování a současně mohou být potrestáni za pokusy o podvody. Jinými slovy, účastníci musí mít vlastní kůži ve hře. Konsensuální síla je tak spojena s nějakým ve fyzickém světě vzácným zdrojem. Provozovatelé uzlů potřebují tento zdroj získat, nebo jím disponovat, aby se mohli zapojit do síťového konsensu. Uzly současně nechtějí o tento zdroj zbytečně přijít za nepoctivé chování. Čím větší množství daného zdroje daný uzel má, tím větší má konsensuální sílu a také motivaci k čestnému chování.

Vzácné zdroje – něco za něco

Pojďme si konečně říct, jaké výhody konsensuální síla přináší. Uzel, který má určitou konsensuální sílu, má v síti nějaká speciální práva. Tato práva jsou spojena zejména s produkcí bloků, z čehož pramení výhody ve formě získání odměn. Pokud chce uzel mít konsensuální sílu, musí si koupit potřebné množství vzácného zdroje a až poté může podle pravidel protokolu vykonávat požadovanou službu. Protokol za dobrou služby odměňuje uzly digitálními mincemi. Tím si provozovatelé uzlů kompenzují konzumaci nebo nákup vzácného zdroje. Pokud se vzácný zdroj nekonzumuje a lze ho koupit jednorázově, mohou být odměny pro držitele zdroje vyšší. Případně může být déle udržitelný ekonomický model.

Dodejme, že útok na síť je spojený s vlastnictvím vzácného zdroje. Kdo chce útočit skrze konsensuální sílu, což není jediný myslitelný útok na síť, potřebuje mít vlastní kůži ve hře. Pravidla protokolu musí být nastavena takovým způsobem, aby se útočníkovi útok prodražil a on sám přišel o své bohatství. Síť by se měla v ideálním případě z útoku zotavit.

V Proof-of-Work (PoW) sítích je vzácným zdrojem elektrická energie, která se při utváření konsensu konzumuje. Lidé tak mohou být ve finanční ztrátě do doby, než od protokolu dostanou digitální mince, které mohou prodat na volném trhu. Po prodeji by lidé měli být schopni uhradit náklady za spotřebovanou energii. V Proof-of-Stake (PoS) sítích jsou vzácným zdrojem samotné nativní mince daného projektu. Lidé si je mohou koupit a tím získají permanentní konsensuální sílu. Odměnu tak může dostat každý držitel mincí.

Trochu paradoxně konsensuální síla nemusí přímo souviset s provozováním uzlu. V PoW sítích vám stačí disponovat výpočetní silou třeba prostřednictvím ASIC mineru a tuto sílu můžete delegovat na pool. Stačí, když pouze pool provozuje plný uzel. U PoS to funguje podobně. Majitelé mincí delegují na pooly konsensuální sílu a stačí jim k tomu pouze odlehčená peněženka. Konsensuální síla poolů je v PoW i PoS sítích závislá na množství delegované moci od ostatních aktérů. Tito aktéři jsou tak také odměněni za svoji účast na síťovém konsensu. Pokud by se pooly nechovaly čestně, lidé delegující konsensuální sílu mohou podpořit jiný pool. 

V PoW sítích odměnu distribuují operátoři poolů. PoS protokoly jsou schopné decentralizovaně odměnit všechny účastníky konsensu, neboť pro to mají veškeré potřebné informace přímo v blockchainu.

V ideálním případě je konsensuální síla v rukou těch, kteří to se sítí myslí dobře. Počet entit by měl být co největší a bez velryb. Praxe ukazuje, že je toho těžké docílit. Pokud je účast na síťovém konsensu profitabilní, je pro velryby snadné se zapojit. Skrze velký kapitál lze v síti získat silné, či dokonce dominantní postavení. Tomu v principu nelze zabránit. Je to inherentní vlastnost veřejných sítí.

Existují PoS sítě, které k utvoření síťového konsensu nepotřebují pooly a nový blok může vytvořit každý uzel, který disponuje minimálním požadovaným počtem mincí. Takové uzly se mohou stát pověřenými validátory konkrétního bloku a také za to získat odměnu. Tyto sítě jsou principiálně velmi dobře decentralizované, ale útočníkům může v některých případech stačit ⅓ mincí k úspěšnému útoku. Dodejme, že pooly vznikají tehdy, když se vyplatí sdružovat konsensuální sílu. Bitcoin je při svém spuštění neměl, ale od určité úrovně adopce byla jejich existence výhodná.

Cílem síťového konsensu je přidat nový blok, na kterém se shodne čestná většina uzlů v síti. Přesnější by však bylo říct že se přidá takový blok, za kterým stojí potřebná většina konsensuální síly. Síťový konsensus tak musí mít pravidla pro to, kdo má v daném čase vytvořit nový blok, jaký má mít blok podobu, a kdo bude blok validovat. Nutná jsou také pravidla pro výběr bloku, či celého řetězce bloků v případě, že je jich k dispozici více. Dále pravidla upravují odměňování a trestání. Postavení uzlů v P2P síti není obvykle rovnocenné a v mnoha sítích mají jednotlivé uzly různé role. Z pohledu decentralizace se většinou zkoumá počet uzlů, které mohou v dané síti vytvořit blok, případně daný blok validovat a potvrdit ho jako platný. 

Všimněte si, že síťový konsensus decentralizované sítě má hodně společného s demokracií, kde například při hlasování rozhoduje hlas většiny. Očekává se, že menšina bude rozhodnutí většiny respektovat. Vítězná většina získá právo rozhodovat a užívat si dalších výhod spojených s tím spojených, avšak menšina má právo na celý proces rozhodování dozírat a ozvat se v případě nesrovnalostí. Největší výhoda demokracie spočívá v tom, že jsme schopni zbavit se nepohodlného lídra a zvolit si někoho jiného. Tento princip je pro přežití decentralizované sítě také naprosto nezbytný. Pokud by skrze vzácný zdroj získal dominanci v síti podvodník a své pozice by zneužíval, lidé by síť opustili. V síti by totiž nepanoval princip demokracie, ale tvrdý diktát v podobě produkce bloků. 

Proč je vlastně nutné ke konsensu dospět?

Věřím, že na odpověď byste přišli sami. Každá kryptoměna musí být v první řadě co nejvíce decentralizovaná. To znamená, že neexistuje žádná autorita, která by odpovídala za ověřování transakcí a produkci nových bloků. Tuto činnost by měly v ideálním případě provozovat náhodně vybrané uzly. A protože se uzlům v principu nevěří, je potřeba na jejich činnost dohlížet. V daném časovém intervalu tak většinou navrhne blok jeden náhodně vybraný uzel a všechny ostatní uzly mají právo ověřit, že je blok validní. Alternativně může konsensus fungovat tak, že se náhodně vylosuje určitý počet ověřovacích uzlů, které platnost navrženého bloku potvrzují. Existuje tak daná skupina uzlů, která může nový blok odmítnout, pokud není v pořádku. Rozhoduje se podle vůle většiny. Ostatní uzly už pak blok pouze akceptují. 

Dalším důvodem je, že je potřeba transakce ověřovat vůči sobě navzájem. Nějaký uživatel by se totiž mohl pokusit utratit jednu minci vícekrát, a kdyby každou transakci ověřovaly jiné uzly bez daného kontextu, mohlo by mu to projít. To samé by se mohlo stát, kdyby bylo možné, aby dva uzly vytvořily ve stejný čas každý svůj blok a oba by byly sítí akceptované. To je samozřejmě nežádoucí. Síť musí být schopna těmto útokom zamezit, stejně tak jako musí být schopna hlídat si správný počet mincí v oběhu a další věci. Proto se bloky přidávají po jednom a skládají se za sebe. Pokud v daný moment existuje více kandidátů na přidání do blockchainu, vybere se podle nějakého pravidla protokolu pouze jeden blok. Pojďme se nyní podívat jak se ověřují transakce.

Alice je podvodnice a snaží se utratit minci M dvakrát. Vytvoří proto následující transakce.

  • Transakce 1: Alice pošle minci M na adresu A.

  • Transakce 2: Alice pošle minci M na adresu B.

Transakce 1 je poslána jako první a jedná se o platbu v obchodě na adresu A. Transakce 2 je poslána jako druhá a mince M se má připsat na adresu B, která patří také Alici. Alice se snaží zaplatit, odnést si zboží a zároveň nepřijít o minci. Každý uzel zodpovědný za vytvoření bloku prochází všechny transakce, které chce vložit do bloku. S tímto podvodem se samozřejmě počítá a uzel lehce pozná, že mince M se utrácí dvakrát. Uzel akceptuje pouze jednu transakci na základě výše poplatku či času odeslání. Druhá transakce se zahodí.

Teoreticky se může stát, že se v danou chvíli vytvoří dva validní bloky, kde jeden kandidát obsahuje transakci 1, zatímco druhý uzel vložil do bloku transakci 2. Obě transakce se tak mohou krátkodobě jevit jako potvrzené. Pravidla protokolu však počítají i s touto možností, takže jeden blok zůstane validní, zatímco druhý se zahodí či osiří a to včetně jedné z transakcí. Pokud se pravidla protokolu vymyslí a implementují správně, Alici se podvod nezdaří. Vždy je dobré vědět, jak přesně konsensus funguje, abyste věděli, kdy jsou mince skutečně vaše. Jedno potvrzení, tedy přidání transakce do bloku, nemusí stačit. Většinou se musí čekat na více potvrzení, tedy do doby, než se podaří přidat více bloků za blok s vaší transakcí.

U PoW sítí jsou to minuty až hodiny. U PoS sítí můžete mít jistotu během minuty. Existují sítě, které garantují finalitu transakce v momentě kdy se objeví v bloku, neboť nehrozí, že v daném intervalu vznikne více kandidátů na nový blok. Jistotu tak můžete mít do několika vteřin.

Pokusit se utratit jednu minci dvakrát může každý, kdo mince vlastní, a to včetně toho, kdo navrhuje nové bloky. Nový blok tak nesmí být automaticky považovaný za platný a je třeba jej ověřit ostatními uzly v síti. Ostatní poctivé uzly v síti provádí validaci transakcí v novém bloku, takže pokud by blok obsahoval obě výše uvedené transakce, poctivé uzly by si ho do své verze blockchainu nezařadily. Pokud v síti probíhá aktivní schvalování bloku nějakou skupinou uzlů, skupina by blok odmítla a hříšníka hned penalizovala. Uzly se tak navzájem hlídají.

Je dobré zmínit, že ověření je dvojnásob důležité z pohledu toho, kdo přidává další blok. Další přidaný blok totiž zdvojnásobí šanci na to, že ten předchozí v blockchainu zůstane. Proto je žádoucí, aby se uzly v přidávání bloků navzájem střídaly a jejich množství bylo co největší. Uzly by neměly dopředu vědět, v jakém pořadí se na ně dostane řada co se týče produkce bloků. Výběr by měl být náhodný a nedeterministický. Pokud by měl podvodný uzel velkou míru jistoty v tom, že je schopný přidat třeba 5 bloků v řadě, pokus o podvod by se mu mohl podařit.

Na konsensus se můžete dívat jako na shodu většiny uzlů nad přidáním nového bloku. K síťovému konsensu dochází v pravidelných intervalech, takže se neustále přidávají nové bloky s transakcemi. Je to tedy nikdy nekončící proces. Dokud budou většinu tvořit poctivé uzly či aktéři, nebude docházet k podvodům. Teoreticky to platí i v případě, že většinu tvoří jeden jediný uzel či aktér, který se chová poctivě. Zde je však malá míra jistoty, že tato entita své chování nezmění. Decentralizace je důležitá hlavně kvůli důvěře lidí v danou síť. Uživatelé si musí být jistí, že jednotlivec nemůže zničit dlouho budovanou důvěru a tím také hodnotu mincí či celý budovaný ekosystém. Na případný podvod se může velmi rychle přijít, nicméně útočníkovi to může být jedno. Vysoká míra decentralizace je důležitá také z pohledu odolnosti vůči externím útokům, necenzurovatelnosti transakcí, nějakém interním intrikám, či zneužití pozice silnějších aktérů. 

Pokud bych měl utváření konsensu popsat co nejobecněji a jednoduše, udělal bych to asi takto. Čas je rozdělen na stanovené časové úseky a v každém z nich se očekává vytvoření bloku. Blok v daném časovém úseku navrhuje jeden náhodně zvolený uzel. Můžeme mu říkat producent bloku. Při výběru hraje roli konsensuální síla, která ovlivní výběr uzlu s právem blok vyprodukovat. Všechny ostatní uzly jsou v daném časovém úseku v roli validátorů bloku. V dalším časovém úseku se role producenta změní. Blok zůstane v blockchainu pouze tehdy, pokud ho většinově akceptují entity, které disponují potřebným množstvím konsensuální síly. 

Pokud bychom se vrátili k naší úvodní úvaze o navržení času, řekli bychom, že čas vždy navrhuje jeden člověk a pokud to vyhovuje většině, všichni se sejdou právě v daný čas. Na setkání někdo jiný navrhne další čas setkání a vše se opakuje. Většina akceptuje navržený čas jen v případě, že je validní. Hlasování může proběhnout třeba tak, že ruku zvednou všichni ti, kdo souhlasí. Ruce se sečtou a pokud je jich většina, navržený čas platí.

Nelze například navrhnout čas setkání v minulosti, neboť by se skupina nikdy nesešla. K dalšímu konsensu by tedy už nikdy nedošlo. V takovém případě většina účastníků čas neakceptuje a někdo jiný musí navrhnout jiný validní čas setkání. Kdyby čas navrhoval stále dokola ten samý člověk, byl by to zřejmě nějaká autorita s nadřazenými právy. Tomu se v případě decentralizace chceme vyhnout. Náhodnost volby navrhovatele času se dá v tomto případě realizovat skrze známou hru tahání zápalek. Kdo si v daný čas vytáhnou tu nejdelší, dostane právo navrhnout čas. Důležité je zajistit, aby došlo k dalšímu setkání. 

Jak navrhnout dobrý síťový konsensus

Síťový konsensus bychom mohli posuzovat z mnoha různých úhlů pohledu. Designéři distribuovaných protokolů většinou balancují mezi dvěma klíčovými vlastnostmi: životnost či životaschopnost (liveness) a korektnost (safety/correctness). Český překlad může být trochu matoucí, pojďme se podívat na význam termínů skrze příklad.

Řekněme, že v síti jsou dva či více uzlů, které se chtějí vzájemně domluvit na nějaké hodnotě třeba od 1 do 1000. Každý uzel může mít jiný návrh. Cílem je, aby se domluvili na hodnotě, se kterou budou všichni souhlasit. V kontextu blockchainu to může znamenat, že uzly budou souhlasit s novým blokem a to včetně všech transakcí v něm. Síťová korektnost klade důraz na to, že nesmí dojít k problematickému, či rozpornému konsensu. Jinými slovy, v ideálním případě by měly všechny uzly souhlasit s jedním návrhem. Žádný poctivý uzel není nucen akceptovat z jeho pohledu nevalidní data.

Vedle toho musí platit, že ke konsensu někdy v očekávaném časovém úseku dojde. Musí se zajistit životnost konsensu. Uzly nesmí skončit v nějakém nekonečném dohadování se mezi sebou jen proto, že má každý jiný názor. Síťová životnost klade důraz na to, že k dohodě v daném časovém intervalu vždy dojde a to i skrze případné neshody. Protokol se nesmí zastavit a musí být schopný vyhrabat se z případných problémů či útoků.

 burza binance

Korektnost zajišťuje, že nikdy nedojde k něčemu špatnému, zatímco životnost zajistí, že k něčemu dobrému nakonec vždy dojde. V otevřených distribuovaných sítích se vše komplikuje tím, že se v ní nacházejí útočníci. Mohou v ní být uzly, které se domluvit nechtějí. Distribuované sítě se musí s útočníky vypořádat a musí být schopné na určité úrovni zajistit korektnost i životaschopnost. Teorie říká, že obě vlastnosti nemohou být plně uspokojeny.

Životaschopnost a korektnost mají vliv na kvalitu ostatních vlastností protokolu. Většinou nás zajímá úroveň decentralizace, škálovatelnost, rychlost, za jakou jsou uzly schopné se domluvit, férovost konsensu, co se týče odměňování účastníků, možnost aktivně se přidat k utváření konsensu, finalita transakcí a bloků, cena za konsensus, možnost přežít útok, a mnoho dalších. Vysvětlení všech pojmů by vydalo na samostatný článek, nicméně věřím, že většina vlastností je už z názvu zřejmá. V principu neexistuje dobrý či špatný konsensus. Vždy je to o rovnováze vlastností pro daný účel a o kvalitě implementace. Protokol zaměřený na rychlé transakce může upřednostňovat rychlost na úkor decentralizace. Decentralizace bude klíčovou vlastností pro vytvoření nové formy tvrdých peněz. Obě varianty musí být v první řadě bezpečné. Jakmile by uživatelé přicházeli o peníze, sítě by nepoužívali. 

Pojďme se nyní podívat na Nakamoto konsensus, který jako první použil Satoshi Nakamoto v Bitcoinu. Co myslíte, upřednostňuje PoW životnost nebo korektnost?

Jak funguje Proof of Work

Než si na otázku odpovíme, podíváme se, jak v Bitcoinu vzniká nový blok. Předpokládejme, že jsme na začátku nového cyklu a uzly se mají domluvit na přidání dalšího bloku. V následující části záměrně zanedbám existenci poolů a budu se bavit pouze o uzlech, neboť protokol o poolech v podstatě neví. Možná by bylo přesnější říct, že současná pravidla Bitcoin protokolu nebrání jejich existenci. 

  1. Všechny uzly, které akceptovaly dorazivší nový blok, začnou s těžbou nového bloku. Jelikož se tato informace šíří sítí postupně, uzly nezačínají přesně ve stejný moment. 
  2. Každý uzel v síti si z mempoolu vybere validní transakce dle svého uvážení (většinou dle výše poplatku) a naplní jimi nový blok. 
  3. Uzly mezi sebou soutěží v tom, kdo rychleji vyřeší energeticky náročnou úlohu a předloží náležitý důkaz o vyřešení. Náročnost úlohy se upravuje tak, aby zabrala přibližně 10 minut. Uzlům to však může zabrat klidně hodinu, ale také méně než 10 minut.
  4. Jakmile některý z uzlů najde řešení, propaguje blok na ostatní uzly a to včetně důkazu o vyřešení. Uzel začne jako první pracovat na dalším bloku. Jakmile ostatní uzly zvalidují, že důkaz i transakce jsou v pořádku, přestanou pracovat na aktuálním bloku a začnou také pracovat na dalším novém bloku. Vše v podstatě začíná od kroku 1. Všimněte si, že vítěz v podstatě zhatí práci ostatních uzlů, co se týče práce na aktuálním bloku.

Už znáte odpověď na otázku? Nakamoto konsensus klade větší důraz na životnost na úkor korektnosti. Protokol není schopen zajistit finalitu nově vytvořeného bloku. Vše se v podstatě řídí jediným pravidlem. Pravý a validní je ten řetězec bloků, na kterém se odvedlo více práce. Pokud by dva uzly vytěžily blok v přibližně stejný čas, oba bloky by byly v danou chvíli validní. Až další přidané bloky rozhodnou o tom, který z bloků se zahodí. Zajímavé je, že uzly se v podstatě vůbec nedomlouvají na tom, jaké transakce v bloku budou či nebudou, nebo na jaký blok se bude navazovat v momentě, kdy vznikne rozvětvení blockchainu (vidlička/fork). Bitcoin protokol je v podstatě nezastavitelný. Všechny uzly soutěží o přidání bloku, neboť chtějí  získat odměnu. Uzly o sobě navzájem nemusí ani vědět. Je úplně jedno, jestli v danou chvíli soutěží 100 uzlů, nebo jeden jediný. Důležité je předložit důkaz. 

Ostatní uzly nový blok akceptují tak jak je, pokud je po všech stránkách validní. Tím, jak se blok šíří sítí, upravují si jednotlivé uzly svoji verzi blockchainu. Pokud blok vyhovuje pravidlům, nedá se nikterak a nikde reklamovat. 

Pokud bychom se vrátili k naší analogii se skupinou lidí domlouvající se na čase, tak v případě Bitcoinu vše probíhá tak, že se všichni postaví na start náhodně dlouhého závodu (práce) a kdo doběhne jako první, navrhne čas. Pokud je čas v blízké budoucnosti (splňuje pravidla), tak s tím všichni automaticky souhlasí bez jakéhokoliv dalšího hlasování (nehlasuje se zdvižením ruky). Během velmi krátké chvíle už všichni zase běží doslova jak o závod.

Lidé nemají na pochyby čas, neboť všichni ostatní běží a pracují na návrhu nového času setkání. Nemá smysl si stěžovat, protože s každým novým závodem se stejně šance na úspěšnou reklamaci snižuje. Pokud by chtěl někdo měnit minulé časy setkání (přepsat historii), musel by se vrátit zpět na předešlé startovní čáry a pokusit se dostihnout závodníky, kteří však stále pádí kupředu. 

U Bitcoinu je zajímavé to, že vznik poolů nevyžadovalo změnu pravidel protokolu. V současném uspořádání mezi sebou nesoutěží všechny uzly v síti, ale pouze pooly. Ostatní plné uzly nemají žádné konsensuální právo, ze kterého by plynula přímá odměna. Tyto uzly se přesvědčí, že je navržený blok validní a pokud ano, upraví si svůj blockchain. Pooly plně převzaly konsensuální právo, které jim delegují těžaři. Nyní se přemýšlí nad tím, jak rozhodovací moc více distribuovat na více subjektů.

Řekli jsme si, že PoW upřednostňuje životnost. To ale neznamená, že by byl nějak špatný v korektnosti. Uzly (pooly) dopředu neví, kdo přidá další blok. Navíc na novém bloku se začne pracovat až poté, co se v síti rozšířil nový validní blok. Tím je zaručeno, že transakce v bloku jsou validní. Kdyby se šířil blok s jedinou nevalidní transakcí, zahodil by se. Respektive důležité je, že ho zahodí hlavně pooly, které pracují na bloku. Ty by tak pokračovaly v těžbě bloku. Konsensuální práva spojená například se zařazením transakcí do bloku a její případnou cenzurou, či výběru bloku, na kterém se bude pokračovat, jsou plně v režii poolů. Ostatní uzly v podstatě jen akceptují vůli poolů. 

Když se nad tím více zamyslíte, tak zjistíte, že se vlastně není nad čím domlouvat. Co se týče transakcí, tak uzly nemusí mít nutně zásadně jiný názor na to, jaké transakce do dalšího bloku vložit. Cílem je co nejrychleji odbavit všechny validní transakce. Bloky se tak budou lišit pouze v počtu či pořadí transakcí. Proto je v případě kryptoměnových sítích možné akceptovat vůli jednoho uzlu, který blok aktuálně navrhnul. Jednotlivé uzly zkrátka nemají potřebu prosadit v daném kole své preference. To však neznamená, že by tuto činnost mohl vykonávat pouze uzel jediný. Ve hře jsou další klíčové věci, které jsou spojené s rozhodovací mocí. Bez další hlubší analýzy můžeme konstatovat, že korektnost je u PoW sítí dobře zajištěná. 

Krása Nakamoto konsensu spočívá v tom, že nový validní blok může vzniknout bez nutnosti dohody mezi uzly. Není potřeba něco navrhnout, poté čekat na odpovědi a ty pak případně vyhodnotit. Dokonce není ani nutné dohodnout se na tom, kdo bude navrhovatelem nového bloku. Nevýhody z pohledu konsensu jsou spojeny hlavně se zdrojem, přes který se konsensuální moc distribuuje na pooly. Pooly chtějí získat odměnu co nejčastěji, takže mezi sebou bojují o hashrate. Čím vyšší hashrate daný pool má, tím více odměn má šanci získat. Vytvořit jeden blok trvá Bitcoinu průměrně 10 minut a vzhledem k tomu, že blok není finální, je třeba počkat na více potvrzení. Finalita transakcí se tak může dostat až na hodinu. Další nevýhodou je rozvětvování blockchainu. Tento text ale nemá za cíl zabývat se všemi výhodami či nevýhodami.

Jiné přístupy ke konsensu

Pojďme si letem světem projít alternativní přístupy. Některé PoS protokoly upřednostňují korektnost nad životností. Na základě pravidel protokolu se ví, jaký uzel má v daném okamžiku vytvořit nový blok. Může a nemusí existovat skupina uzlů, které jsou pověřené validací bloku a mohou ho aktivně odmítnout před tím, než se blok dostane na uzly bez konsensuálního práva. Výhoda spočívá v tom, že k vytvoření bloku může dojít v řádech vteřin a nemusí docházet k rozvětvení blockchainu. Pokud k rozvětvení dojde, je problém rychle vyřešený.

V ideálním případě by k rozvětvení blockchainu nemělo docházet, neboť je nepříjemné, když je transakce potvrzena a po nějakém čase opět není (nebo je potvrzena ve dvou soupeřících blocích). U PoW i PoS sítí většinou platí, že čím je blok producerů více, tím více může vznikat rozvětvení. Platí to hlavně pro sítě, kde mezi sebou v každém kole producenti bloků bojují o vytvoření bloku. Existují sítě, kde k rozvětvení blockchainu nedochází vůbec, takže finalita transakcí je okamžitě platná s prvním potvrzením. 

V blockchainových P2P sítích se vše důležité točí kolem uzlů, které produkují bloky. Jedna z požadovaných vlastností z pohledu decentralizace je reálná možnost zapojit se do tohoto procesu a získat odměnu. To s sebou nese nevýhodu v tom, že počet takových uzlů může růst, což sice zvyšuje decentralizaci, ale zesložiťuje konsensus. Kdyby měly PoW sítě větší počet poolů, častěji by docházelo k rozvětvení blockchainu. U některých PoS sítí by to mohlo zkomplikovat dohodu mezi uzly s konsensuálním právem, neboť by to kladlo vyšší nároky na vzájemnou komunikaci. Mnoho projektů má statický počet blok producentů, kteří jsou nějakým způsobem voleni, nebo je jim konsensuální moc delegována. Větší výzvou je vytvořit PoS konsensus, který může mít dynamický počet blok producentů.

Takové sítě už také máme. Některé PoS sítě mají principiálně velmi podobný konsensus jako PoW sítě, upřednostňují tedy životnost nad korektností. Rozdíl je především ve výběru uzlu, který získá pověření pro výrobu bloku v daném čase a předložení kryptografického důkazu o získání pověření. Blok se poté šíří síti úplně stejně jako je tomu u PoW sítí. Ostatní uzly ověří transakce a důkaz o pověření. 

Nedá říct, že pokud síť upřednostňuje korektnost, že je na tom nutně špatně ohledně životaschopnosti. Vždy je to o rovnováze a je třeba dobře zvažovat další vlastnosti sítě jako decentralizace, bezpečnost a škálovatelnost. Pokud je důraz na korektnost přehnaně vysoký a dojde k nějakému nečekanému problému, může dojít až k zastavení utváření konsensu. Nový blok se prostě nepřidá, neboť na něm nepanuje většinová shoda. V blockchainovém prostředí dává větší smysl upřednostnit životaschopnost nad korektností, a to hlavně z toho důvodu, že účastníci konsensu by se v otevřené síti neměli navzájem znát, natož spolu řešit tento typ problému. Toto je extrém, ke kterému by dojít nemělo, ale v praxi jsme to viděli. 

Závěr

Veřejné blockchainové P2P sítě jsou unikátní svými ekonomickými modely. Síťový konsensus musí být spojen s nativními mincemi projektu. Pokud tomu tak není, je něco špatně a tyto sítě nejspíš nebudou veřejné, decentralizované, nebo bezpečné. Konsensuální moc se musí nějak rozumně distribuovat na uživatele sítě, nebo alespoň na významnou část autonomních subjektů. Ekonomická motivace nezávislých subjektů k čestnému chování a možnost se tohoto procesu účastnit je na veřejných sítích to nejcennější. Musí však být zajištěno, že je ekonomický model dlouhodobě udržitelný. To může být velký problém, neboť se musí pracovat s nějakým dynamickým ekonomickým modelem, který bude v čase zásadně ovlivňovat síťové vlastnosti.

Prostředí a míra adopce jsou také dynamické procesy a dlouhodobě může být složité zachovat původní ekonomický model. Chtěli bychom budovat sítě, které budou decentralizované, škálovatelné a bezpečné, vše se však spoléhá na vzácný zdroj, který k distribuci moci slouží. Konsensuální moc se dá koupit, takže se dá očekávat, že veřejné sítě budou tíhnout k centralizaci s tím, jak bude růst jejich finanční a sociální vliv na společnost. S vyšší mírou adopce tak přijdou tlaky, se kterými se budou muset jednotlivé projekty nějak popasovat. Bude trvat ještě několik desetiletí, než budeme bezpečně vědět, že současné koncepty fungují dobře.

Boj proti centralizaci protokolů může proběhnout na úrovni práce se zdrojem samotným, což by protokolu umožnilo více dohlížet na svoji decentralizaci. Síťový konsensus je hlavně o definovaných pravidlech. Jaká jsou pravidla, taková síť bude. Pokud pravidla většině účastníků nevyhovují, musí se změnit. To však klade vyšší nároky na propojení s fyzickým světem, které však stejně existuje. S decentralizací rozhodně u konce nejsme. Vše důležité je teprve před námi. Zejména u Bitcoinu bude zajímavé sledovat dění po dalších půleních

Nakamoto konsensus je dnes velice dobře popsaný a vyučuje se na univerzitách. Dobře známe jeho silné a slabé stránky. Sami byste mohli najít mnoho návrhů na vylepšení. Blockchain sítě dnes nevznikají pouze díky ICO mánii, ale mají zázemí univerzitního prostředí. Jsou projekty, které navázaly spolupráci s univerzitami záměrně, aby se největší mozky naší planety mohly podílet na bádání ohledně síťových konsensů, ale třeba také na pokročilých kryptografických funkcích. Navíc se tím projekty krásně decentralizují kolem IT odborníků, kteří mohou být ochotni postavit svoji kariéru na bádání nad nějakým problémem. Jeden z nejpokročilejších běžících síťových konsensů vznikl na MIT.

Tohle je velký krok vpřed, neboť je to důkaz toho, že jsme na začátku něčeho velkého. Pokročilé technologie máme. Nyní je třeba se zeptat, jakým způsobem zvýšit jejich adopci. Už nyní se o veřejné sítě zajímají firmy, banky a nadnárodní instituce. S poptávkou nejspíš nebude problém. 

.

Jaromír Tesař

Podobné články

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..