Jak funguje Proof of Stake
Proof of Stake (PoS) je mladší síťový konsensus, který má v porovnání s Proof of Work (PoW) mnoho výhod. K dohodě o přidání nového bloku může síť dospět během několika vteřin a u některých sítí je blok okamžitě finální. Nedochází tedy k nešťastnému rozvětvování blockchainu. PoS sítě jsou více decentralizované, neboť je pro lidi jednodušší stát se producentem bloků, nebo alespoň tím, kdo konsensuální sílu producentům deleguje. Při tom všem není nutné konzumovat enormní množství energie. Mnozí se asi zeptají, jak je to možné, jestli to může fungovat a hlavně, jestli je to dostatečně bezpečné.
PoS konsensus, stejně tak jako PoW, se opírá o matematiku, vědu a kryptografii. Není to nic tajemného, čemu byste nedokázali porozumět. Vlastně celý koncept se opírá o podobné principy, které dobře zná každý držitel kryptoměny. Pokud víte jak funguje asymetrická kryptografie a digitální podpis, bude pro vás pochopení PoS konsensu hračkou.
Nebojte se, v tomto článku nepůjdeme příliš do hloubky. Budeme se bavit pouze o základních stavebních kamenech a principech a nebudeme řešit konkrétní projekty. Aby bylo pochopení co nejsnazší, ukážu vám, že PoS konsensus může fungovat velmi podobně jako PoW konsensus. Jestli víte co je to P2P síť, tušíte co je síťový konsensus a znáte rozdíl mezi privátním a veřejným klíčem, můžeme začít. V článku nebudu mezi sebou porovnávat PoS a PoW, ale kde to bude vhodné, upozorním na rozdíly. Nebudeme se ani příliš zabývat útoky na sítě, nicméně k bezpečnosti se dostaneme.
Jak se stát producentem bloků
Představte si, že máte otevřenou síť plnou uzlů. Může jich být klidně tisíc, nebo deset tisíc. Přitom platí, že ne každý účastník provozující plný uzel touží po tom stát se producentem bloků. Uzel produkující bloky musí být k síti neustále připojený a synchronizovaný. Každý tým budující síťový konsensus musí vyřešit zcela klíčovou věc. Kdo má kdy získat právo k vytvoření bloku a jak má validní blok vypadat. Kdyby to každý uzel dělal náhodně jak se mu zachce, vznikl by z toho pěkný blokový guláš. Uzly jsou motivovány k tomu, aby bloky produkovaly co nejčastěji, neboť je za to odměna.
V PoW sítích skutečně probíhá v každém kole otevřená soutěž mezi pooly o vytvoření bloku. Třeba Bitcoin síť si to může dovolit, neboť velkých blok producentů je kolem 10 a dá se spolehnout na energeticky náročnou úlohu v tom smyslu, že v soutěži uspěje v daném kroku jen jediný pool. Vytvořit nový blok je v Bitcoin síti úmyslně časově dlouhý proces trvající průměrně 10 minut. Pokud náhodou uspěje více poolů, nevadí to. Konflikt vyřeší následně přidané bloky.
PoS konsensus umí blok vytvořit rychle a levně. Uzly proto mezi sebou nemohou v každém kole soutěžit. Do systému je nutné vnést nějaký řád a pravidla. Každý distribuovaný protokol potřebuje definovat pravidla, která umožní dospět k dohodě nad přidáním nového bloku velkému počtu uzlů v dynamicky se měnícím prostředí. Uzly tak musí mít nějaké ponětí o čase a vědět, kdy se od nich očekává vytvoření nového bloku. Vše komplikuje fakt, že se celý proces musí odehrávat zcela decentralizovaně. Jednotlivé uzly musí být zcela autonomní a spoléhat se pouze samy na sebe. Nabízí se otázka. Jak se mají uzly v otevřené síti dozvědět o dalších uzlech, které chtějí produkovat bloky?
Řešení je překvapivě velmi prosté. Všechny poctivé uzly sdílí stejnou verzi blockchainu a je k dispozici distribuovaná přenosová síť, po které se přenáší bloky a transakce.. Uzly se tak mohou za protokolem daných podmínek svobodně registrovat jako zájemci o produkci bloků. Případně se mohou také svobodně odhlásit. Registrace tak může mít formu nějaké digitální zprávy, která se může uložit do blockchainu. Všechny uzly tak ví o všech ostatních producentech bloků, a to včetně kompletní historie od genesis bloku až po současnost. Stav se mění s každým nově přidaným blokem.
Registraci ve svobodné síti samozřejmě nikdo neschvaluje. Je-li registrace validní a uzel splní podmínky, stává se automaticky producentem bloků. V některých sítích nemusí samotná registrace nutně znamenat, že daný uzel v dohledné době skutečně vyprodukuje blok. Pokud protokol definuje nějaký fixní počet mincí, které uzel musí vlastnit (a většinou zamknout), stává se uzel platným producentem bloků. Některé sítě nepožadují žádné minimum a uzel se může registrovat s velmi malým počtem mincí. Může se stát, že takový uzel vyprodukuje první blok po velmi dlouhé době. Záleží na tom, kolik a jak velkých uzlů se k produkci bloků registruje.
PoS síť ví o všech uzlech, které mají zájem o produkci bloků. Dá se říct, že síť je schopna dozírat na svoji vlastní míru decentralizace a algoritmy mohou s uloženými údaji libovolně pracovat. Pokud zná PoS uzel genesis blok, měl by být schopen skrze definované algoritmy projít celý blockchain včetně všech předložených podvodných variant a dobrat se až k poslednímu přidanému bloku.
Dodejme, že v PoW sítích většinou nic takového není. Většina sítí pracuje pouze s transakcemi a bloky. Jakmile se objeví nový validní blok, přidá se. Pokud jsou ve hře pooly, jsou producenty bloků a těžaři jim poskytují hashrate. Vše se děje mimo síťový konsensus.
Kdo vytvoří další blok?
Kandidáty schopné vytvořit nové bloky máme. Nyní je třeba nějak rozhodnout, kdy se kdo dostane na řadu a podle jakých pravidel. Získání práva na vytvoření bloku je obvykle vázáno na vlastnictví mincí daného projektu. Často platí, že čím více daný uzel mincí vlastní, tím častěji může vytvořit blok a získat odměnu. Vlastník uzlu musí mít vlastní kůži ve hře. Vytvořit blok je u PoS velmi rychlé a narozdíl od PoW sítí není třeba čekat daný čas, než se zkonzumuje určité množství elektrické energie. Produkce bloků je také levná.
PoS sítě ctí obecný princip komunikace na internetu, kdy poslat zprávu musí být hlavně rychlé a levné. Podobně jako poslat email, či peníze skrze internetové bankovnictví. U PoW se konsensuální síla producentů bloků rozděluje na základě hashrate, který má daný uzel k dispozici. Aby se propálilo požadované množství elektrické energie, musí proces výroby bloků nějakou pevně danou dobu trvat. PoS sítě to obchází tím, že se konsensuální moc rozděluje skrze mince projektu. Tím se definuje pozice jednotlivých účastníků. Producenti bloků jsou motivování mít co největší konsensuální sílu, neboť je to opravňuje k častější produkci bloků a tím pádem mohou získat více odměn.
Jakmile však bloky neprodukují třeba kvůli technickým problémům, nedostanou odměnu a mohou být dokonce potrestáni tím, že se jim seberou zamčené mince. Po odečtení mincí uzel ztrácí část svého postavení. Pokud by uzel neprodukoval bloky delší dobu, nebo dokonce podváděl, může přijít o všechny mince a tím končí jako producent bloků. U některých protokolů se sebrané mince rozdělí na poctivé uzly, čímž se zvyšuje šance odolat případnému útoku na úrovni konsensu. Incentivy jsou pro producenty bloků nastavené velmi podobně jako u PoW sítí. Poctivé uzly mince dostávají, zatímco ty nepoctivé o ně přicházejí. U PoW se mince neodebírají, neboť uzly přicházejí o fiat peníze již při utváření konsensu. PoW sítě tak pouze odměňují a trest za nepoctivost je vždy implicitně přítomen.
Protože je vytvoření bloku levné, musí PoS protokol definovat pravidla, která poskytnou právo k vytvoření bloku v ideálním případě jediné entitě v daném kroku či kole. Síť ví o všech kandidátech, takže je relativně snadné ukázat prstem na jednoho z nich a nechat ho blok vytvořit. Na základě pravidel se tak stále dokola vytváří nějaké pořadí uzlů, které bloky ve správný čas produkují. Ostatní uzly musí mít možnost zkontrolovat, že blok vyprodukoval právě ten uzel, který k tomu měl v daný čas pověření. To je však relativně snadný úkol, neboť pořadí zná celá síť. Alternativně se od producenta bloku požaduje nějaký kryptografický důkaz o získání práva pro daný krok. Pokud blok v daném kroku vyprodukuje jiný uzel, jednoduše se zahodí. Za vyprodukování bloku ve špatném čase, nebo za pokus o podvod na úrovni transakcí je uzel ekonomicky potrestaný.
Výběr producenta bloků se nám tedy zužuje na určení pořadí kandidátů či k nějakému náhodnému losování. K tomu se dají využít třeba mince projektu, na jejichž základě se dá vytvořit nějaký druh losování či loterie, kde se do úvahy vezme množství mincí jednotlivých uzlů. Každá jednotlivá mince, nebo její subjednotky, se dá využít jako výherní tiket. Algoritmus tak může v každém kole ukázat na konkrétní minci a její majitel získá právo vytvořit blok v rámci daného kola. Algoritmus musí ukazovat ne na všechny mince v oběhu, ale pouze na ty, které jsou nějak spojené s produkcí bloku. Do hry tak vstupují pouze mince, které drží kandidáti na produkci bloků. Producentům bloků (což mohou být pooly) mohou větší konsensuální sílu delegovat ostatní držitelé mincí přes proces zvaný staking. Na poctivost v síti a míru decentralizace tak může dohlížet doslova každý držitel mincí, který svým rozhodnutím ovlivní rozpoložení sil. Síť vždy ví o všech mincích, které jsou v daném čase používané pro distribuci síly a může s nimi pracovat.
Spolu s producentem bloku se dá pro každé kolo (nebo více kol) vylosovat také skupina ekonomicky motivovaných validátorů, kteří musí nový blok potvrdit před tím, než se blok považuje za validní. Zde je výhoda v tom, že blok je po schválení okamžitě finalizovaný.
Ať už je proces volby uzlů s právem vytvořit blok jakýkoliv, musí být v první řadě nedeterministické z dlouhodobého hlediska. Z pohledu bezpečnosti je žádoucí, aby pořadí výherců nebylo dopředu známé a nikdo nemohl v konkrétní čas útočit na uzel, který to dobou získá právo na produkci bloku. Jak jsme si řekli, projekty losování řeší různými způsoby. My si ukážeme jeden způsob, který je mezi projekty relativně populární. Jedná se o kryptografickou funkci Verifiable Random Function (VRF). Na vývoji se mimo jiné podílel Silvio Micali, jemuž vděčíme za vylepšení digitální podpisu.
VRF umožňuje veřejně ověřit výstup kryptografické funkce. Tato funkce vezme nějaké vstupy, a to včetně privátního klíče toho, kdo funkci používá. Na základě vstupů se vygeneruje důkaz, který se dá veřejně ověřit všemi zájemci, pokud mají k dispozici korespondující veřejný klíč. Uzel je tak schopen předložit určitý kryptografický a lehce ověřitelný důkaz, že dostal právo vyprodukovat blok.
Vzpomínáte jak jsem psal, že se uzly se zájem o produkci bloků musí registrovat? Uzel může poslat zprávu do sítě a vložit do ní veřejný klíč uzlu, který koresponduje s privátním klíčem používaným pro VRF. Pokaždé když VRF vygeneruje důkaz na daném uzlu, všechny ostatní uzly mohou ověřit, že je důkaz validní. Použijí ID uzlu které je spojené s registrací a najdou si odpovídající veřejný klíč za účelem ověření.
Každý uzel produkující bloky bude mít unikátní privátní klíč pro VRF a v rámci registrace poskytne síti veřejný klíč. Každý uzel může v každém kroku zcela autonomně zjistit, jestli v daném kole získal právo na vytvoření bloku. Pokud ano, blok vytvoří a vloží do něj mimo jiné VRF důkaz a nějaké své ID. Aby se zajistila autenticita uzlu, blok se ještě podepíše privátním klíčem, který slouží právě a pouze pro podepisování bloků. I v tomto případě je snadné veřejný klíč pro podepsání bloku vložit do registrační zprávy. Celá síť je tak schopna ověřit důkaz o tom, že daný uzel dostal právo vytvořit blok a současně se ověří autenticita producenta.
Vstupem pro VRF musí být nějaká náhodná minulost, která je společná pro všechny uzly. Často se používá nějaká část historie blockchainu, ze které se udělá hash. Tento hash bude stejný pro všechny poctivé uzly. A co náhodnost v rámci každého uzlu? Jeden ze vstupů je privátní klíč pro VRF. Může to však být také pořadové číslo kroku, jméno či ID uzlu, atd. Každý uzel tak bude mít v každém kroku jiný náhodný výstup. Náhodný výstup se dá vzít a na základě dalších pravidel algoritmu zjistit, jestli uzel získal právo vytvořit blok v daném kroku.
Každý uzel v síti zcela autonomně a do jedné vteřiny ověří, jestli získal právo vyprodukovat blok. Pokud ano, učiní tak. Výroba bloku se dá také hravě stihnout pod jednu vteřinu. Uzel do bloku vloží VRF důkaz a poté ho digitálně podepíše. Pokud nejsou ve hře validátoři, blok se může začít šířit sítí na ostatní uzly, které jsou schopné ověřit jeho validitu. Ověření je velmi snadné. Stačí se podívat do bloku, najít si ID producenta bloku a podle ID si najít veřejné klíče na ověření, které jsou díky registraci uložené v blockchainu. Každý uzel má tak klíče okamžitě k dispozici, takže ověření je také časově nenáročné.
Je důležité zmínit, že pokud má uzel s právem vyprodukovat blok technické potíže, nemusí se vytvořit nový blok. To samé se může stát, pokud má uzel velkou konsensuální sílu a rozhodne se bloky neprodukovat aby síť poškodil. Je to nemilé, ale na druhou stranu to zase až tak nevadí, pokud útočník nemá kontrolu nad významně velkým počtem mincí. Jelikož PoS sítě tvoří nové bloky relativně rychle, jen stěží se stane, že by síť nepřidala nový blok během třeba minuty.
Bezpečnost PoS je hlavně o kryptografii
Bezpečnost PoS sítí se opírá o kryptografii a schopnosti operátorů dobře střežit privátní klíče. To je však schopnost, kterou dobře zvládají i běžní uživatelé kryptoměn používající peněženky. Operátoři uzlů produkující bloky dobře vědí co dělají a privátní klíče si umí schovat. Nicméně není potřeba spoléhat se pouze na profesionalitu operátorů a dají se nastavit pravidla a procesy, které bezpečnost výrazně zvýší. Při případném hacku operátora uzlu tak nemusí nutně dojít k něčemu dramatickému.
Při registraci uzlu se zájem o produkci bloku ve hře obvykle figuruje více privátních klíčů, kde jeden je uložený mimo síť (offline), ideálně v hardwarové peněžence nebo na flash disku. Tímto klíčem se periodicky garantuje právo operačnímu privátnímu klíči, který slouží výhradně pro podepisování bloků a je uložený přímo na uzlu. Klíč je tedy online a může se dostat do rukou útočníka. Pro zvýšení bezpečnosti může operační klíč periodicky expirovat. Po dané periodě je nutné použít offline klíč a vygenerovat nový operační klíč. To vše může proběhnout offline, takže velmi bezpečně. Operátor tak může na uzel nahrát pouze operační klíč. Veřejný klíč nově vygenerovaného operačního klíče se pak nahraje do blockchainu přes další registrační zprávu. Dojde tak k aktualizaci klíče.
Použité privátní operační klíče se mažou. Po smazání klíčů je v podstatě nemožné udělat podpis bloku znovu. Tím pádem je zajištěna nezměnitelnost historie blockchainu. Útočník by v podstatě musel vynaložit obrovské množství energie a potřeboval by hodně času na to, aby k veřejnému klíči dohledat privátní. Je to v principu ten samý problém, který řešíte když se ptáte, jestli může někdo najít privátní klíč k vaší peněžence. V současnosti v podstatě nemůže.
I kdyby se útočníkovi podařilo nějaký privátní klíč prolomit, nebo hacknutím odcizit operátorovi, příliš si tím nepomůže. Všechny uzly ví, jak historie blockchainu vypadá. Podvodník by tak mohl změnit jen konkrétní bloky, jenže tyto bloky by nenavazovaly na své okolí. V blockchainu jsou bloky provázané přes hashe. I kdyby měl podvodník k dispozici velký počet starých klíčů, vytvořil by si novou část blockchainu na svém uzlu a poté by začal řešit, jakým způsobem jeho verzi protlačit na ostatní uzly. Běžící uzel nemá potřebu měnit relativně dávnou svou historii. Útočník má určitou šanci oklamat uzel, který právě nabíhá a ptá se ostatních uzlů na to, jak vypadá blockchain.
Zde se nabízí otázka, jak útočník zjistí, jaký uzel právě nabíhá. Zde je to spíše otázka štěstí. I kdyby byl nový uzel krátce zmatený útokem, brzy zjistí, že nové bloky nenavazují na podvodnou historii. Nabíhajícímu uzlu může nabídnout svoji verzi více uzlů, mezi nimiž mohou být uzly poctivé i nepoctivé. Aby útočník uspěl, musel by nový nabíhající uzel zcela obklíčit svými uzly.
Pokud operátoři staré klíče poctivě mažou a útočníkovi se podaří pár hacků, při kterých získá operační privátní klíče, může ovlivnit pouze probíhající konsensus, nikoliv však historii. Útočník tak může podepsat jen pár bloků v budoucnosti a to pouze do doby, dokud ukradené klíče neexpirují. Mít privátní klíč ještě neznamená, že má útočník vyhráno. Může totiž podepsat bloky jen v čase, kdy se na něj dostane řada (respektive na uzel, kterému byly klíče odcizeny). Pokud útočník udělá nevalidní blok, třeba se pokusí o utracení jedné mince dvakrát, ostatní uzly to lehce odhalí a blok stejně zahodí. Útočník tak není schopen napáchat velkou škodu. Nejhorší co může udělat je, že nevyprodukuje žádný blok a trochu se tak zpozdí zařazení nových transakcí do blockchainu. Jakmile se na tah dostane jiný poctivý uzel, transakce se stejně zařadí.
Nezapomeňte, že ve hře je stále offline klíč operátora. Jakmile tak operátor zjistí, že mu někdo ukradl operační privátní klíč, jednoduše vygeneruje nový a registruje ho. Případně může vygenerovat také nové privátní klíče pro VRF. Nová registrace přebije tu starou. Tím se v podstatě okamžitě invaliduje ukradený klíč pro podpis bloků a hacker má smůlu. Pokud operátorovi útočník neukradl jeho mince, což se nestane, pokud operátor používá offline úložiště také pro své klíče k adrese, poctivý operátor může velice rychle obnovit svůj uzel a pokračovat v poctivé produkci bloků. Samozřejmě musí zjistit, jak o klíče přišel a lépe si zabezpečit uzel. Dá se předpokládat, že pokud se hackerovi podaří ukrást mince, raději je rychle prodá, než by se pokoušel o nějaký náročný útok.
Dodejme, že sítě mohou být chráněné síťovou distribuovanou vrstvou, takže uzly produkující bloky mohou být schované za svým síťovým uzlem. Vytvoří se tak určitá bariéra, která hackerům zesložiťuje přímý přístup na uzly s operačními klíči. V praxi se setkáváme s kompromitováním PoS uzlů produkující bloky jen velmi vzácně.
Kvalita decentralizace je u PoS důležitější než u PoW
U PoW je vytvoření bloku drahé a časově náročné. Podvodný blok tak vidíme zřídka a často se jedná spíše o chybu než o záměr. U PoW i PoS sítí platí, že odhalit nevalidní blok je velmi snadné a rychlé. Bezpečnost PoW stojí hlavně na principu nákladné výroby a soutěži poolů mezi sebou. Je tak relativně jedno, že poolů je většinou málo. U PoS sítí roste zabezpečení s mírou decentralizace. To je však vlastnost, která je stejně žádoucí. Čím více existuje producentů bloků, tím více je ve hře privátních klíčů.
Každý jednotlivý nezávislý producent bloků má svůj uzel zabezpečený trochu jinak, takže je pro útočníka složitější prolomit v krátkém čase všechny najednou. Když se tak stane, škoda bude tím menší, čím více bude v sítí ostatních poctivých uzlů. PoS sítě tak mívají stovky producentů bloků a dá se očekávat, že jich jednou budou tisíce. Je to dáno také tím, že je snadné stát se producentem bloků. Vlastně stačí mít uzel běžící 24/7 a vlastnit určitý potřebný počet mincí. Operátor se poté lehce registruje do sítě a začne produkovat bloky dle výše svého vkladu.
Samozřejmě by bylo nepříjemné, kdyby se hackerovi podařilo prolomit ochranu nějaké velrybě, která by měla třeba 10% podíl konsensuální síly. Útočník by se dokonce mohl dostat k offline klíčům, takže by mohl obnovovat operační privátní klíče. Stále platí, že nejlepší co může udělat, je mince rychle prodat, nebo je proprat a začít s poctivým byznysem. Kdyby začal útočit, riskuje ztrátu mincí. Pokud se útok veřejně provalí, může jít cena mincí dolů a útočník ztrácí šanci na hacku vydělat. Pokud útočník nemá k dispozici nadpoloviční počet mincí (u některých sítí stačí menší množství), které jsou v daném čase používané pro distribuci síly, moc škody nadělat nemůže. Teoreticky by útočník mohl útok veřejně oznámit a dokupovat další mince na volném trhu. Chtěl by však útočník do útoku investovat vlastní peníze? To je otázka.
Podobně jako u PoW, také u PoS se mohou operátoři rozhodnout, že začnou nějak zneužívat své postavení a síti škodit pro svůj prospěch. V případě PoS si mohou nechávat operační privátní klíče a po skončení svého byznysu mohou začít nějak útočit. Nebo mohou klíče prodávat jedné entitě, která se tak postupem času dostane k velkému množství klíčů. Pravděpodobnost je nízká, ale existuje. Zamezit tomu může jedině velká míra decentralizace a současně profitabilita sítě.
Noví operátoři budou v čase přibývat a někteří síť opustí. Čím déle budou operátoři motivování síť udržovat, tím menší je šance, že skončí a prodají klíče. Operátoři nebudou na síť útočit, pokud budou mít svoji kůži ve hře. Udržovat uzel je relativně levné, takže pokud bude byznys profitabilní, nikdo bezdůvodně odcházet nebude. Jak už jsme si řekli, přepisovat historii je složité, neboť běžící poctivé uzly nebudou návrhy na změnu historie akceptovat. Pro síť je obecně více nebezpečné útočit na probíhající konsensus a ten mají v rukou uzly, které jsou ekonomicky motivování chovat se poctivě.
PoS sítě by byly z pohledu bezpečnosti v podstatě téměř neprůstřelné, kdyby se podařilo zajistit, že po podepsání bloku se daný klíč určitě smaže, nebo že by po podpisu nešel použít znovu. I takové kryptografické koncepty existují a pokud se je podaří uvést do praxe, bude to přelom nejen pro PoS konsensus.
Jak se vytvoří blok v PoS síti
V článku o síťovém konsensu jsem popsal, jak se vytvoří blok skrze Proof of Work. Pojďme nyní krok za krokem prozkoumat, jak to jde udělat podobně v PoS síti.
- Daný uzel si řekne, že se chce podílet na produkci bloků. Operátor si vygeneruje offline sadu klíčů. Poté si vygeneruje sadu klíčů pro podpis bloků a klíče pro VRF.
- Privátním offline klíčem se podepíše klíč pro podpis bloků. Offline klíč se bezpečně uloží mimo síť. Operační klíč pro podpis bloků zůstane na uzlu.
- Operátor vytvoří registrační certifikát, vloží do něj své jméno, veřejný operační klíč a veřejný VRF klíč. Certifikát se pošle do sítě. Jakmile se přidá nový blok, všechny uzly v síti budou vědět, že existuje další kandidát na produkci bloku. Po nějakém čase se na uzel dostane řada a bude pověřený produkcí bloku.
- Nastal další krok, kdy má některý z uzlů vytvořit nový blok. Každý uzel použije VRF a zjistí, jestli to není právě on. Pokud ano, vloží do bloku transakce a přidá své jméno a VRF důkaz. Poté blok podepíše svým operačním privátním klíčem a pošle je do sítě.
- Ostatní uzly v síti obdrží blok, podívají se na jméno producenta a v blockchainu dohledají aktuální veřejné klíče, které daný uzel naposledy registroval. Ověří tak VRF důkaz i podpis. Pokud je blok validní, přidají si ho do své verze blockchainu.
- Celý cyklus se opakuje od kroku 4.
- Každý operátor si hlídá expiraci klíčů a v pravidelných intervalech je obnovuje a opětovně registruje.
Jediné v čem se tato PoS síť liší od PoW je systém, kterým se vybírá uzel pověřený produkcí bloků. Vše ostatní je velmi podobné a to včetně ověřování důkazu, který činí nový blok validním z pohledu ověřovatelů. Výhodou je, že nový blok může vzniknout během několika vteřin a nejvíce zdržuje jeho propagace sítí. Propagace napříč celým světem může při nějakém problému zabrat klidně několik vteřin.
V našem příkladě se může stát, že v daném kroku vytvoří blok více uzlů současně a vznikne rozvětvení blockchainu. Je to tím, že blok se šíří podobně jako při použití PoW konsensu a neexistuje skupina uzlů, která by ho validovala. Nicméně to nevadí. Daný protokol může lehce definovat další pravidlo protokolu, které jednoznačně definuje, jaký blok bude v takové situaci validní. Může to být třeba pravidlo, že to bude blok s nižším VRF důkazem. Není tak třeba čekat na další bloky, aby vyhrála jedna větev. Když uzel obdrží dva (nebo více bloků) v daném kole, platný bude ten blok, který je validní a má nižší VRF důkaz. Vyřízeno. Ostatní bloky se mohou hned zahodit. V praxi to však nemusí nutně fungovat ve všech případech a může nastat situace, kdy vznikne rozvětvení ve kterém vyhraje blok s vyšším VRF důkazem (číslem).
Uvažujme následující situaci. Na uzel, jež právě dostal pověření vytvořit další blok, dorazil jako první blok s vyšším VRF důkazem. V síti se však produkuje blok s nižším VRF důkazem, jež by měl být preferovaný. Uzel tak naváže na blok s vyšším VRF důkazem a začne šířit nový blok. Až poté mu dorazí blok s nižším VRF důkazem, na který měl uzel navázat. Bohužel je pozdě. V takovém případě se může v rámci minulého kola prosadit blok z vyšším VRF důkazem. Problém to není. Uzly jsou na danou alternativu připravené a počítají s ní a to i v případě, že by další uzel začal navazovat na blok z nižším VRF důkazem.
Závěr
V článku jsme neprobrali spoustu jednotlivých detailů týkajících se třeba doby zamykání mincí, systém penalizovaní uzlů za nepoctivé chování, čas, který musí uplynout před tím, než může uzel vytvořit první blok a po jakém čase operátor dostane mince zpět po ukončení činnosti. Dále bychom se mohli více ponořit do jednotlivých algoritmů výběru uzlů pro produkci bloku v daném kole, či časovou synchronizaci uzlů. Zajímavý by také byl výběr více soupeřících bloků či série bloků v daném čase. U PoW vyhrává řetězec, za kterém je více práce. U PoS konsensu jsou pravidla postavená na matematice a kryptografii, nicméně vždy jsou deterministická a daný uzel přesně ví, jaké bloky jsou platné. PoS sítě jsou na rozdíl od PoW sítí velmi pestré a každý projekt řeší problémy po svém a do značné míry jinak. Základní principy jsou však do značné míry velmi podobné.
Fakt, že se v PoS sítích dají bloky produkovat levně, má velmi pozitivní vliv na cenu provozu a dlouhodobou udržitelnost. V případě Bitcoinu je velká neznámá, jestli se síť uživí pouze na poplatcích, až se sníží dotace nových mincí za několik půlení. Už v roce 2032 to bude pouze 0,78 BTC mince za blok. Pokud má být síť bezpečná třeba jako dnes, musí zbytek pokrýt transakční poplatky. Kolik to bude? Těžko říct, neboť nevíme, kolik bude stát jedna BTC mince a jakých inovací se dočkáme. PoS sítě se lehce uživí pouze z poplatků a výhodou je, že odměnu mohou dostat všichni lidé, kteří mince stakují. Tedy všichni, kdo dbají o bezpečnost a současně decentralizaci sítě. Navíc PoS sítě umí většinou přenášet nejen nativní mince, ale také mnoho tokenů, a to včetně stabilní mincí. O transakce nebude nouze. Poplatky mohou být stále velmi nízké, přitom na odměny bude dost. PoS sítě přesně ví, jaké mince jsou pro staking použité a sama síť může přímo odměnit operátory i uživatele. Distribuce odměn je decentralizovaná a plně v režii sítě.
Jestli se ve světě prosadí decentralizace, budeme PoS sítě potřebovat. Svět se nebude točit kolem Bitcoinu a miliony lidí nebudou neustále sledovat těžbu aby odhadli, kdy se jejich platba potvrdí. Tohle se nikdy nestane, pokud bude k dispozici lepší řešení. Nový finanční decentralizovaný systém musí fungovat lépe než ten současný, ne mnohonásobně pomaleji. V současnosti spolu bojují PoS sítě a druhé vrstvy nad Bitcoinem, kde nejznámější je Lightning Network. Troufám si tvrdit, že PoS sítě budou vždy spolehlivější, více uživatelsky přívětivé a decentralizované než Lightning Network, kde je stále mnoho bugů, nevyřešených problémů a dobře popsané útoky, proti kterým neexistuje lehká obrana.
Smart contract platformy, které využívají PoS konsensus, dodají možnost programovat peníze budoucnosti. Vždy asi bude lepší mít funkcionalitu pod jednou střechou, než sítě nějak složitě propojovat, neboť propojení může představovat úzké hrdlo či centrální bod. Lightning Network jednou fungovat může, ale než se tak stane a lidé ji akceptují, budou PoS sítě běžet možná i roky a získají si potřebnou důvěru lidí. Mnohé si jí budují už dnes. Budoucnost je však stále otevřená a my ji dokážeme pouze odhadnout, nikoliv předurčit.
[twitter-follow username="btctip_cz" scheme="dark"]
.
[easy-social-share buttons="facebook,twitter,linkedin" counters=1 counter_pos="inside" hide_names="no" template="tiny-retina"]