Blockchain od začátečníka 6 - zaruč se svým majetkem (Proof of Stake)

Pokud dokážeme všem nodům věřit a nevadí nám částečná centralizace, můžeme použít Proof of Autority (PoA) s protokolem jako je Raft (nody jsou ověřené, software je podepsaný apod.). Když jim moc nevěříme, ale stále to máme nějak pod kontrolou, například v konsorciu (typicky třeba u Hyperledger), použijeme PBFT protokol. Jak to ale udělat ve velkém a tam venku? Minule jsme viděli Proof of Work (PoW), což je velmi bezpečná varianta. Nicméně je možná trochu nákladná a vytváří velkou latenci. Proto dnes prozkoumáme alternativu - Proof of Stake (PoS).

Proof of Stake

Připomeňme si jeden z problémů v případě byzantských generálů - lhát lze levně a beztrestně. PoW tomu brání nutností si věci odpracovat, což činí útok na systém ekonomicky nerentabilní, protože útočník musí udržitelně získat přes 50% výpočetního výkonu sítě. Odvedené práce ale musí být opravdu dost, aby to fungovalo a to přináší náklady a vysokou latenci (trvá, než se vaše transakce zapíše). Node zkrátka musí jít s kůží na trh a v případě PoS to nebude práce, ale peníze - zástava, kauce.

Některé nody v síti se mohou chtít stát validátorem a aktivně pracovat na vytváření a kontrole bloků. Incentivu samozřejmě mají finanční, protože transakce jsou zpoplatněné (k tomu se ještě vrátíme příště). Nový validátor si musí nejprve stoupnout do fronty, tím se síť typicky brání před nějakým podezřelým masivním přísunem nových. Následně validátor řekne, kolik peněz je ochoten zastavit jako záruku, že bude čestný. To je stake a v některých sítích je skutečně musí tento node vlastnit (typicky Etherum), v jiných funguje koncept delegování, takže nominátoři mohou podstoupit svoje peníze někomu jinému a podílet se na celkovém zisku validátora (třeba u sítě Polkadot). Způsob poskytnutí zástavy je využitím Smart Contract, o kterém se budeme bavit jindy, ale jde o to, že se prostředky zamknou a vrátí se jen pokud validátor neporuší pravidla (obvykle je nějaká perioda, kdy se prostředky drží pod zámkem, aby byl čas případný podvod odhalit).

Důležité je, že kdo vytváří blok je dané dílem náhodou a dílem množstvím jeho peněz v zástavě a dále jsou zvoleni validátoři, kteří jeho vytvořený blok ověří a tato porota je taky rovněž sestavena dílem náhodně. Tohle znemožňuje dobře předvídat kdo blok vytváří a kdo ho kontroluje a tím znesnadňuje pokusy o útok. Konkrétní vyladění se může lišit, tak si to ukažme na Etheru. Tam se čas dělí na sloty, které mají 12 vteřin a 32 slotů tvoří jednu epochu. Pro každý slot je vybrán jeden validátor, který připraví bloky a výběr je náhodný s pravděpodobností odpovídající jejich zástavě (větší zástava = větší pravděpodobnost). Dále je pro daný slot vybrána komise - validátoři, kteří budou práci tvůrce bloku kontrolovat (opět dílem náhodně, takže validátor vytvářející blok dopředu neví jakou dostane porotu). Tvůrce bloku ho vytvoří a komise ho překontroluje (přejede si všechny transakce jestli v nich není nekonzistence, podvod) a pokud by se podvod detekoval, blok se zruší a jeho tvůrce ztratí zástavu (tzv. slashing - za drobné prohřešky jen část, za vážné všechno). Pokud je vše v pořádku, blok se přidá do blockchainu a tvůrce dostane odměnu. V rámci jedné epochy nemůže žádný validátor být tvůrcem bloku víckrát, takže se zamezí koncentraci moci.

U PoW by musel útočník disponovat 51% výpočetní kapacity, aby se mu podařilo prosadit vadné transakce. U PoS by v případě Etherum musel disponovat obrovskou zástavou a protože validátoři jsou voleni náhodně, tak tam bude mít vždy někoho čestného a toho je těžké přesvědčit, aby se přidal k útoku, protože tím riskuje zastavené peníze. Pro transakci musí volit 2/3 kapitálu v rámci slotu, takže potřebujete mít tohle pod kontrolou a díky prvku náhody asi i o něco víc. Pro úspěšné ovládnutí sítě a protlačení zlodějských transakcí musíte mít alespoň 2/3 zastavených peněz v systému. Nicméně na druhou stranu už při ochotě ztratit 1/3 zastavených peněz můžete využít slabší formy útoku a například narušit chod sítě (zpomalení nebo vyvolání zmatku - konfliktní bloky, které mohou uživatele vést k pocitu, že transakce proběhla aniž by se tak trvale stalo a vydají zboží předčasně). PoW tedy vyžaduje získání majority výpočetní síly celé sítě a je to tedy pravidlo plně decentralizované napříč všemi hráči. PoS využívá validátory, je proto trochu méně decentralizovaný, ale o to lépe škáluje, nicméně ekonomické incentivy jsou tam dostatečnou ochranou. Pro představu do dubna 2023 byl rekord ve velikosti zástavy kolem 19 milionů ETH, což je asi 67 miliard dolarů.

Dnes jsme se dotkli ekonomických incentiv a bude stát za to podívat se, proč by někdo chtěl síti pomáhat. Jak fungují odměny za mining, gas fee a jak si nody vybírají transakce, které dají do bloku? Na to mrkneme příště.



Blockchain od začátečníka 5 - máš to odmakané? (Proof of Work) Blockchain
Blockchain od začátečníka 4 - tak na tom se asi shodneme, ne? (distribuovaný konsenzus) Blockchain
Blockchain od začátečníka 3 - transakce ověřené rostoucím binárním stromem (merkle tree) Blockchain
Blockchain od začátečníka 2 - bloky řetězené za sebou Blockchain
Blockchain od začátečníka 1 - úvod Blockchain