🇨🇿 Zajištění síťové decentralizace na úrovni protokolu

CZ překlad:

Zajištění síťové decentralizace na úrovni protokolu

V distribuovaných sítích je potřeba dlouhodobě zajistit vysokou míru decentralizace. Decentralizaci si musí pohlídat samotný protokol a to skrze konsensus algoritmus. Musí se také počítat s tím, že podmínky v reálném světě se mohou změnit a protokol se s tím většinou sám nevypořádá. Budoucí změny totiž nelze předvídat. V takovém případě musí zasáhnout tým a pravidla konsensu v protokolu upravit tak, aby odpovídala stavu reálného světa a protokol si zachoval své kvality.

V konceptech PoW a PoS jsou velké rozdíly. Pojďme se podívat, jak se míra decentralizace vyvíjela u Bitcoinu, kde je dnes, a co může nabídnout Cardano PoS konsensus algoritmus Ouroboros.

Jak měřit míru síťové decentralizace

Distribuovaný síť je taková síť, kde více nodů v dané síti utváří konsensus nad změnou dat. Mluvíme o distribuovaném konsensu, tedy shodě více entit dle pravidel protokolu. Míra decentralizace je dána tím, nakolik jsou tyto distribuované nody nezávislé. Všechny nody distribuované sítě totiž může vlastnit jeden majitel. V tom případě by byla síť stále distribuovaná, ale plně centralizovaná. Ideální je, pokud každý distribuovaný node vlastní jiný majitel. V tom případě je síť distribuovaná a současně decentralizovaná.

Podívat se na to můžeme také z geografického pohledu. Pokud se bavíme o globální distribuované síti, je požadovaný stav takový, kde jsou nody rovnoměrně rozmístněné po světě. Počítat se musí se všemi možnými útoky třeba ze strany států, takže není dobré, pokud jsou důležité nody sítě v jedné zemi s pochybným restriktivním režimem.

V úvodu jsme napsali, že protokol musí reagovat na změny v reálném světě. Důležitá je tedy také decentralizace na úrovni řízení projektu. Decentralizovaná síť potřebuje decentralizovaný a transparentní tým. Tedy tým, který naslouchá požadavkům uživatelů a dělá vše ve prospěch protokolu.

Pro naše další zkoumání můžeme udělat závěr, že decentralizace je tím vyšší, čím více nezávislých entit má právo navrhnout blok. S vyšším počtem takových entit klesá možnost cenzury a moc je rozdělena na více hráčů. Je tedy větší šance, že většina hráčů se bude chovat poctivě a uživatelé budou moci protokol používat s velkou mírou důvěry. Při P2P transakci, tedy transakci mezi dvěma uživateli, je prostředníkem protokol a skrze něj nody sítě. Dalo by se říci, že uživatelé věří operátorům poolů a ty hlídá protokol.

Bitcoin PoW

U PoW o přidání bloku rozhodují dva faktory. Ve větší míře síla hashratu a v menší míře náhoda. Nedá se říct, že entita s větším hashrate vždy vyhraje závod o přidání bloku. Můžeme však tvrdit, že tato entita většinou vyhraje. Zhruba se na to můžeme podívat tak, že pokud by byly tyto entity pouze dvě a ta větší měla 70% podíl hashratu oproti té druhé s 30 % hashratu. Tak ta větší entita nevytěží v daném čase 100 % bloků, ale třeba jen 90 %. Té menší pomůže náhoda při hledání správného hashe.

Z pohledu decentralizace má PoW jednu velkou nevýhodu. Pokud roste hashrate, který se centralizuje ve velkých halách, klesá míra decentralizace. Je to tím, že menší těžaři mají stále menší šanci těžit sami za sebe. Těžba se postupně přestala vyplácet na CPU, na GPU a nyní se to v mnoha zemích nevyplatí ani na ASIC mineru, pokud nemáte přístup k levné elektřině. Se vznikem poolů začali menší těžaři svůj výkon delegovat. Dnes začíná být moderní si hashrate z velké haly koupit vzdáleně za fiat. To už s decentralizací nemá nic společného. S hashratem plně disponují pooly, respektive pool operátoři, a díky tomu získali velkou moc.

Pooly přes protokol Stratum rozesílají šablonu bloku menším těžařům, kteří pracují na řešení úlohy v daném rozsahu. Pool práci rozdělí mezi jednotlivé těžaře a tím zvyšuje šanci na vytěžení bloku. Za vytvoření bloku a výběr transakcí je plně odpovědný pool, který tak může transakce cenzurovat. Vkládat ty, které si sám vybere bez ohledu na poplatek, nebo některé ignorovat.

