Domů
Články
Vysvětlení byzantské odolnosti proti chybám

Vysvětlení byzantské odolnosti proti chybám

Středně pokročilí
Zveřejněno Dec 6, 2018Aktualizováno Aug 17, 2023
5m

Od vzniku elektronického peer-to-peer peněžního systému Bitcoin v roce 2008 vzniklo mnoho dalších kryptoměn s různými mechanismy konsenzu. Jednu věc ale mají téměř všechny kryptoměny společnou – základním prvkem jejich architektury je blockchain.

Až na pár výjimek jsou blockchainy záměrně decentralizované a fungují jako digitální účetní kniha, kterou udržuje distribuovaná síť počítačových uzlů. To blockchainové technologii umožnilo vytvořit ekonomické systémy bez nutnosti důvěry, ve kterých je možné provádět transparentní a spolehlivé finanční transakce bez potřeby prostředníků. Kryptoměny začínají být přijímány jako vhodná alternativa k tradičním bankovním a platebním systémům, které jsou do značné míry závislé na důvěře.

Stejně jako u většiny distribuovaných výpočetních systémů se účastníci kryptoměnové sítě musí pravidelně shodovat na aktuálním stavu blockchainu – to se označuje jako dosahování konsenzu. Dosažení konsenzu na distribuovaných sítích bezpečným a efektivním způsobem ale není ani zdaleka snadný úkol.

Jak se tedy může distribuovaná síť počítačových uzlů shodnout na rozhodnutí, pokud některé z uzlů mohou selhat nebo jednat nečestně? To je zásadní otázka takzvaného problému byzantských generálů, který dal vzniknout konceptu byzantské odolnosti proti chybám.


Co je problém byzantských generálů?

Problém byzantských generálů vznikl v roce 1982 jako logické dilema, které ilustruje problém s komunikací skupiny byzantských generálů, když se snaží dohodnout na dalším postupu.

Toto dilema předpokládá, že každý generál má svou vlastní armádu a že každá armáda se nachází na různých místech v okolí města, na které hodlá zaútočit. Generálové se musí dohodnout buď na útoku, nebo ústupu. Nezáleží na tom, jestli všichni zaútočí, nebo ustoupí, ale musí dosáhnout konsensu – dohodnout se na společném rozhodnutí, aby ho mohli provést koordinovaně.

Požadavky jsou proto následující:

  • každý generál se musí rozhodnout: zaútočit, nebo ustoupit (ano nebo ne),

  • rozhodnutí už nelze zpětně změnit,

  • všichni generálové se musí shodnout na stejném rozhodnutí a provést ho koordinovaně.

Výše zmíněné problémy s komunikací souvisí s tím, že jeden generál může komunikovat s druhým pouze prostřednictvím zpráv, které jsou předávány kurýrem. Hlavní problém problému byzantských generálů tedy spočívá v tom, že zprávy se mohou zpozdit, ztratit nebo mohou být zničeny.

Navíc ani úspěšné doručení zprávy neznamená, že se jeden nebo více generálů nemohlo rozhodnout (z jakéhokoli důvodu) jednat nečestně a poslat podvodnou zprávu, aby zmátli ostatní generály, což by vedlo k naprostému nezdaru.

Když toto dilema přeneseme do kontextu blockchainu, tak každý generál představuje síťový uzel a uzly musí dosáhnout konsenzu ohledně aktuálního stavu systému. Jinými slovy, aby nedošlo k úplnému selhání, musí se většina účastníků distribuované sítě shodnout a provést stejnou akci.

Proto jediným způsobem, jak v těchto typech distribuovaných systémů dosahovat konsensu, je mít alespoň ze dvou třetin spolehlivé a čestné síťové uzly. To znamená, že systém je náchylný vůči selhání a útokům (např. 51% útok), když se většina sítě rozhodne jednat nečestně.


Byzantská odolnost proti chybám

Byzantská odolnost proti chybám je vlastnost systému, který dokáže odolat třídě poruch odvozených z problému byzantských generálů. To znamená, že systém s byzantskou odolností proti chybám dokáže pokračovat v provozu i v případě, že některé uzly selžou nebo jednají ve zlém úmyslu. 

Problém byzantských generálů má víc než jedno možné řešení, takže existuje několik způsobů, jak vytvořit systém s byzantskou odolností proti chybám. Stejně tak existují různé přístupy, jak je možné dosáhnout byzantské odolnosti proti chybám na blockchainu, což nás přivádí k takzvaným algoritmům konsenzu.


Blockchainové algoritmy konsenzu

Algoritmus konsenzu můžeme definovat jako mechanismus, pomocí kterého blockchainová síť dosahuje konsensu. Mezi nejběžnější implementace patří mechanismy proof of work (PoW) a proof of stake (PoS). Pojďme se ale podívat na příklad Bitcoinu.

Zatímco bitcoinový protokol předepisuje základní pravidla systému, algoritmus konsenzu PoW určuje, jakým způsobem se tato pravidla budou dodržovat, aby se dosáhlo konsensu (například při ověřování a potvrzování transakcí).

Přestože je koncept proof of work starší než kryptoměny, Satoshi Nakamoto si ho upravil a vytvořil z něj algoritmus, který umožnil vytvoření Bitcoinu jako systému s byzantskou odolností proti chybám.

Algoritmus PoW nemá stoprocentní byzantskou odolnost proti chybám, ale vzhledem k nákladnému procesu těžby a základním kryptografickým technikám se u blockchainových sítí ukázal jako jedna z nejbezpečnějších a nejspolehlivějších implementací. V tomto smyslu je algoritmus konsenzu proof of work Satoshiho Nakamota mnohými považován za jedno z nejgeniálnějších řešení byzantských chyb.


Závěrem

Problém byzantských generálů je fascinující dilema, které nakonec dalo vzniknout systémům s byzantskou odolností proti chybám. Ty se hojně uplatňují v různých situacích. Kromě blockchainového odvětví se tyto systémy používají například v leteckém, vesmírném a jaderném odvětví.

V kontextu kryptoměn je efektivní síťová komunikace a dobrý mechanismus konsenzu naprosto zásadní pro každý blockchainový ekosystém. Na zabezpečení těchto systémů se neustále pracuje a stávající algoritmy konsenzu ještě pořád nepřekonaly některá omezení (například škálovatelnost). I tak jsou ale mechanismy PoW a PoS velmi zajímavými přístupy k systémům s byzantskou odolností proti chybám a jejich potenciální využití jsou zaručeně inspirací pro rozsáhlé inovace.