Důkaz podílem (PoS)
Důkaz podílem (PoS) je základem mechanismu konsensu Etherea. Ethereum zapnulo svůj mechanismus důkazu podílem v roce 2022, protože je bezpečnější, méně energeticky náročný a lepší pro implementaci nových řešení škálování ve srovnání s předchozí architekturou důkazu prací (PoW).
Předpoklady
Pro lepší pochopení této stránky doporučujeme nejprve si přečíst o mechanismech konsensu.
Co je důkaz podílem (PoS)?
Důkaz podílem je způsob, jak dokázat, že validátoři vložili do sítě něco hodnotného, co může být zničeno, pokud se budou chovat nečestně. V důkazu podílem Etherea validátoři explicitně stakují kapitál ve formě ETH do chytrého kontraktu na Ethereu. Validátor je pak zodpovědný za kontrolu, zda jsou nové bloky šířené po síti platné, a příležitostně sám vytváří a šíří nové bloky. Pokud se pokusí podvést síť (například navržením více bloků, když by měli poslat jeden, nebo odesláním konfliktních atestací), část nebo celé jejich stakované ETH může být zničeno.
Validátoři
Aby se uživatel mohl účastnit jako validátor, musí vložit 32 ETH do depozitního kontraktu a spustit tři samostatné softwary: exekučního klienta, konsensuálního klienta a klienta validátora. Po vložení svého ETH se uživatel připojí do fronty pro aktivaci, která omezuje rychlost připojování nových validátorů do sítě. Po aktivaci validátoři přijímají nové bloky od peerů v síti Ethereum. Transakce doručené v bloku jsou znovu spuštěny, aby se zkontrolovalo, že navrhované změny stavu Etherea jsou platné, a zkontroluje se podpis bloku. Validátor poté odešle hlas (nazývaný atestace) ve prospěch tohoto bloku napříč sítí.
Zatímco u důkazu prací je načasování bloků určeno obtížností těžby, u důkazu podílem je tempo pevně dané. Čas v Ethereu s důkazem podílem je rozdělen na sloty (12 sekund) a epochy (32 slotů). V každém slotu je náhodně vybrán jeden validátor jako navrhovatel bloku. Tento validátor je zodpovědný za vytvoření nového bloku a jeho odeslání dalším uzlům v síti. Také v každém slotu je náhodně vybrán výbor validátorů, jejichž hlasy se používají k určení platnosti navrhovaného bloku. Rozdělení sady validátorů do výborů je důležité pro udržení zvládnutelného zatížení sítě. Výbory rozdělují sadu validátorů tak, aby každý aktivní validátor atestoval v každé epoše, ale ne v každém slotu.
Jak se provádí transakce v Ethereu s PoS
Následující text poskytuje komplexní vysvětlení toho, jak se transakce provádí v Ethereu s důkazem podílem.
- Uživatel vytvoří a podepíše transakci svým soukromým klíčem. To obvykle řeší peněženka nebo knihovna, jako je Ethers.js (opens in a new tab), web3js (opens in a new tab), web3py (opens in a new tab) atd., ale interně uživatel odesílá požadavek na uzel pomocí JSON-RPC API Etherea. Uživatel definuje množství gasu, které je ochoten zaplatit jako prioritní poplatek validátorovi, aby ho povzbudil k zahrnutí transakce do bloku. Prioritní poplatky jsou vyplaceny validátorovi, zatímco základní poplatek je spálen.
- Transakce je odeslána exekučnímu klientovi Etherea, který ověří její platnost. To znamená zajištění, že odesílatel má dostatek ETH k provedení transakce a že ji podepsal správným klíčem.
- Pokud je transakce platná, exekuční klient ji přidá do svého lokálního mempoolu (seznamu čekajících transakcí) a také ji vysílá dalším uzlům přes gossip síť exekuční vrstvy. Když se o transakci dozvědí další uzly, přidají ji také do svého lokálního mempoolu. Pokročilí uživatelé se mohou zdržet vysílání své transakce a místo toho ji předat specializovaným tvůrcům bloků, jako je Flashbots Auction (opens in a new tab). To jim umožňuje organizovat transakce v nadcházejících blocích pro maximální zisk (MEV).
- Jeden z uzlů validátora v síti je navrhovatelem bloku pro aktuální slot, přičemž byl dříve pseudonáhodně vybrán pomocí RANDAO. Tento uzel je zodpovědný za sestavení a vysílání dalšího bloku, který má být přidán do blockchainu Etherea, a za aktualizaci globálního stavu. Uzel se skládá ze tří částí: exekučního klienta, konsensuálního klienta a klienta validátora. Exekuční klient sdružuje transakce z lokálního mempoolu do „exekučního payloadu“ a provádí je lokálně, aby vygeneroval změnu stavu. Tyto informace jsou předány konsensuálnímu klientovi, kde je exekuční payload zabalen jako součást „beacon bloku“, který také obsahuje informace o odměnách, trestech, penalizacích, atestacích atd., které umožňují síti dohodnout se na sekvenci bloků na vrcholu řetězce. Komunikace mezi exekučními a konsensuálními klienty je podrobněji popsána v části Propojení konsensuálních a exekučních klientů.
- Ostatní uzly přijmou nový beacon blok na gossip síti vrstvy konsensu. Předají jej svému exekučnímu klientovi, kde jsou transakce lokálně znovu spuštěny, aby se zajistilo, že navrhovaná změna stavu je platná. Klient validátora poté atestuje, že blok je platný a je logickým dalším blokem v jejich pohledu na řetězec (což znamená, že staví na řetězci s největší vahou atestací, jak je definováno v pravidlech volby forku). Blok je přidán do lokální databáze v každém uzlu, který jej atestuje.
- Transakci lze považovat za „finalizovanou“, pokud se stala součástí řetězce s „odkazem supervětšiny“ mezi dvěma kontrolními body. Kontrolní body se vyskytují na začátku každé epochy a existují proto, aby zohlednily skutečnost, že v každém slotu atestuje pouze podmnožina aktivních validátorů, ale všichni aktivní validátoři atestují napříč každou epochou. Proto lze „odkaz supervětšiny“ prokázat pouze mezi epochami (to je situace, kdy se 66 % celkového stakovaného ETH v síti shodne na dvou kontrolních bodech).
Více podrobností o finalitě naleznete níže.
Finalita
Transakce má v distribuovaných sítích „finalitu“, když je součástí bloku, který se nemůže změnit bez spálení velkého množství ETH. V Ethereu s důkazem podílem je to spravováno pomocí bloků „kontrolních bodů“. První blok v každé epoše je kontrolní bod. Validátoři hlasují pro páry kontrolních bodů, které považují za platné. Pokud pár kontrolních bodů přiláká hlasy představující alespoň dvě třetiny celkového stakovaného ETH, kontrolní body jsou povýšeny. Novější z těchto dvou (cíl) se stává „ospravedlněným“. Dřívější z těchto dvou je již ospravedlněný, protože byl „cílem“ v předchozí epoše. Nyní je povýšen na „finalizovaný“. Tento proces povyšování kontrolních bodů je řízen pomocí Casper the Friendly Finality Gadget (Casper FFG) (opens in a new tab). Casper FFG je nástroj pro finalitu bloků pro konsensus. Jakmile je blok finalizován, nemůže být zvrácen nebo změněn bez většinové penalizace stakerů, což to činí ekonomicky neproveditelným.
Ke zvrácení finalizovaného bloku by se útočník zavázal ke ztrátě alespoň jedné třetiny celkové nabídky stakovaného ETH. Přesný důvod je vysvětlen v tomto příspěvku na blogu Nadace Ethereum (opens in a new tab). Vzhledem k tomu, že finalita vyžaduje dvoutřetinovou většinu, útočník by mohl zabránit síti v dosažení finality hlasováním s jednou třetinou celkového staku. Existuje mechanismus, jak se proti tomu bránit: únik za neaktivitu (opens in a new tab). Ten se aktivuje, kdykoli se řetězci nepodaří finalizovat po dobu delší než čtyři epochy. Únik za neaktivitu odčerpává stakované ETH od validátorů hlasujících proti většině, což umožňuje většině znovu získat dvoutřetinovou většinu a finalizovat řetězec.
Kryptoekonomická bezpečnost
Provozování validátora je závazek. Očekává se, že validátor bude udržovat dostatečný hardware a konektivitu, aby se mohl účastnit validace bloku a návrhu. Na oplátku je validátor placen v ETH (jejich stakovaný zůstatek se zvyšuje). Na druhou stranu účast jako validátor také otevírá uživatelům nové cesty k útoku na síť za účelem osobního zisku nebo sabotáže. Aby se tomu zabránilo, validátoři přicházejí o odměny v ETH, pokud se nezúčastní, když jsou k tomu vyzváni, a jejich stávající stake může být zničen, pokud se chovají nečestně. Dvě primární chování lze považovat za nečestná: navrhování více bloků v jednom slotu (equivocation) a předkládání protichůdných atestací.
Množství penalizovaného ETH závisí na tom, kolik validátorů je také penalizováno přibližně ve stejnou dobu. To je známé jako „korelační penalizace“ (opens in a new tab) a může být menší (~1 % staku pro jednoho validátora penalizovaného samostatně) nebo může vést ke zničení 100 % staku validátora (událost hromadné penalizace). Ukládá se v polovině období nuceného výstupu, které začíná okamžitou penalizací (až 1 ETH) v den 1, korelační penalizací v den 18 a nakonec vyloučením ze sítě v den 36. Každý den dostávají menší penalizace za atestace, protože jsou přítomni v síti, ale neodesílají hlasy. To vše znamená, že koordinovaný útok by byl pro útočníka velmi nákladný.
Volba forku
Když síť funguje optimálně a čestně, na vrcholu řetězce je vždy jen jeden nový blok a všichni validátoři jej atestují. Je však možné, že validátoři mají různé pohledy na vrchol řetězce kvůli latenci sítě nebo proto, že navrhovatel bloku jednal dvojznačně (equivocation). Proto konsensuální klienti vyžadují algoritmus, který rozhodne, kterému dát přednost. Algoritmus používaný v Ethereu s důkazem podílem se nazývá LMD-GHOST (opens in a new tab) a funguje tak, že identifikuje fork, který má ve své historii největší váhu atestací.
Důkaz podílem a bezpečnost
Hrozba 51% útoku (opens in a new tab) stále existuje u důkazu podílem stejně jako u důkazu prací, ale pro útočníky je ještě riskantnější. Útočník by potřeboval 51 % stakovaného ETH. Poté by mohl použít své vlastní atestace k zajištění toho, aby jeho preferovaný fork byl ten s nejvíce nashromážděnými atestacemi. „Váha“ nashromážděných atestací je to, co konsensuální klienti používají k určení správného řetězce, takže tento útočník by byl schopen učinit svůj fork kanonickým. Silnou stránkou důkazu podílem oproti důkazu prací je však to, že komunita má flexibilitu při zahájení protiútoku. Například čestní validátoři by se mohli rozhodnout pokračovat ve stavění na menšinovém řetězci a ignorovat útočníkův fork, přičemž by povzbuzovali aplikace, burzy a pooly, aby udělaly totéž. Mohli by se také rozhodnout násilně odstranit útočníka ze sítě a zničit jeho stakované ETH. To jsou silné ekonomické obrany proti 51% útoku.
Kromě 51% útoků se mohou špatní aktéři pokusit i o jiné typy škodlivých aktivit, jako jsou:
- útoky na dlouhou vzdálenost (ačkoli nástroj pro finalitu tento vektor útoku neutralizuje)
- krátkodobé „reorganizace“ (ačkoli zvýhodnění navrhovatele a termíny atestací to zmírňují)
- útoky typu bouncing a balancing (také zmírněny zvýhodněním navrhovatele a tyto útoky byly každopádně demonstrovány pouze za idealizovaných síťových podmínek)
- lavinové útoky (neutralizovány pravidlem algoritmů volby forku, které zvažuje pouze nejnovější zprávu)
Celkově se ukázalo, že důkaz podílem, jak je implementován na Ethereu, je ekonomicky bezpečnější než důkaz prací.
Výhody a nevýhody
| Výhody | Nevýhody |
|---|---|
| Staking usnadňuje jednotlivcům účast na zabezpečení sítě, což podporuje decentralizaci. Uzel validátora lze spustit na běžném notebooku. Staking pooly umožňují uživatelům stakovat, aniž by měli 32 ETH. | Důkaz podílem je mladší a méně prověřený v praxi ve srovnání s důkazem prací |
| Staking je více decentralizovaný. Úspory z rozsahu neplatí stejným způsobem jako u těžby PoW. | Důkaz podílem je složitější na implementaci než důkaz prací |
| Důkaz podílem nabízí větší kryptoekonomickou bezpečnost než důkaz prací | Uživatelé musí spustit tři softwary, aby se mohli účastnit důkazu podílem Etherea. |
| K motivaci účastníků sítě je zapotřebí menší emise nového ETH |
Srovnání s důkazem prací
Ethereum původně používalo důkaz prací, ale v září 2022 přešlo na důkaz podílem. PoS nabízí oproti PoW několik výhod, jako například:
- lepší energetická účinnost – není třeba spotřebovávat spoustu energie na výpočty důkazu prací
- nižší bariéry vstupu, snížené hardwarové požadavky – není potřeba elitní hardware, abyste měli šanci vytvářet nové bloky
- snížené riziko centralizace – důkaz podílem by měl vést k tomu, že síť bude zabezpečovat více uzlů
- kvůli nízkým energetickým požadavkům je k motivaci k účasti zapotřebí menší emise ETH
- ekonomické tresty za špatné chování činí útoky typu 51 % pro útočníka nákladnějšími ve srovnání s důkazem prací
- komunita se může uchýlit k sociální obnově čestného řetězce, pokud by 51% útok překonal kryptoekonomické obrany.
Další čtení
- Často kladené dotazy k důkazu podílem (opens in a new tab) Vitalik Buterin
- Co je důkaz podílem (opens in a new tab) ConsenSys
- Co je důkaz podílem a proč na něm záleží (opens in a new tab) Vitalik Buterin
- Proč důkaz podílem (listopad 2020) (opens in a new tab) Vitalik Buterin
- Důkaz podílem: Jak jsem se naučil milovat slabou subjektivitu (opens in a new tab) Vitalik Buterin
- Útok a obrana Etherea s důkazem podílem (opens in a new tab)
- Filozofie návrhu důkazu podílem (opens in a new tab) Vitalik Buterin
- Video: Vitalik Buterin vysvětluje důkaz podílem Lexi Fridmanovi (opens in a new tab)