Architektura Polkadot
Toto je první článek z naší série o jedinečné technologii Polkadot a unikátnímu přístupu k interoperabilitě a škálovatelnosti v blockchainovém prostoru. Ponoříme se hlouběji do různých aspektů této sítě (konsensus, relay chain, parachainy, staking a další) a pokusíme se tyto technické pojmy vysvětlit jednoduchým způsobem tak, aby kdokoli mohl pochopit, jak Polkadot funguje pod pokličkou a proč je jedním z nejpokročilejších projektů na trhu.
Začněme základním popisem toho, čeho se Polkadot snaží dosáhnout, a poté skočíme přímo do konsensus algoritmů Polkadotu.
Základy
Jak jsme uvedli v našem úvodním článku k Polkadot, hlavní myšlenkou je vytvořit platformu, která umožní spolupracovat mezi různými blockchainy. Polkadot dává přednost mnoha specializovaným blockchainům, které spolu dokážou komunikovat a zároveň jim poskytuje bezpečné prostředí pro jejich běh — oproti klasickému řešení typu Ethereum nebo Cardano, které se veškeré problémy snaží řešit na svém vlastním chainu. K dosažení tohoto cíle používá Polkadot jako svůj konsensus algoritmus Nominated Proof of Stake.
V síti existují dvě hlavní role — nominátoři a validátoři. Validátoři jsou voleni každých pár hodin a jejich hlavním cílem je vytvářet bloky a účastnit se konsensu. Tito validátoři však musí být podpořeni stakovanými DOT tokeny, a to je místo, kde vstupují do hry nominátoři. Nominátoři hlasují pro validátory (prostřednictvím svých DOT tokenů, které jim delegují) a jsou za to na oplátku odměněni dalšími tokeny.
Hlavní aktéři
Collators — jsou zodpovědní za shromažďování transakcí uvnitř parachainů a vytváření důkazů o přechodu stavu (jednotlivé transakce jsou uvnitř parachainu definovány jako změny stavu blockchainu, což je činí více robustnější — ale o tom až příště), které mají být kontrolovány validátory
Validátoři — přijímají příchozí změny stavy od collatorů, vytváří bloky a participují na konsenzu uvnitř sítě
Nominátoři — delegují své DOT tokeny validátorům, aby zvýšili zabezpečení sítě a získávali odměny za staking
Komponenty
Relay chain — na Relay chainu běží validátoři, kteří ověřují transakce, které produkují parachainy a tvoří z nich jednotlivé bloky
Parachainy — samostatné řetězce, které běží na Polkadot síti a jsou připojeny k Relay chainu, což jim umožňuje vzájemnou komunikaci
Parathready — podobné jako parachainy, pouze s odlišným ekonomickým modelem
Bridges / mosty — slouží jako brána do dalších blockchainů, jako jsou BTC nebo ETH, aby umožnily skutečnou interoperabilitu
Těmito samostatnými součástmi se budeme zabývat v dalších článcích, pojďme se nyní zaměřit na to hlavní a nejzajímavější u Polkadot, což je konsensus.
Finalita
Abychom pochopili mechanismus konsensu, musíme se nejprve podívat na finalitu bloků. Finalita je vlastnost, která popisuje okamžik, ve kterém se transakce po přidání do blockchainu stane nevratnou. Ve skutečnosti existují dva druhy finality a každý z nich úzce ovlivňuje vytváření bloků a to, jak moc můžeme věřit, že tyto bloky zůstanou součástí sítě.
Probabilistická finalita
Toto je druh konečnosti, kterou používá většina blockchainů — dokonce i praotec kryptoměn, Bitcoin! Tuto konečnost nazýváme probabilistickou nebo chcete-li pravděpodobnostní, protože s dostatečným počtem bloků za blokem s Vaší transakcí si můžete být zcela jisti, že tato změna je konečná a Vaše transakce zůstane v blockchainu navždy.
Podívejme se společně na názorný příklad — vytvoříte transakci v BTC síti, počkáte 10 minut (což je čas pro potvrzení bloku) a máte potvrzení o tom, že transakce byla skutečně přidána do bloku — a vše vypadá v pořádku. Jenže, poté co je vytěžen další blok, Vaše transakce najednou zmizí! Jak je to možné? Je to, protože těžaři pracují paralelně (spousta minerů hledá v jeden okamžik další blok) a očividně existoval nějaký delší řetězec, který Váš blok neobsahoval a stal se hlavním řetězcem (protože, jak víme, u BTC existuje pravidlo, že vždy vyhrává nejdelší řetězec — a řetězec, který obsahoval vaši transakci, byl zřejmě kratší :)). Proto lidé obvykle čekají 6 bloků (přibližně jednu hodinu), než je transakce považována za potvrzenou. Můžeme tedy říci, že blok, který je 6 úrovní hluboko, je pravděpodobně (a tím pravděpodobně myslíme, že na hranici jistoty) konečný a nelze jej změnit. Tento přístup má své výhody, ale zároveň může chvíli trvat, než si budete jisti, že Vaše transakce nebude z blockchainu odstraněna (což může být pro mnoho firem nepřijatelné).
Prokazatelná finalita
Na druhou stranu prokazatelná konečnost znamená, že bloky jsou okamžitě považovány za konečné, kdykoli jsou přidány do blockchainu. Proto víte, že Vaše transakce už nikdy nemůže být vrácena nebo upravena, jakmile se dostane do bloku. Jinými slovy, blockchain bude v budoucnu vždy obsahovat tento dokončený blok. Praktickým řešením tohoto problému jsou algoritmy pBFT (jeden ze způsobu řešení problému byzantských generálu), kde vedoucí validátor pro danou éru může navrhnout nový blok a tento blok musí být schválen 2/3 většinou ostatních validátorů. Příklady těchto protokolů jsou Tendermint (Cosmos), Casper (Ethereum 2.0), Ouroboros (Cardano) a BABE a GRANDPA z dílny Polkadot, které si ještě podrobně popíšeme.
Konsenzus
Polkadot používá novou metodu, která se nazývá hybridní přístup— to znamená, že v síti jsou ve skutečnosti dva algoritmy. První z nich je BABE (slouží jako mechanismus produkce bloků) a druhý GRANDPA, který dodává síti konečnost. Hlavním důvodem, proč máme dva algoritmy, je to, že můžeme mít rychlou produkci bloků (na rozdíl od většiny sítí) a finalizaci, která dokáže finalizovat více bloků najednou (což je opět skvělá optimalizace výkonu).
BABE (Blind Assignment for Blockchain Extension)
BABE je mechanismus výroby bloků, který běží mezi validátory a určuje autory nových bloků. Aktivní sada validátorů se vybírá jednou za éru (což je momentálně jeden den), tito validátoři jsou poté schopni ověřovat bloky od parachain collatorů (nody, které produkují bloky pro jednotlivé parachainy). Validátoři jsou do éry voleni podle počtu delegovaných mincí— neexistuje žádné minimum, ale čím větší stake validátor má, tím větší šance je, že bude pro danou éru zvolen.
Validátoři se účastní loterie v každém slotu (aktuálně 6 sekund), která jim řekne, zda jsou kandidáty na producenta bloků. Tato loterie je založena na VRF (Verifiable Random Function = ověřitelná náhodná funkce), kterou validátoři používají k výpočtu náhodného čísla. Tato funkce slouží zároveň k prokázání, že poskytnuté náhodné číslo validátorem je opravdu platné a může se proto zúčastnit loterie. Validátor vyhrává loterii, pokud v <T, kde v je náhodné číslo validátoru, a T je generováno samotnou sítí. Po skončení loterie vstupuje do hry několik scénářů — vyhrává jeden validátor, vyhrává více validátorů a nakonec situace, kdy neexistuje žádný kandidát na producenta bloku.
Jeden vítěz
Toto je nejjednodušší scénář — validátor se stane vedoucím pro aktuální slot a vytvoří blok, který ověří všichni ostatní validátoři.
Několik vítězů
Když dojde k této situaci, započne konkurence mezi validátory a všichni tito vítězní validátoři vyprodukují blok, který pošlou k síti k ověření. Vyhrává validátor, jehož blok dosáhne většiny sítě jako první, a stává se tak vedoucím tohoto slotu.
Žádný vítěz
Toto je ve skutečnosti nejhorší scénář, protože by mohl vyústit v produkci prázdných bloků, ve kterých nejsou žádné transakce (čímž se snižuje efektivita celé sítě). Proto existuje sekundární, takzvaný round-robin algoritmus (v kostce funguje tak, že postupně vybírá validátory tak, aby na každého časem přišla řada), který se používá vždy k výběru „záložního“ validátora na pozadí. Pokud v loterii nikdo nevyhraje, použije se výsledek round-robin k výběru vedoucího a tento vedoucí vytváří sekundární blok. Takto Polkadot zajišťuje svůj optimální výkon tím, že nenechává žádné sloty prázdné.
GRANDPA (GHOST-based Recursive ANcestor Deriving Prefix Agreement)
GRANDPA je druhý konsenzus algoritmus, který dodává síti konečnost (všechny bloky jsou tudíž finalizovány hned po jejich vytvoření). Jedná se o algoritmus založený na pBFT, který předpokládá, že ⅔ validátorů jsou čestní a maximálně ⅓ může být offline nebo mít v síti škodlivé úmysly.
To funguje teoreticky velmi dobře, ale co se stane, když dojde k útoku na síť? Představme si, že 40% validátorů přejde do režimu offline. V tomto scénáři bude výroba bloků BABE konsensu stále pokračovat — to znamená, že síť zůstane k dispozici, bude schvalovat, ale obětuje konzistenci dat. Když je síť zpět online, validátoři jsou rychle schopni určit, který je kanonický řetězec, na kterém bude síť i nadále vytvářet bloky.
Stále však zbývá jeden problém, a to pokud síťový výpadek trval velmi dlouhou dobu. V tomto případě může finalizování všech bloků z BABE trvat příliš dlouho. Proto GRANDPA není pouze schopen hlasovat o jediném bloku, může dokonce hlasovat o celé sérii bloků (počínaje nejvyšším blokem, o kterém si validátoři myslí, že je správný) a tranzitivně aplikovat toto ověření na všechny své předky. Tohle je velké zlepšení oproti většině stávajících algoritmů, které musí každý blok ověřit samostatně (GRANDPA tudíž dokáže velmi rychle finalizovat i tisíce až miliony vyprodukovaných bloků pomocí BABE).
Závěr
Tento hybridní konsensuální model umožnil Polkadot vybudovat opravdu rychlou a interoperabilní síť s prokazatelnou konečností, která může hostovat potenciálně tisíce různých parachainů a zároveň poskytovat dostatečné zabezpečení a decentralizaci. V příštím článku této série se podíváme na jednu z hlavních součástí Polkadotu a tou jsou samotné parachainy, takže stay tuned :)
Pokud se k vám tento článek dostal čirou náhodou, vězte že můžete být součástí fb komunity v naší skupině Polkadot CZ/SK, nebo skupiny stejného jména na Telegramu!