Když se na to podíváme z pohledu protokolu, tak ten si decentralizaci nikterak nehlídá. Na začátku to fungovalo docela dobře díky tomu, že těžařů bylo málo a těžily na podobně výkonných počítačích. Bitcoin byl decentralizovaný a odolný vůči cenzuře. To už dnes neplatí. PoW konsensus algoritmus totiž vůbec nepočítá s tím, že se těžba centralizovala a výkon se deleguje poolům. Algoritmus o tom vůbec neví a funguje v podstatě tak, že pokud jsou mu předkládány validní bloky z pohledu transakcí, tak je jednoduše zařadí do blockchainu. PoW konsensus algoritmu je úplně jedno, že bloky mohly vzniknout centralizovaně a že transakce někdo cenzuroval. Protokol funguje roky stále stejně a tým nereagoval na změny v okolním prostředí. Tedy na vznik ASIC minerů, velkých těžebních hal a poolů. Tohle se dá považovat za selhání týmu.

Je nutné vzít do úvahy také fakt, že může vzniknout fork blockchainu a pooly jsou ti, kteří rozhodují o tom, na jaké větvi forku se bude pokračovat. I zde je velké nebezpečí v možnosti reorganizovat blockchain, tedy přeskládat si ho dle vlastní představy. Pokud se dnes domluví 3 až 4 pooly, mají velkou šanci, že se jim to povede. Ani tahle možnost by neměla existovat. Pokud není velkých poolů ani 10, a většina je jich čínských, je toto nebezpečí relativně velké.

Problém je, že právo na vytvoření bloku má jen několik málo cenzury schopných poolů a získání tohoto práva je založené na soutěži v síle hashratu, která se centralizovala právě kolem poolů a skrze delegování hashrate odmenších těžařů k poolům se celkový stav ještě více upevnil. Dalo by se to přirovnat k zemi, kde si lidé ve volbách vybírají mezi několik málo špatnými stranami. Volba je navíc nedemokratická, neboť pooly mají sami vlastní těžební haly. Nikdo neví, jaký podíl hashratu patří poolům a kolik je toho delegovaného.

Otázka tedy je, jestli už dávno neměl zasáhnout core tým a problém s pooly nějak neřešit. Bohužel, tyto snahy nevidíme ani dnes a úsilí vychází spíše od jednotlivců, kteří se snaží o nápravu (Stratum 2 a BetterHash). Tým by měl teoreticky větší šanci problém řešit, neboť má k protokolu blíže. Řešení by však vyžadovalo zásadní změny. Otevřená otázka také je, jestli se bude počet poolů do budoucna zvětšovat nebo zmenšovat. Tohle se nedá předvídat.

Může být Cardano PoS v decentralizaci lepší

Co se týče Cardano PoS konsensus algoritmu Ouroboros, tak ten si bude schopný decentralizaci lépe pohlídat. Umožní to nastavení ekonomického modelu tak, aby vznikl velký počet poolů, které budou vyvážené co se týče jejich vlivu, tedy četnosti šance na vyprodukování bloku. Dále zcela náhodný výběr poolu s právem vyprodukovat blok.

Klíčem k vysoké decentralizaci a omezení možnosti cenzury transakcí je zajištění toho, aby vzniklo co nejvíce entit s právem produkovat bloky. V případě Cardana jsou to pooly, které budou podporovány uživateli, kteří mohou těmto poolům delegovat mince. Ekonomický model bude nastavený tak, že se ty největší pooly dostanou do určitého bodu saturace, kdy se navzdory jejich největší velikosti sníží odměna za produkci bloku. Tyto pooly tedy budou těžit bloky nejčastěji, ale uživatelé budou motivování delegovat své mince menším poolům, kde bude odměna větší při menší četnosti vyprodukovaných bloků v daném čase. Toto matematické přepočítávání bude vestavěné přímo v protokolu. Předpokládá se, že uživatelé budou chtít maximalizovat svůj profit a budou mince delegovat tam, kde to bude ekonomicky nejvýhodnější. Peněženky by jim v tom měli pomoc.

Protokol se buduje podle matematických modelů, teorie her, a předpokládaného vývoje chování trhu. Teoreticky by neměly vznikat velké dominantní pooly. Jak už jsem však viděli v případě PoW, realita se někdy vyvine nečekaným způsobem. Jedinou odpovědí je včasná reakce na problém. Ideálně skrze decentralizovaný vývoj.

Díky náhodnému výběru poolu jsou šance na podvody značně eliminovány, protože pokud podvodník nemá jistotu, že bude mít právo vytěžit více bloků v řadě za sebou, nemá šanci reorganizovat blockchain (přetvořit jeho podobu).

