V síti Cardano určuje vítěze, který získá právo vyrazit nový blok, loterie. K určení vítěze se používá kryptografické primitivum zvané Ověřitelná Náhodná Funkce (Varifiable Random Function). Pojďme prozkoumat, jak tento důmyslný mechanismus funguje.
Kdo se stane příštím slot lídrem
Výběr uzlu, který získá právo razit další blok, musí být náhodný. Zároveň musí výběr uzlu odrážet důvěru, kterou mu ostatní účastníci konsensu delegují. V síti Cardano jsou bloky ražené pooly. Držitelé ADA delegují mince na vybraný pool, čímž mu dávají důvěru. Čím vyšší podíl daný pool má, tím více bloků v daném čase vyrazí.
V síti Cardano je čas rozdělen na sloty. Každý slot trvá 1 sekundu. V každém slotu probíhá loterie, kterou provádí každý pool autonomně a potřebuje pouze informace, které má uzel k dispozici. Loterie nevyžaduje žádné centrální řízení. Protokol je záměrně nastaven tak, aby našel vítěze přibližně každých 20 sekund. Vítěz se nazývá vedoucí slotu. Někdy se může stát, že v jednom kole vyhrají 2 lídři slotů, což nevadí, protože existuje definované pravidlo, které rozhoduje o tom, který blok je ten správný.
Verifiable Random Function
K losování lídrů slotů se používá kryptografické primitivum zvané Verifiable Random Function (VRF). VRF zavedli Micali, Rabin a Vadhan v roce 1999 a používá se v různých kryptografických schématech, protokolech a systémech.
Vlastník tajného klíče může vypočítat výstupní hodnotu i související důkaz pro libovolnou vstupní hodnotu. Každý jiný může pomocí důkazu a přidruženého veřejného klíče (ověřovacího klíče) zkontrolovat, zda byla výstupní hodnota skutečně vypočtena správně. Tuto informaci však nelze použít k nalezení tajného klíče.
Podívejme se, jak VRF funguje obecně. VRF poskytuje trojici algoritmů:
- Keygen (r) → (VK, SK). Na začátku je nutné vygenerovat ověřovací klíč (VK) a tajný klíč (SK) na základě náhodného vstupu (r).
- Evaluate (SK, X) → (Y, ⍴). Algoritmus evaluate vytváří pseudonáhodný výstupní řetězec (Y) a důkaz (⍴) na základě dvou vstupů tajného klíče (SK) a zprávy (X).
- Verify (VK, X, Y, ⍴) → 0/1. Ověřovací algoritmus zpracovává výstupy evaluate algoritmu, konkrétně výstupy řetězec (Y) a důkaz (⍴), spolu se zprávou (X) a ověřovacím klíčem (VK), a výstupem je buď 1, nebo 0. Výstup je 1 tehdy a jen tehdy, když (Y) je výstup vytvořený vyhodnocovacím algoritmem se vstupy (SK) a (X).
Výstup Y je pseudonáhodný a jedinečný. Není možné najít jiný výstup spolu s platným důkazem pro danou dvojici klíčů (VK, SK) a vstup X. Výstup Y vypadá náhodně pro jakoukoli třetí stranu, která nevidí související důkaz ⍴. Jinými slovy, k úplnému ověření výstupu Y a jeho odlišení od jiného náhodného výstupu (který by mohl mít stejnou hodnotu) je nutné mít také důkaz (⍴), který nelze snadno vytvořit bez znalosti tajného klíče (SK).
Kromě dalších kroků musí každý uzel, který se chce zaregistrovat k výrobě bloků, na začátku použít algoritmus VRF Keygen k vygenerování klíčů VRF. Tento proces vygeneruje tajný klíč VRF (který musí provozovatel pečlivě zálohovat a který nelze odhalit) a ověřovací klíč (který používají všichni ostatní k ověření, že uzel získal právo razit blok v daném slotu).
Během loterie uzly (pooly) každou sekundu používají algoritmus VRF Evaluate, aby zjistily, zda získaly právo razit blok. Pokud ano, mohou blok vytvořit a vložit příslušný důkaz do hlavičky bloku. To bude popsáno později.
V síti Cardano může vytvářet bloky pouze uzel, který vytvoří potřebný certifikát a uloží jej do blockchainu. Všechny uzly tak mají k dispozici všechny relevantní informace pro ověřování bloků. Všimněte si, že algoritmus VRF Verify nevyžaduje jako vstup tajný klíč. To znamená, že nikdo jiný než vlastník tajného klíče nemůže vyhrát v loterii a je schopen vytvořit důkaz, který je nutný k výrobě platného bloku.
Hledání vítěze
Algoritmus VRF Evaluate má více vstupů. Kromě jiných mezi ně patří ID slotu, pro který loterie právě probíhá, a ⅔ všech výstupů VRF z předchozí epochy, z nichž je vytvořen jeden hash (hodnota). Tento hash se také nazývá Nonce. Nonce znemožňuje výpočet výsledků VRF příliš dopředu.
Každý uzel zná své prahové číslo (threshold), odvozené od velikosti stake, který má daný pool. Čím větší je stake, tím větší je prahové číslo. Jinými slovy, prahové číslo je úměrné velikosti stake, který se skládá ze stak provozovatele a stake všech delegátů. Čím větší je stake, tím více bloků pool v dané epoše vyprodukuje.
Stake poolu se může měnit doslova s každým blokem. Ouroboros PoS každých 5 dní pořizuje snímek blockchainu a bere v úvahu podíl, který byl během snímku aktivní (platný). Aktivní podíl se může lišit od aktuálního podílu (live stake).
Každou sekundu každý pool provede algoritmus VRF Evaluate a porovná výstup VRF (výstup Y) s prahovou hodnotou, a pokud je výstup Y menší než prahová hodnota, pool získal právo vyrobit nový blok.
Když uzel zjistí, že se stal vedoucím slotu, vytvoří nový blok a do záhlaví bloku vloží důkazy VRF.
Každý další uzel v síti použije algoritmus VRF Verify k ověření, zda je blok platný, pokud jde o výrobce bloku. K ověření se používají důkazy VRF obsažené v navrhovaném bloku.
Kromě důkazů VRF musí být blok podepsán klíčem KES (Key Evolving Signature cryptography). Jedná se o další úroveň zabezpečení, takže pokud by se útočníkovi podařilo nějakým způsobem prolomit fungování VRF, stále nemá k dispozici klíče KES operátorů pro podepisování bloků.
Výhody VRF
Výhodou VRF je, že bloky mohou být v síti vytvářeny častěji, aniž by bylo nutné spotřebovávat nadměrné množství energie jako v sítích PoW. Jedna z hlavních vlastností PoW se týká také loterie. V každém kole mezi sebou všechny pooly bojují o to, kdo rychleji vyřeší energeticky náročný kryptografický problém. V této soutěži hraje významnou roli náhodnost. Analogicky k PoS Ouroboros platí v PoW, že čím větší je hash rate delegovaný na daný pool, tím větší je pravděpodobnost, že pool v loterii uspěje. V síti Cardano je hash rate nahrazen mincemi ADA.
Další výhodou je, že výstup Y lze použít k rozhodnutí, který blok je ten správný v případě, že dojde k forku (slot battle). Stačí vzít blok, jehož výstupní hodnota Y je nižší. V každém kole, i v případě forku, všechny uzly vědí, který řetězec je ten správný. Stačí použít pravidlo nejdelšího řetězce a v případě forku použít blok s nižší výstupní hodnotou Y.
Když v sítích PoW dojde k forku, nevíte, který blok zůstane v blockchainu a který osiří, dokud se síti nepodaří přidat několik dalších bloků. Používá se pravidlo nejdelšího řetězce.
V sítích PoW se předpokládá, že přepisování historických bloků je velmi nákladné, takže neproveditelné. U Ouroboros PoS se předpokládá, že blok nemůže vytvořit nikdo jiný než ten, kdo vlastní potřebné soukromé klíče. Zatímco bezpečnost PoW závisí na spotřebě fyzických zdrojů, PoS spoléhá spíše na poctivost provozovatelů poolu, kteří své klíče záměrně nezálohují. Zároveň je kladen větší důraz na decentralizaci, protože s růstem decentralizace zároveň roste počet provozovatelů, kteří vlastní soukromé klíče. Pokud provozovatelé poolu, kteří by v součtu pokryli více než polovinu stake, poctivě mažou klíče, je v podstatě nemožné přepsat historii blockchainu Cardano.
Závěr
VRF byl vytvořen před více než 20 lety, takže se jedná o spolehlivý kryptografický nástroj. Kromě Cardana se používá také v projektu Algorand. V době psaní tohoto článku VRF spolehlivě funguje v síti Cardano již 2 roky a podílí se na losování lídrů slotů. V budoucnu se VRF bude používat nejen pro losování vůdců slotů, ale také pro input endorsers. Toho nelze dosáhnout u PoW, protože by se musela rozdělit hash rate.
Článek připravili Cardanians za podpory Cexplorer.
Článek v AJ: How does the lottery work on the Cardano network? | Cardano Explorer