Od vzniku Bitcoinu v roce 2008 jako elektronického peněžního systému peer-to-peer vzniklo mnoho dalších kryptoměn, každá s určitým mechanismem. Jedno však mají téměř všechny kryptoměny společné – blockchain jako základní prvek jejich architektury.
Až na několik výjimek jsou blockchainy záměrně navrženy tak, aby byly decentralizované a fungovaly jako digitální účetní kniha, kterou udržuje distribuovaná síť počítačových uzlů. Z tohoto důvodu technologie blockchain umožnila vytvořit ekonomické systémy bez důvěry, v nichž by bylo možné provádět transparentní a spolehlivé finanční transakce bez potřeby zprostředkovatelů. Kryptoměny jsou přijímány jako životaschopná alternativa k tradičním bankovním a platebním systémům, které jsou silně závislé na důvěře.
Stejně jako u většiny distribuovaných výpočetních systémů se účastníci sítě kryptoměn musí pravidelně shodovat na aktuálním stavu blockchainu, a tomu říkáme dosažení konsensu. Dosáhnout konsenzu v distribuovaných sítích bezpečným a efektivním způsobem však zdaleka není snadný úkol.
Jak se tedy může distribuovaná síť počítačových uzlů dohodnout na rozhodnutí, pokud je pravděpodobné, že některé z uzlů selžou nebo budou jednat nečestně? To je základní otázka takzvaného problému byzantských generálů, který dal vzniknout konceptu byzantské odolnosti proti chybám.
Co je to problém byzantských generálů?
Krátce řečeno, problém byzantských generálů byl koncipován v roce 1982 jako logické dilema, které ilustruje, jak může mít skupina byzantských generálů problémy s komunikací, když se snaží dohodnout na svém dalším postupu.
Dilema předpokládá, že každý generál má svou vlastní armádu a že každá skupina 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 na ústupu. Nezáleží na tom, zda zaútočí nebo ustoupí, pokud všichni generálové dosáhnou shody, tj, shodnou na společném rozhodnutí, aby ho mohli koordinovaně provést.
Můžeme tedy uvažovat o následujících požadavcích:
- Každý generál musí rozhodnout: zaútočit nebo ustoupit (ano nebo ne);
- Po přijetí rozhodnutí ho nelze změnit;
- Všichni generálové se musí shodnout na stejném rozhodnutí a synchronizovaně ho provést.
Výše uvedené komunikační problémy souvisejí s tím, že jeden generál je schopen komunikovat s druhým pouze prostřednictvím zpráv, které předává kurýr. V důsledku toho je ústředním problémem byzantského generálského problému to, že zprávy se mohou nějakým způsobem zpozdit, zničit nebo ztratit.
Navíc i když je zpráva úspěšně doručena, může se jeden nebo více generálů rozhodnout (z jakéhokoli důvodu) jednat zlomyslně a poslat podvodnou zprávu, aby zmátli ostatní generály, což vede k úplnému selhání.
Pokud toto dilema aplikujeme na kontext blockchainu, každý generál představuje uzel sítě a uzly musí dosáhnout konsensu o aktuálním stavu systému. Řečeno jinak, většina účastníků v rámci distribuované sítě se musí shodnout a provést stejnou akci, aby nedošlo k úplnému selhání.
Jediným způsobem, jak dosáhnout konsensu v těchto typech distribuovaných systémů, je tedy mít alespoň ⅔ nebo více spolehlivých a poctivých uzlů sítě. To znamená, že pokud se většina sítě rozhodne jednat nekalým způsobem, je systém náchylný k selháním a útokům (např. 51% útok).
Byzantská odolnost proti selhání (BFT)
Několika slovy je byzantská odolnost proti selhání (BFT) vlastnost systému, který je schopen odolat třídě selhání odvozené z byzantského generálního problému. To znamená, že systém s BFT je schopen pokračovat v provozu, i když některý z uzlů selže nebo se chová zákeřně.
Existuje více než jedno možné řešení Byzantského generálského problému, a tedy více způsobů, jak sestavit systém BFT. Stejně tak existují různé přístupy, jak v blockchainu dosáhnout byzantské odolnosti proti poruchám, a to nás přivádí k tzv. konsenzuálním algoritmům.
Konsenzuální algoritmy blockchainu
Konsenzuální algoritmus můžeme definovat jako mechanismus, pomocí kterého síť blockchainu dosahuje konsenzu. Nejběžnější implementace jsou Proof of Work (PoW) a Proof of Stake (PoS). Vezměme si však jako příklad případ Bitcoinu.
Pokud protokol Bitcoinu předepisuje primární pravidla systému, konsensuální algoritmus PoW je to, co definuje, jak budou tato pravidla dodržována za účelem dosažení konsensu (například při ověřování a potvrzování transakcí).
Ačkoli je koncept Proof of Work starší než kryptoměny, Satoshi Nakamoto vyvinul jeho upravenou verzi jako algoritmus, který umožnil vznik Bitcoinu jako systému BFT.
Všimněte si, že algoritmus PoW není stoprocentně odolný vůči byzantským chybám, ale vzhledem k nákladnému procesu těžby a základním kryptografickým technikám se PoW ukázal jako jedna z nejbezpečnějších a nejspolehlivějších implementací pro blockchainové sítě. V tomto smyslu je konsensuální algoritmus Proof of Work, který navrhl Satoshi Nakamoto, mnohými považován za jedno z nejgeniálnějších řešení byzantských poruch.
Závěrečné myšlenky
Byzantský generální problém je zajímavé dilema, které nakonec dalo vzniknout systémům BFT, jež se hojně uplatňují v různých scénářích. Kromě blockchainového průmyslu patří mezi několik případů použití systémů BFT letectví, vesmírný průmysl a jaderná energetika.
V kontextu kryptoměn je pro každý blockchainový ekosystém zásadní mít efektivní síťovou komunikaci spolu s dobrým mechanismem konsensu. Zabezpečení těchto systémů je trvalým úsilím a stávající konsensuální algoritmy musí ještě překonat několik omezení (například škálovatelnost). Přesto jsou PoW a PoS jako systémy BFT velmi zajímavými přístupy a jejich potenciální aplikace jistě inspirují k rozsáhlým inovacím.