Na tomto místě hraje zcela zásadní roli distribuce mincí. Podvodník může vlastnit více poolů a pokud bude mít velký počet mincí, jeho šance na podvod budou také vysoké. Stále je však míra nejistoty pro uskutečnění útoku relativně vysoká právě díky náhodnému výběru. Pokud by se lidé o podvodníkovi dozvěděli včas, mohou své mince delegovat jinam a tím podvodníkovi snížit vliv.

Výhoda PoS může být v tom, že se dá algoritmus konsensu upravovat, pokud by nefungoval podle plánu. U PoW je relativně složité algoritmus nějak upravit, neboť vítěze určí hlavně síla hashratu a jednotlivé pooly mezi sebou v podstatě soutěží. Dalo by se to přirovnat ke sprintu. Po startu všichni běžci vyběhnou a běží do cíle, kam jako první může dorazit pouze jediný běžec. Snaha všech ostatních se zahazuje. Není žádné druhé a třetí místo. Situace je o to horší, že díky síťovému zpoždění propagace bloku (network latency) mohou někteří běžci vyběhnout nepatrně dříve a svoji šanci na výhru zvýšit.

POZNÁMKA: Pro úplnost zařazujeme jednu mírně upravenou kapitolu z našich minulých prací o tom, jak přesně vzniká nový blok v PoS Ouroboros.

Jak vzniká nový blok v Ouroboros Genesis

Čas je v Cardanu rozdělený na určité logické celky, kterým se říká epocha. Každá epocha je dále rozdělena na 21 600 časových slotů. Každý slot může trvat přibližně 20 vteřin. Každá epocha tak trvá přibližně 5 dní. V každém časovém slotu může jeden node nazvaný slot lídr vytvořit nový blok. Před začátkem každé epochy se náhodně vylosují všichni slot lídři, avšak takovým způsobem, že nikdo dopředu neví, kdy se k právu vytěžit blok dostanou. Odměny se vyplácí na konci každé epochy. Tedy ne po každém vytěženém bloku, jak je tomu u PoW.

Pokud se chce node podílet na konsensu, musí se připojit k síti a synchronizovat si ledger. Dále se node registruje k funkci globálních hodin (Global Clock), které protokolu slouží pro časování. Globální hodiny poskytnou nodu informaci o tom, v jaké epoše a v jakém slotu se aktuálně ledger nachází.
Na začátku každé nové epochy se udělá snapshot blockchainu, aby se zjistilo jak jsou distribuovány mince pro staking. Snapshot je odrazem stavu distribuce stakovaných mincí v posledním bloku dvě epochy zpět. Zde se používá mechanismus Follow-the-Satoshi, kde každá stakovaná Lovelace (název pro 0,000001 ADA) je něco jako výherní tiket, který může vyhrát právo na vytvoření bloku. Čím více tiketů uživatel ve hře, tím větší má šanci vyhrát. Snapshot je vstupem pro generování náhody.

Node se registruje k funkci globálního oraclu náhody (Global Random Oracle), který v každém slotu generuje náhodné číslo “V”. Oracle generuje náhodu mj. na základě historie blockchainu a unikátního identifikátoru nodu. Jak uvidíme dále, čísla “V” bude zvolený slot lídr vkládat do bloku.
Nyní si představte, že jsme časově na začátku nové epochy v prvním slotu. Každý node si sám za sebe na začátku každé nového slotu zjišťuje, jestli je slot lídr. Node dostane odpověď skrze lokální funkci postavené na moderní kryptografii (Verifiable Random Function) a využije k tomu dotaz na Random Oracle, který mu vrátí “V”. Pro odpověď je zapotřebí mít určité vstupy, což jsou: Index aktuálního slotu, časové razítko, klíč daného nodu, distribuci mincí 2 epochy zpět, nonci pro danou epochu a náhodný seed.
Random Oracle vezme náhodná čísla “V”, která jsou obsažená v prvních ⅔ slotů z předešlé epochy a zahashuje je, čímž vznikne náhodný seed. Poslední třetina bloků se nebere, neboť tyto bloky nemají dostatek potvrzení a mohou se ještě změnit. Na základě dotazu nodu vrátí Random Oracle náhodné číslo “V”.
Díky VRF pak může proběhnout loterie, která nodu finálně odpoví na otázku, zda-li je slot lídr. Pokud má číslo “V” menší hodnotu než je určitá hranice (threshold), stává se slot lídrem. Výsledkem VRF jsou dva výstupy. Kromě “V” se generuje také důkaz “P” (proof), který slot lídr vloží do navrženého bloku. Kombinace důkazu “P” společně s číslem “V” poslouží ostatním nodům pro ověření, že daný node měl skutečně právo vytvořit blok v daném slotu. Podvodný node tak nemůže náhodně navrhnout blok, neboť nemá šanci vygenerovat správnou kombinaci “V” a “P”. Ostatní nody lehce odhalí podvodně navržený blok.
Dále je pro vítězný node vše jednoduché. Slot lídr vezme transakce, které vloží do bloku a přidá do něj “V” a “P”. Node pro sebe vygeneruje nový privátní klíč pro podepsání dalšího bloku, za který bude odpovědný (Key Evolving Signature). Veřejný klíč zůstane stejný, ale privátní klíč se pro podpis dalšího bloku změní. Starý privátní klíč se smaže. Díky tomu je nemožné padělat starý podpis novým klíčem a současně je nemožné zjistit starý privátní klíč přes ten nově vygenerovaný. Toto opatření znemožňuje přepisovat historii, neboť každý blok je podepsaný unikátním privátním klíčem. Jen node odpovědný za aktuálně přidaný blok zná privátní klíč, který byl použitý k podpisu. Dá se matematicky dokázat, že i kdyby ho node zveřejnil (nebo byl ukraden) a následovaly ho další nody, tak pokud bude v síti vyžadovaný počet nodů poctivých, nemají útočníci šanci této znalosti zneužít.
Slot lídr vloží náhodné číslo “V” do navrhovaného bloku, takže pokud se blok schválí, bude toto číslo zdrojem náhody, tedy součástí pro vytvoření nového seedu v další epoše. To ovlivní volbu dalších slot lídrů. Protokol tak používá sám sebe pro decentralizované generování náhody a není potřeba využívat externí zdroje.
Závěr

