Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
---
title: Mechanismy konsenzu
description: "Vysvětlení konsensuálních protokolů v distribuovaných systémech a jejich role v Ethereu."
lang: cs
---

Pojem „mechanismus konsenzu“ se často hovorově používá pro protokoly „důkaz podílem“, „důkaz prací“ nebo „důkaz autoritou“. Jedná se však pouze o součásti mechanismů konsenzu, které chrání proti [útokům Sybil](/glossary/#sybil-attack). Mechanismy konsenzu jsou kompletní soubor myšlenek, protokolů a pobídek, které umožňují distribuované sadě uzlů dohodnout se na stavu blockchainu.

## Předpoklady {#prerequisites}

Pro lepší pochopení této stránky doporučujeme si nejprve přečíst náš [úvod do Etherea](/developers/docs/intro-to-ethereum/).

## Co je to konsensus? {#what-is-consensus}

Konsensem myslíme, že bylo dosaženo všeobecné shody. Představte si skupinu lidí, kteří jdou do kina. Pokud nedojde k neshodě ohledně navrhovaného výběru filmu, je dosaženo konsensu. Pokud dojde k neshodě, skupina musí mít prostředky, jak se rozhodnout, na který film se podívat. V krajních případech se skupina nakonec rozdělí.

Pokud jde o blockchain Etherea, proces je formalizován a dosažení konsensu znamená, že se alespoň 66 % uzlů v síti shodne na globálním stavu sítě.

## Co je to konsensuální mechanismus? {#what-is-a-consensus-mechanism}

Termín mechanismus konsenzu se vztahuje na celý soubor protokolů, pobídek a myšlenek, které umožňují síti uzlů dohodnout se na stavu blockchainu.

Ethereum používá mechanismus konsenzu založený na důkazu podílem, který odvozuje své krypto-ekonomické zabezpečení ze souboru odměn a pokut uplatňovaných na kapitál uzamčený stakery. Tato motivační struktura povzbuzuje jednotlivé stakery, aby provozovali poctivé validátory, trestá ty, kteří tak nečiní, a vytváří extrémně vysoké náklady na útok na síť.

Dále existuje protokol, který řídí, jak jsou poctiví validátoři vybíráni, aby navrhovali nebo validovali bloky, zpracovávali transakce a hlasovali pro svůj pohled na začátek řetězce. Ve vzácných situacích, kdy se v blízkosti začátku řetězce nachází více bloků ve stejné pozici, existuje mechanismus výběru větve, který vybírá bloky, které tvoří „nejtěžší“ řetězec, měřeno počtem validátorů, kteří pro bloky hlasovali, váženým jejich zůstatkem vsazeného etheru.

Některé koncepty jsou pro konsensus důležité, ale nejsou explicitně definovány v kódu, jako například dodatečné zabezpečení, které nabízí potenciální mimopásmová sociální koordinace jako poslední obranná linie proti útokům na síť.

Tyto komponenty dohromady tvoří mechanismus konsenzu.

## Typy mechanismů konsenzu {#types-of-consensus-mechanisms}

### Založené na důkazu prací {#proof-of-work}

Stejně jako Bitcoin, i Ethereum kdysi používalo konsensuální protokol založený na **důkazu prací (PoW)**.

#### Tvorba bloku {#pow-block-creation}

Těžaři soutěží o vytvoření nových bloků naplněných zpracovanými transakcemi. Vítěz se o nový blok podělí se zbytkem sítě a získá čerstvě vytěžené ETH. Závod vyhrává počítač, který dokáže nejrychleji vyřešit matematickou hádanku. Tím se vytvoří kryptografické spojení mezi aktuálním blokem a blokem, který mu předcházel. Vyřešení této hádanky je ona „práce“ v „důkazu prací“. Kanonický řetězec je pak určen pravidlem výběru větve, které vybírá sadu bloků, na jejichž vytěžení bylo vynaloženo nejvíce práce.

#### Bezpečnost {#pow-security}

Síť je bezpečná díky tomu, že k podvodu v řetězci byste potřebovali 51% výpočetního výkonu sítě. To by vyžadovalo tak obrovské investice do vybavení a energie, že byste pravděpodobně utratili více, než byste získali.

Více o [důkazu prací](/developers/docs/consensus-mechanisms/pow/)

### Založené na důkazu podílem {#proof-of-stake}

Ethereum nyní používá konsensuální protokol založený na **důkazu podílem (PoS)**.

#### Tvorba bloku {#pos-block-creation}

Validátoři vytvářejí bloky. V každém slotu je náhodně vybrán jeden validátor, který se stane navrhovatelem bloku. Jejich konsensuální klient si vyžádá balíček transakcí jako „exekuční datovou část“ od spárovaného exekučního klienta. Toto zabalí do konsensuálních dat, aby vytvořili blok, který odešlou ostatním uzlům v síti Ethereum. Tato produkce bloků je odměňována v ETH. Ve vzácných případech, kdy pro jeden slot existuje více možných bloků nebo se uzly o blocích dozvědí v různou dobu, algoritmus výběru větve vybere blok, který tvoří řetězec s největší váhou atestací (kde váha je počet atestujících validátorů škálovaný jejich zůstatkem ETH).

#### Bezpečnost {#pos-security}

Systém důkazu podílem je krypto-ekonomicky bezpečný, protože útočník, který se pokusí převzít kontrolu nad řetězcem, musí zničit obrovské množství ETH. Systém odměn motivuje jednotlivé stakery k čestnému chování a pokuty je odrazují od škodlivého jednání.

Více o [důkazu podílem](/developers/docs/consensus-mechanisms/pos/)

### Vizuální průvodce {#types-of-consensus-video}

Podívejte se na více informací o různých typech mechanismů konsenzu používaných v Ethereu:

<YouTube id="ojxfbN78WFQ" />

### Odolnost proti útokům Sybil a výběr řetězce {#sybil-chain}

Důkaz prací a důkaz podílem samy o sobě nejsou konsensuální protokoly, ale pro zjednodušení se tak často označují. Jsou to ve skutečnosti mechanismy odolnosti proti útokům Sybil a voliči autora bloku; je to způsob, jak rozhodnout, kdo je autorem nejnovějšího bloku. Další důležitou součástí je algoritmus pro výběr řetězce (neboli výběr větve), který umožňuje uzlům vybrat si jeden jediný správný blok na začátku řetězce ve scénářích, kdy na stejné pozici existuje více bloků.

**Odolnost proti útokům Sybil** měří, jak si protokol vede proti útoku Sybil. Odolnost proti tomuto typu útoku je pro decentralizovaný blockchain zásadní a umožňuje těžařům a validátorům, aby byli odměňováni rovnoměrně na základě vložených zdrojů. Důkaz prací a důkaz podílem proti tomu chrání tím, že nutí uživatele vynaložit velké množství energie nebo vložit velký kolaterál. Tato ochrana je ekonomickým odstrašujícím prostředkem proti útokům Sybil.

**Pravidlo výběru řetězce** se používá k rozhodnutí, který řetězec je ten „správný“. Bitcoin používá pravidlo „nejdelšího řetězce“, což znamená, že nejdelší blockchain bude ten, který zbytek uzlů přijme jako platný a bude s ním pracovat. U řetězců s důkazem prací je nejdelší řetězec určen celkovou kumulativní obtížností důkazu prací daného řetězce. I Ethereum dříve používalo pravidlo nejdelšího řetězce; nicméně nyní, když Ethereum běží na důkazu podílem, přijalo aktualizovaný algoritmus výběru větve, který měří „váhu“ řetězce. Váha je kumulativní součet hlasů validátorů, vážený zůstatky vsazeného etheru validátorů.

Ethereum používá mechanismus konsenzu známý jako [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/), který kombinuje [důkaz podílem Casper FFG](https://arxiv.org/abs/1710.09437) s [pravidlem výběru větve GHOST](https://arxiv.org/abs/2003.03052).

## Další čtení {#further-reading}

- [Co je to konsensuální algoritmus blockchainu?](https://academy.binance.com/en/articles/what-is-a-blockchain-consensus-algorithm)
- [Co je to Nakamoto konsensus? Kompletní průvodce pro začátečníky](https://blockonomi.com/nakamoto-consensus/)
- [Jak funguje Casper?](https://medium.com/unitychain/intro-to-casper-ffg-9ed944d98b2d)
- [O bezpečnosti a výkonu blockchainů s důkazem prací](https://eprint.iacr.org/2016/555.pdf)
- [Byzantská chyba](https://en.wikipedia.org/wiki/Byzantine_fault)

_Víte o komunitním zdroji, který vám pomohl? Upravte tuto stránku a přidejte ho!_

## Související témata {#related-topics}

- [Důkaz prací](/developers/docs/consensus-mechanisms/pow/)
- [Těžba](/developers/docs/consensus-mechanisms/pow/mining/)
- [Důkaz podílem](/developers/docs/consensus-mechanisms/pos/)
- [Důkaz autoritou](/developers/docs/consensus-mechanisms/poa/)
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
title: Proof-of-authority (PoA)
description: "Vysvětlení konsenzuálního protokolu proof-of-authority a jeho role v ekosystému blockchainu."
lang: cs
---

**Proof-of-authority (PoA)** je konsenzuální algoritmus založený na reputaci, který je upravenou verzí [důkazu podílem](/developers/docs/consensus-mechanisms/pos/). Většinou se používá na privátních řetězcích, testnetech a lokálních vývojových sítích. PoA je konsenzuální algoritmus založený na reputaci, který k vytváření bloků vyžaduje důvěru v sadu autorizovaných podepisovatelů, a to na rozdíl od mechanismu PoS založeného na podílu.

## Předpoklady {#prerequisites}

Abyste lépe porozuměli této stránce, doporučujeme vám si nejprve přečíst o [transakcích](/developers/docs/transactions/), [blocích](/developers/docs/blocks/) a [mechanismech konsenzu](/developers/docs/consensus-mechanisms/).

## Co je to proof-of-authority (PoA)? {#what-is-poa}

Proof-of-authority je upravená verze **[důkazu podílem](/developers/docs/consensus-mechanisms/pos/) (PoS)**, což je konsenzuální algoritmus založený na reputaci namísto mechanismu PoS založeného na podílu. Tento termín poprvé představil v roce 2017 Gavin Wood a tento konsenzuální algoritmus se většinou používá na privátních řetězcích, testnetech a lokálních vývojových sítích, jelikož překonává potřebu vysoce kvalitních zdrojů jako PoW a řeší problémy se škálovatelností u PoS tím, že pouze malá podmnožina uzlů ukládá blockchain a vytváří bloky.

Proof-of-authority vyžaduje důvěru v sadu autorizovaných podepisovatelů, kteří jsou definováni v [genesis bloku](/glossary/#genesis-block). Ve většině současných implementací si všichni autorizovaní podepisovatelé ponechávají stejnou moc a oprávnění při určování konsensu řetězce. Myšlenka stakování reputace je taková, že každý autorizovaný validátor je všem dobře známý, například prostřednictvím ověření klienta (KYC) 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ě, jeho identita známa.

Existuje několik implementací PoA, ale standardní implementací Etherea je **clique**, která implementuje [EIP-225](https://eips.ethereum.org/EIPS/eip-225). Clique je standard přívětivý pro vývojáře a snadno se implementuje, přičemž podporuje všechny typy synchronizace klientů. Mezi další implementace patří [IBFT 2.0](https://besu.hyperledger.org/private-networks/concepts/poa) a [Aura](https://openethereum.github.io/Chain-specification).

## Jak to funguje {#how-it-works}

V PoA je k vytváření nových bloků vybrána sada autorizovaných podepisovatelů. Podepisovatelé jsou vybíráni na základě své reputace a jsou jediní, kdo smí vytvářet nové bloky. Podepisovatelé jsou vybíráni cyklicky (způsobem round-robin) a každý podepisovatel smí vytvořit blok v určitém časovém rámci. Doba vytváření bloku je pevně daná a podepisovatelé musí vytvořit blok v tomto časovém rámci.

Reputace v tomto kontextu není kvantifikovatelná veličina, ale spíše reputace známých korporací, jako je Microsoft nebo Google. Z toho důvodu výběr důvěryhodných podepisovatelů není algoritmický, ale je to normální lidský akt _důvěry_. Když například entita jako Microsoft vytvoří privátní síť PoA pro stovky nebo tisíce startupů a sama se ujme role 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 společnosti Microsoft, že bude vždy jednat čestně, a síť by použí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 zároveň se eliminuje potřeba těžařů, což spotřebovává velké množství energie a zdrojů. Některé privátní sítě, jako například VeChain, používají standard PoA v jeho původní podobě a některé ho upravují, jako například Binance, která používá [PoSA](https://academy.binance.com/en/glossary/proof-of-staked-authority-posa), což je vlastní upravená verze PoA a PoS.

Hlasovací proces provádějí sami podepisovatelé. Každý podepisovatel hlasuje pro přidání nebo odebrání podepisovatele ve svém bloku, když vytváří nový blok. Uzly sečtou hlasy a podepisovatelé jsou přidáni nebo odebráni na základě toho, zda hlasy dosáhnou určitého prahu `SIGNER_LIMIT`.

Může nastat situace, kdy dojde k malým větvím. Obtížnost bloku závisí na tom, zda byl blok podepsán v pořadí, nebo mimo pořadí. Bloky „v pořadí“ mají obtížnost 2 a bloky „mimo pořadí“ mají obtížnost 1. V případě malých větví získá největší celkovou obtížnost a vyhraje ten řetězec, ve kterém většina podepisovatelů potvrzuje bloky „v pořadí“.

## Vektory útoku {#attack-vectors}

### Zlomyslní podepisovatelé {#malicious-signers}

Do seznamu podepisovatelů by mohl být přidán zlomyslný uživatel nebo by mohl být kompromitován podpisový klíč/stroj. V takovém scénáři se protokol musí být schopen bránit proti reorganizacím a spamování. Navrhovaným řešením je, že na seznamu N autorizovaných podepisovatelů může každý podepisovatel razit pouze 1 blok z každých K. To zajišťuje omezení škod a zbytek validátorů může zlomyslného uživatele odhlasovat.

### Cenzura {#censorship-attack}

Dalším zajímavým vektorem útoku je, když se podepisovatel (nebo skupina podepisovatelů) pokusí cenzurovat bloky, které hlasují o jejich odstranění ze seznamu autorizací. Aby se tomu předešlo, je povolená frekvence ražení bloků podepisovateli omezena na 1 z N/2. To zajišťuje, že zlomyslní podepisovatelé musí ovládat alespoň 51 % podepisovacích účtů. V takovém případě by se fakticky stali novým zdrojem pravdy pro řetězec.

### Spam {#spam-attack}

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í. Protože uzly musí sečíst všechny hlasy, aby vytvořily skutečný seznam autorizovaných podepisovatelů, musí v průběhu času zaznamenávat všechny hlasy. Bez omezení hlasovacího okna by tento počet mohl pomalu, ale neomezeně růst. Řešením je zavést _pohyblivé_ okno W bloků, po kterém jsou hlasy považovány za zastaralé. _Přiměřené okno může být 1–2 epochy._

### Souběžné bloky {#concurrent-blocks}

V síti PoA, kde je N autorizovaných podepisovatelů, smí každý podepisovatel razit 1 blok z K, což znamená, že v daném okamžiku smí razit blok N-K+1 validátorů. Aby se zabránilo tomu, že tito validátoři budou soutěžit o bloky, měl by každý podepisovatel přidat malý náhodný "offset" k času, kdy uvolní nový blok. Ačkoli tento proces zajišťuje, že malé větve jsou vzácné, občasné větve se stále mohou vyskytnout, stejně jako na hlavní síti. Pokud se zjistí, že podepisovatel zneužívá svou moc a způsobuje chaos, mohou ho ostatní podepisovatelé odhlasovat.

Pokud je například 10 autorizovaných podepisovatelů a každý podepisovatel smí vytvořit 1 blok z 20, pak v daném okamžiku může 11 validátorů vytvářet bloky. Aby se zabránilo tomu, že budou soutěžit o vytváření bloků, každý podepisovatel přidá malý náhodný "offset" k času, kdy uvolní nový blok. To snižuje výskyt malých větví, ale stále umožňuje občasné větve, jak je vidět na hlavní síti Etherea. Pokud podepisovatel zneužije svou autoritu a způsobí narušení, může být odhlasován ze sítě.

## Výhody a nevýhody {#pros-and-cons}

| Plusy | Minusy |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Škálovatelnější než jiné populární mechanismy jako PoS a PoW, protože je založen na omezeném počtu podepisovatelů bloků. | Sítě PoA mají obvykle relativně malý počet ověřovacích uzlů. Díky tomu je síť PoA více centralizovaná. |
| Provoz a údržba blockchainů PoA je neuvěřitelně levná. | Stát se autorizovaným podepisovatelem je pro běžného člověka obvykle nedostupné, protože blockchain vyžaduje entity se zavedenou reputací. |
| Transakce jsou potvrzovány velmi rychle, může to být i za méně než 1 sekundu, protože k ověření nových bloků je zapotřebí pouze omezený počet podepisovatelů. | Zlomyslní podepisovatelé by mohli provést reorganizaci, dvojí útratu, cenzurovat transakce v síti. Tyto útoky jsou sice zmírněny, ale stále možné. |

## Další čtení {#further-reading}

- [EIP-225](https://eips.ethereum.org/EIPS/eip-225) _standard Clique_
- [Studie Proof of Authority](https://github.com/cryptoeconomics-study/website/blob/master/docs/sync/2.4-lecture.md) _Cryptoeconomics_
- [Co je to Proof of Authority](https://forum.openzeppelin.com/t/proof-of-authority/3577) _OpenZeppelin_
- [Vysvětlení Proof of Authority](https://academy.binance.com/en/articles/proof-of-authority-explained) _binance_
- [PoA v blockchainu](https://medium.com/techskill-brew/proof-of-authority-or-poa-in-blockchain-part-11-blockchain-series-be15b3321cba)
- [Vysvětlení Clique](https://medium.com/@Destiner/clique-cross-client-proof-of-authority-algorithm-for-ethereum-8b2a135201d)
- [Zastaralé PoA, specifikace Aura](https://openethereum.github.io/Chain-specification)
- [IBFT 2.0, další implementace PoA](https://besu.hyperledger.org/private-networks/concepts/poa)

### Učíte se spíše vizuálně? Vizuální výuka {#visual-learner}

Podívejte se na vizuální vysvětlení proof-of-authority:

<YouTube id="Mj10HSEM5_8" />

## Související témata {#related-topics}

- [Důkaz prací](/developers/docs/consensus-mechanisms/pow/)
- [Důkaz podílem](/developers/docs/consensus-mechanisms/pos/)

Loading