Důkaz autority (PoA)
Důkaz autority (PoA) je algoritmus konsensu založený na reputaci, který je upravenou verzí důkazu podílem (PoS). Využívají ho převážně soukromé řetězce, testnety a lokální vývojové sítě. PoA je algoritmus konsensu založený na reputaci, který vyžaduje důvěru ve skupinu autorizovaných podepisovatelů, kteří produkují bloky, na rozdíl od mechanismu založeného na staku v PoS.
Předpoklady
Pro lepší pochopení této stránky doporučujeme nejprve si přečíst o transakcích, blocích a mechanismech konsensu.
Co je důkaz autority (PoA)?
Důkaz autority je upravená verze důkazu podílem (PoS), což je algoritmus konsensu založený na reputaci namísto mechanismu založeného na staku v PoS. Tento termín poprvé představil v roce 2017 Gavin Wood a tento algoritmus konsensu se používá převážně u soukromých řetězců, testnetů a lokálních vývojových sítí, protože překonává potřebu vysoce výkonných zdrojů, jako je tomu u důkazu prací (PoW), a řeší problémy se škálovatelností u PoS tím, že blockchain ukládá a bloky produkuje pouze malá podmnožina uzlů.
Důkaz autority vyžaduje důvěru ve skupinu autorizovaných podepisovatelů, kteří jsou nastaveni v . Ve většině současných implementací si všichni autorizovaní podepisovatelé zachovávají stejnou moc a privilegia při určování konsensu řetězce. Myšlenka stakování reputace spočívá v tom, že každý autorizovaný validátor je všem dobře známý prostřednictvím procesů, jako je KYC (poznej svého klienta), nebo tím, že jediným validátorem je známá organizace – tímto způsobem je v případě, že validátor udělá něco špatně, známa jeho identita.
Existuje několik implementací PoA, ale standardní implementací pro Ethereum je clique, která implementuje EIP-225 (opens in a new tab). Clique je standard přívětivý pro vývojáře a snadno implementovatelný, který podporuje všechny typy synchronizace klientů. Mezi další implementace patří IBFT 2.0 (opens in a new tab) a Aura (opens in a new tab).
Jak to funguje
V PoA je vybrána skupina autorizovaných podepisovatelů, kteří vytvářejí nové bloky. Podepisovatelé jsou vybíráni na základě své reputace a jsou jediní, kdo smí vytvářet nové bloky. Podepisovatelé se střídají systémem round-robin a každý podepisovatel smí vytvořit blok v určitém časovém rámci. Čas vytvoření bloku je pevně daný a podepisovatelé musí vytvořit blok v tomto časovém rámci.
Reputace v tomto kontextu není kvantifikovaná veličina, ale spíše jde o reputaci známých korporací, jako jsou Microsoft a Google. Způsob výběru důvěryhodných podepisovatelů tedy není algoritmický, ale jde o běžný lidský akt důvěry. Pokud například subjekt jako Microsoft vytvoří soukromou síť PoA mezi stovkami nebo tisíci startupů a převezme roli jediného důvěryhodného podepisovatele s možností v budoucnu přidat další známé podepisovatele, jako je Google, startupy by bezpochyby důvěřovaly Microsoftu, že bude vždy jednat čestně, a síť by využívaly. Tím se řeší nutnost stakovat v různých malých/soukromých sítích, které byly vytvořeny pro různé účely, aby zůstaly decentralizované a funkční, a také potřeba těžařů, což spotřebovává spoustu energie a zdrojů. Některé soukromé sítě používají standard PoA v jeho původní podobě, jako například VeChain, a některé si ho upravují, jako například Binance, která používá PoSA (opens in a new tab), což je vlastní upravená verze PoA a PoS.
Proces hlasování provádějí sami podepisovatelé. Každý podepisovatel při vytváření nového bloku hlasuje pro přidání nebo odebrání podepisovatele ve svém bloku. Hlasy jsou sčítány uzly a podepisovatelé jsou přidáváni nebo odebíráni na základě toho, zda hlasy dosáhnou určité hranice SIGNER_LIMIT.
Může nastat situace, kdy dojde k malým forkům; obtížnost bloku závisí na tom, zda byl blok podepsán v pořadí (in turn) nebo mimo pořadí (out of turn). Bloky „v pořadí“ mají obtížnost 2 a bloky „mimo pořadí“ mají obtížnost 1. V případě malých forků získá největší obtížnost a vyhraje ten řetězec, ve kterém většina podepisovatelů pečetí bloky „v pořadí“.
Vektory útoků
Zlomyslní podepisovatelé
Na seznam podepisovatelů by mohl být přidán zlomyslný uživatel, nebo by mohl být kompromitován podepisovací klíč či stroj. V takovém scénáři se protokol musí umět bránit proti reorganizacím a spamu. Navrhovaným řešením je, že při seznamu N autorizovaných podepisovatelů smí každý podepisovatel razit pouze 1 blok z každých K bloků. Tím je zajištěno, že škody jsou omezené a zbývající validátoři mohou zlomyslného uživatele odhlasovat pryč.
Cenzura
Dalším zajímavým vektorem útoku je situace, kdy se podepisovatel (nebo skupina podepisovatelů) pokusí cenzurovat bloky, které hlasují o jejich odstranění z autorizačního seznamu. Aby se tomu zabránilo, je povolená frekvence ražení podepisovatelů omezena na 1 z N/2. Tím je zajištěno, že zlomyslní podepisovatelé by museli ovládat alespoň 51 % podepisovacích účtů, v kterémžto okamžiku by se efektivně stali novým zdrojem pravdy pro řetězec.
Spam
Dalším menším vektorem útoku je, když zlomyslní podepisovatelé vkládají nové návrhy na hlasování do každého bloku, který razí. Vzhledem k tomu, že uzly musí sečíst všechny hlasy, aby vytvořily aktuální seznam autorizovaných podepisovatelů, musí zaznamenávat všechny hlasy v průběhu času. Bez omezení okna pro hlasování by tento počet mohl pomalu, ale neomezeně růst. Řešením je zavést pohyblivé okno o velikosti W bloků, po jehož uplynutí jsou hlasy považovány za zastaralé. Rozumné okno by mohlo být 1-2 epochy.
Souběžné bloky
V síti PoA, když je N autorizovaných podepisovatelů, smí každý podepisovatel razit 1 blok z K, což znamená, že v daném okamžiku smí razit N-K+1 validátorů. Aby se zabránilo tomu, že tito validátoři budou o bloky závodit, měl by každý podepisovatel přidat malý náhodný „posun“ (offset) k času, kdy vydá nový blok. Ačkoli tento proces zajišťuje, že malé forky jsou vzácné, občas k nim může dojít, stejně jako na Mainnetu. Pokud se zjistí, že podepisovatel zneužívá svou moc a způsobuje chaos, ostatní podepisovatelé ho mohou odhlasovat pryč.
Pokud je například 10 autorizovaných podepisovatelů a každý podepisovatel smí vytvořit 1 blok ze 6, pak v daném okamžiku může bloky vytvářet 5 validátorů. Aby se zabránilo jejich závodění ve vytváření bloků, každý podepisovatel přidá malý náhodný „posun“ k času, kdy vydá nový blok. To snižuje výskyt malých forků, ale stále umožňuje občasné forky, jak je vidět na síti Ethereum Mainnet. Pokud podepisovatel zneužije svou autoritu a způsobí narušení, může být ze sítě odhlasován.
Výhody a nevýhody
| Výhody | Nevýhody |
|---|---|
| Škálovatelnější než jiné populární mechanismy, jako jsou PoS a PoW, protože je založen na omezeném počtu podepisovatelů bloků | Sítě PoA mají obvykle relativně malý počet validujících uzlů. To činí síť PoA více centralizovanou. |
| Provoz a údržba blockchainů PoA jsou neuvěřitelně levné | Stát se autorizovaným podepisovatelem je pro běžného člověka obvykle nedosažitelné, protože blockchain vyžaduje subjekty se zavedenou reputací. |
| Transakce jsou potvrzovány velmi rychle, může to trvat i méně než 1 sekundu, protože k validaci nových bloků je zapotřebí pouze omezený počet podepisovatelů | Zlomyslní podepisovatelé by mohli provést reorganizaci, dvojí útratu nebo cenzurovat transakce v síti; tyto útoky jsou sice zmírněny, ale stále jsou možné |
Další čtení
- EIP-225 (opens in a new tab) Standard Clique
- Studie o důkazu autority (opens in a new tab) Cryptoeconomics
- Co je důkaz autority (opens in a new tab) OpenZeppelin
- Vysvětlení důkazu autority (opens in a new tab) Binance
- PoA v blockchainu (opens in a new tab)
- Vysvětlení Clique (opens in a new tab)
- Zastaralé PoA, specifikace Aura (opens in a new tab)
- IBFT 2.0, další implementace PoA (opens in a new tab)
Učíte se raději vizuálně?
Podívejte se na vizuální vysvětlení důkazu autority:
Související témata
Poslední aktualizace stránky: 22. dubna 2026