Distribuovaný protokol není jen o decentralizaci, důležité jsou také další faktory jako bezpečnost a škálovatelnost. Ouroboros PoS je lepší i ve škálovatelnosti, neboť blok vytvoří v rámci vteřin. U Bitcoin PoW je to 10 minut. PoW je historicky úspěšný v bezpečnosti, to však neznamená, že za dalších 10 let nebudeme vědět, že je Ouroboros stejně bezpečný. Tohle chce jen čas. Když se nad tím hlouběji zamyslíte, tak míra decentralizace je součástí bezpečnosti. Co je platné, že je z pohledu bezpečnosti u PoW těžké vytvořit blok, když tyto bloky můžete vyrábět do jisté míry centralizovaně. Pokud si PoS udrží vysokou míru decentralizace, zvyšuje tak současně svoji bezpečnost. PoS si musí dobře poradit s tím, aby někdo neprosadil podvodný blok či více bloků, neboť u PoS jde bloky vytvořit relativně levně a rychle. Zde vše stojí a padá na matematice a schopnosti týmu správně realizovat vše, co vzešlo z výzkumu a teorie. Pokud se to podaří, bude vyřešené blockchainové trilema.

Klíčovou roli v udržování protokolů hraje tým a komunita. Svět se neustále proměňuje a to platí také o světě internetu a protokolů. Tým musí pružně reagovat na změny, aby si protokol dlouhodobě udržel své kvality. U Bitcoinu se to bohužel moc nedaří a můžeme jen doufat ve zlepšení. Cardano má snahu vybudovat decentralizované řízení projektu a tým se ukazuje jako velice schopný, takže věříme, že budou lépe reagovat na změny prostředí.

Další rozdíl týkající se důvěry je distribuce odměny za podílení se na konsensu a bezpečnosti. U PoW odměnu distribuují pool operátoři a menší těžaři jim musí věřit, že to dělají poctivě. U Cardana bude odměňovací systém vestavěný přímo do protokolu. Uživatelé si tak mohou být jisti, že své ADA mince určitě uvidí a nikdo je nepodvede. Vše pohlídá protokol.

Pokud se na to podíváme z pohledu geografie, tak PoW těžba je závislá na levné energii, takže se centralizuje do zemí, kde je elektřina levnější. I zde má šanci být PoS více decentralizovaný, neboť udržovat běžící počítač není tak nákladné a není potřeba každý rok pořizovat poslední typ ASIC mineru.

Když porovnáte konsensus mechanismus PoW a PoS tak uvidíte, že koncept PoW je relativně jednoduchý, zatímco PoS je dost složitý. A to jsme vše dost zjednodušili. Komplexní systémy budou vždy náchylnější na chyby, protože pro tým není snadné mít vše pod kontrolou. Věříme, že tým IOHK je dostatečně kompetentní se s touto výzvou popasovat a je dobře, že si na to bere svůj čas a nikam nespěchá. Pokud se totiž podaří PoS Ouroboros dodat, bude to z pohledu decentralizovaných technologií obrovský krok vpřed a velká výzva pro Bitcoin.