Polkadot staking: Teorie
Vítejte v první části naší dvojdílné série zaměřené na staking v Polkadot síti. V tomto článku si vysvětlíme základní koncepty a ukážeme si, jak staking v Polkadotu vlastně funguje. V druhé části se podíváme na staking v praxi —zejména jak správně vybrat validátora a jak Váš stake co nejlépe zabezpečit.
NPoS
Jak už možná víte z našeho představení projektu, Polkadot používá Nominated Proof of Stake jako algoritmus pomocí kterého vybírá sadu validátorů, kteří jsou v každé éře voleni. Těchto validátorů bude vždy omezené množství (z výkonnostních důvodů), nyní jich je okolo 200 a cílové číslo je prozatím 1000.
V Polkadotu jsou definovány dvě role — nominátor a validátor. Validátoři jsou zodpovědní za běh konsensus algoritmu a vytváření bloků, kdežto nominátoři podporují validátory pomocí svými DOT tokeny.
Výběr validátora
Jakýkoliv validátor se může stát kandidátem a tím se zúčastnit volby do aktivní sady validátorů v dané éře — na validátora nejsou kladeny žádné požadavky například ve formě minimálního stake, protože Polkadot je permissionless blockchain.
Aktivní validátoři jsou voleni vždy jednou za éru (to znamená každých 24 hodin). Síť zvolí aktuální validátory podle výše jejich stake — což dává smysl, protože větší stake znamená více reputace a důvěry, které v takového validátora komunita vkládá. Narozdíl od jiných PoS systémů, každý takto zvolený validátor má stejnou hlasovací sílu, a to nezávisle na výši jeho stake.
Nominátor můze zvolit ke stakingu až 16 validátorů, ale nemůže si vybrat jak bude jeho stake mezi ně rozdělen.
Stake je mezi validátory distribuován pomocí Phragménova algoritmu, jehož smysl je vyvažovat množství tokenů mezi jednotlivými validátory.
Phragménův algoritmus & rozdělení stake
Protože všichni aktivní validátoři mají stejnou hlasovací sílu, tak by stake mezi ně měl být rozdělenen tak rovnoměrně, jak je to jen možné. Proto přichází do hry algoritmus, který byl vymyšlen švédským matematikem Phragménem, jenž se zabýval tím, jak rozdělit hlasovací sílu v parlamentu co nejférověji mezi vítěze voleb.
I ve volbách je totiž několik vítězných stran (analogicky validátoři v Polkadot síti) a ty si mezi sebou musí rozdělit křesla v parlamentu na základě počtu hlasů, které obdrželi (což je v našem případě velikost stake).
Polkadot se pomocí tohoto algoritmu snaží zlepšit následující vlastnosti sítě
- Maximalizovat celkový stake všech aktivních validátorů (pro větší bezpečnost sítě)
- Co nejvíce zvětšit stake aktivního validátora s nejmenším počtem tokenů
- Zmenšovat rozdíly mezi velikostí stake zvolených validátorů
Vzhledem k faktu, že problém optimální distribuce stake mezi aktivní validátory je výpočetně náročný problém, tak Polkadot tuto operaci provádí mimo blockchain a poté do sítě zasílá transakci s návrhem rozložení stake mezi validátory.
Praktický dopad tohoto řešení pro nominátory je takový, že nominátor už nemůže měnit výši svého stake ani jej přesouvat mezi validátory v poslední epoše (6 hodin). Algoritmus už by tuto změnu nebral v potaz, proto je potřeba úpravy Vašeho stake vykonávat ideálně na začátku nové éry (aby byla jistota, že v další éře už se projeví).
Odměňování
Protože každý validátor má stejnou hlasovací sílu bez ohledu na velikost svého stake, odměna je tedy pro každého z nich také stejná.
Ta se ovšem dělí na dvě části
- Poplatek — ten je nastavitelný na straně validátora a určuje kolik procent z odměny si validátor nechává pro sebe jako náhradu nákladů spojených s provozem
- Odměna — ta je proporčně rozdělena mezi validátora a jeho nominátory v závislosti na velikosti jejich stake (validátor také může mít svůj vlastní stake)
Důležité je, že vzhledem k tomu, že odměna pro validátora je vždy stejná nezávisle na velikosti jeho stake, tak se nominátorům vyplatí podpořit validátory s nižším počten tokenů (jak jsme řekli výše, odměna je rozdělena vždy proporčně — čím větší procento stake u validátora vlastníte, tím větší odměnu také pak dostanete).
Toto chování je záměrně podporováno, protože přispívá k rovnoměrnému rozložení tokenů mezi validátory (nominátoři jsou ekonomicky motivování podpořit spíše menší uzly) což ve výsledky zabraňuje koncentraci síly v rukou několika validátorů. Proto se dá očekávat, že v dlouhodobém horizontu budou mít všichni validátoři velmi podobnou velikost jejich stake.
Další věcí, která ovlivňuje chování nominátora je, že validátor může vyplatit odměnu pouze prvním 64 nominátorům (seřazeným podle velikosti jejich stake). Což znamená, že další nominátoři v pořadí už nedostávají žádné odměny — takovýto validátor se pak nazývá oversubscribed. Toto je opět další motivaci k tomu, aby nominátoři více rozložili svůj stake a podporovali spíše méně populární validátory. Je nutno podotknout, že momentálně probíhá referendum v Kusama pro zvýšení tohoto limitu na 256 — a dá se očekávat, že pokud proběhne úspěšně a nevzniknou žádné potíže, tak se tato změna brzy promítne i do Polkadotu.
Jak už jsme zmínili dříve, každý validátor si zároveň účtuje poplatek k hrazení svých provozních nákladů. Důsledek tohoto faktu je, že validátoři s menším poplatkem budou rozprostírat větší část odměny mezi své nominátory — čím menší poplatek, tím více zbyde po jeho odečtení odměn. Věříme, že v budoucnu bude soutěž mezi validátory o co nejmenší poplatky velmi tvrdá, takže se dá očekávat, že budou relativně nízké a vyrovnané napříč celou sítí.
Můžete také použít tento nástroj k výpočtu předpokládané inflace a kolik můžete jakožto nominátor stakingem v Polkadotu vydělat.
Bodovací systém
Odměna, kterou validátoři získají za danou éru se počítá pomocí bodů. Tyto body mohou být validátorem získány za různé aktivity, které v síti vykonávají — například produkce bloku, potvrzování správnosti bloků, účast na konsenzu a další.
Z toho plyne, že ve výši odměn mohou být každou éru drobné rozdíly, protože ne vždy bude nominovaná sada validátorů plnit stejný počet úkolů (ovšem statisticky se tento rozdíl samozřejmě smaže a v dlouhodobém horizontu bude odměna stabilní).
Vybírání odměn
Výše odměn ja vypočítána po uplynutí každé éry. Proto, aby byly odměny všem účastníkům (tj. validátor i jeho nominátoři) vyplaceny, tak o tuto platbu musí někdo požádat. Jakmile se tak stane (a nejčastěji to bude samotný validátor), tak je odměna všem dalším účastníkům rozeslána automaticky.
Může se to zdát zvláštní, ale pokud by se odměny za každou éru posílaly automaticky, tak by v jednom okamžiku vzniklo v síti obrovské množství transakcí, což by se negativně podepsalo na stabilitě a výkonu celé sítě. Díky tomu, že o výplatu odměn je potřeba zažádat pomocí transakce je zajištěna jistá náhodnost a lepší rozložení těchto výplatních transakcí.
Důležitá věc, kterou je potřeba zmínit je to, že odměny zůstávají k vyplacení pouze po dobu 84 ér. To znamená, že pokud by během této doby žádný nominátor ani samotný validátor o výplatu nezažádal, tak bude tato odměna ztracena. Proto doporučujeme minimálně v počátcích mainnetu opatrnost a čas od času zkontrolujte Payouts sekci ve Vaší peněžence.
Slashing
Slashing je způsob jak potrestat validátory, kteří správně neplní svou funkci nebo se dokonce snaží síť napadnout. V tomto případě bude validátorův celý stake snížen o několik procent (o kolik závisí na závažnosti prohřešku) a tak validátor i nominátoři, kteří poskytli svůj stake přijdou o své tokeny. Podívejme se blíže jaké situace v tomto případě mohou nastat
- Level 1 — ojedinělé případy, kdy je validátor offline (například v případě problémů s jeho sítí). V tomto případě nenastává slashing, pouze chilling (odstranění z aktivních validátorů a nemožnost kandidovat v další éře). Chilling nastává i u všech dalsích úrovní
- Level 2 — často offline nebo vzácné případy hlasování pro dva bloky současně. Jsou strhnuty desetiny či jednotky procent
- Level 3 — chování, které už nemůže být způsobeno technickou závadou či náhodou (neustálé hlasování pro více bloků současně, podvrhy při hlasování v konsenzu). Strhnuty jsou až nižší desítky procent
- Level 4 — na této úrovni už se jedná o přímý útok s cílem ovlivnit konsenzus či získat podvodem finanční prostředky a strhává se většina stake
Tokeny, které byly takto strženy putují do treasury (neboli pokladnice, která pak pomáhá v decentralizované správě sítě). Takto uložené tokeny poté můžou být například použity k náhradě školy validátorům, pokud volená rada uvnitř Polkadotu rozhodne, že došlo ke slashingu v důsledku závady na síti za kterou validátoři nemohli.
Pro nominátora je ovšem nejdůležitější to, že validátorům s větším stake je strženo větší množství tokenů — to opět podporuje myšlenku, že by nominátor měl podporovat spíše méně populární validátory. Zároveň také čím více validátorů projevuje podezřelé chování v jeden okamžik, tím větší slashing následuje — aby se předešlo koordinovaným útokům na síť.
Počet tokenů
Polkadot je narozdíl například od Bitcoinu inflační měna, to znamená, že počet tokenů není pevně stanoven. Inflace je nastavena na 10% pro první rok, poté se bude měnit v závislosti na tom, kolik tokenů bude stakovaných. Polkadot má za cíl mít udržovat tuto hladinu na 50%, v tom případě se veškerá inflace připisuje jako odměna validátorům. Pokud velikost stake bude menší nebo větší, tak síť zmenší odměny a zbytek posílá do treasury.
Odměny vyplácené za staking můžete vidět ve Vaší Polkadot JS peněžence.
Závěr
Tímto končí naše úvodní část popisující filozofii a některé teoretické aspekty, které se pro úspěšný staking v Polkadotu vyplatí znát. Příště se tedy podíváme na praktickou část, kde si ukážeme jak používat Stash a Controller účty a zároveň podle jakých kriterií nominovat validátory.
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!