Slyšeli jste už někdy o Byzantine Generals Problem (BGP), Byzantine Fault Tolerance, The Two Generals Problem nebo ve volném překladu do češtiny Problému dvou armád? Pokud se ve světě kryptoměn pohybujete déle, tak jste tento název minimálně někde viděli nebo o něm četli. Věnovali jste mu však dostatečnou pozornost? BGP je totiž jednou z nejdůležitějších lekcí na pochopení toho jak Bitcoin funguje. Pojďme si ale krok po kroku vysvětlit o co vlastně jde.
Co je Byzantine Generals Problem?
Představte si situaci jako z dávných dob. Město v údolí je obklíčeno armádami z každé strany. Město samotné je v menšině, pokud však nedojde k jednotnému útoku ze strany útočících armád, město vždy vyhraje (na první pohled nepodstatná informace, která ale vykresluje jeden důležitý předpoklad o většině na straně generálů).
Vy jste generálem jedné z těchto armád a chcete zaútočit. Nevíte však kdy, protože pokud byste zaútočili na město sami, prohráli byste. Proto potřebujete, aby zaútočili všichni generálové ve stejný čas jako vy. Proto rozešlete posly, aby doručili zprávu o tom, kdy zaútočíte.
Problém?
Právě v tomto okamžiku nastává problém. Co když je jeden z vašich služebníků zrádce? Co když řekne generálovi druhé armády jiný čas, a tím vám překazí váš útok? Další problém může nastat, když váš sluha musí projít městem a dostane se do zajetí, sluhu vymění a stejně tak i vaší zprávu. V tomto případě by tedy každý z generálů zaútočil v jiný čas, a město by se opět ubránilo. Proto si nemůžete být nikdy jistí, komu můžete věřit.
Rovněž si ale nemůžete být ani jistý v tom, čemu věřit. Vaše zpráva je totiž pouze text. Ten se může velmi snadno zfalšovat (kýmkoliv na cestě). Jak by se dalo tomuto všemu zabránit? Je možnost poslat zprávu generálům tak, abyste si byli jistí, že i vy dostanete zprávu jakou očekáváte a zaútočíte všichni ve správný čas?
Řešení: Těžba / mining
Pojďme si ale v jednoduchosti říci, s čím tak převratným tedy přišel Bitcoin na trh. Je tím takzvaná těžba (určitě jste to již mnohokrát slyšeli). Nikdo však nejde s krumpáčem do dolu, aby kopal a těžil digitální zlato. Těžba Bitcoinu se skládá ze tří kroků:
- 1. Těžař vytvoří soubor, který se skládá ze 3 částí. První je hash posledního bloku zapsaného na blockchainu. Druhou je blok s novými (ještě nevalidovanými) transakcemi. Poslední částí je takzvaná „nonce.“ V jednoduchosti je nonce náhodné číslo, které těžař náhodně zkusí odhadnout. Kombinace těchto tří prvků je vstupní informací pro druhý krok.
- 2. Těžař použije kryptografickou funkci pro zpracování informací, které obdržel. Ta následně vytvoří unikátní řadu (string) znaků, jenž nemůže být zaměněna. Tato řada znaků se nazývá „data hash.“
- 3. Data hash je v posledním kroku porovnána s požadovaným vzorem (v případě Bitcoinu je podstatný počet nul na začátku hash). Pokud se hash shoduje se vzorem, těžař objevil platný blok. Pokud by se hash a vzor neshodovaly, těžař se musí vrátit k prvnímu kroku, odhadnout novou nonce a proces opakovat. (Pokud by vás zajímalo více detailů na toto téma, najdete je v tomto článku)
Co se stane dál?
Jakmile těžař najde blok, který je schválen, zapíše ho do blockchainu. Následně všichni těžaři znovu začnou celý proces hledání nového bloku od začátku. V prvním kroku (z výše uvedených tří), ale zakomponují nový, delší blockchain. A čím je blockchain delší a delší, tím více je třeba výpočetní techniky na nalezení nového bloku.
Pozornému čtenáři neušlo, že my jsme zatím Problém dvou armád nevyřešili. Ale všechny informace, které jsme dosud uvedli, nám pomohou tuto otázku zodpovědět.
Odpověď je, že pokud se zadavatel (client – v našem případě si ho obrazně představme jako generála) rozhoduje, kterou verzi blockchainu si má vybrat, vybere si tu nejdelší. Tedy tu, jenž má největší celkovou obtížnost algoritmů HASH, které byly využity k jejímu vytvoření. Je tomu tak proto, že byl využit největší výpočetní výkon na jeho vytvoření (a tedy se předpokládá, že je nejpravdivější).
Pokud by se tedy v našem případě zrádce pokusil zprávu zfalšovat, musel by do toho vložit více energie / výkonu, než zadavatel. To však není možné, kvůli nevyzpytatelnému procesu hádání noncí. Rovněž tomu napomáhá i fakt, že zrádce by byl v menšině (jako zmíněné město), a proto by nebyl schopen překonat původní verzi blockchainu (zprávu odeslanou generálem – vámi).
Je ale tímto BGP opravdu vyřešen?
Mnoho lidí tvrdí, že skutečné řešení neexistuje a že ani Bitcoin nevyřešil Problém dvou armád. Podle určitých lidí nelze ve skutečně decentralizovaném světě ověřit, zda vše probíhá tak, jak má. Na druhé straně se zdá, že nikdo zatím nenavrhl efektivnější řešení než to, které nabízí právě blockchain technologie.
Závěr
Ve zkratce by se dalo říci, že Problém dvou armád, nebo-li Byzantine Generals Problem, vykresluje situaci, ve které musí dojít ke konsensu v decentralizovaném systému. Jedno z řešení by mohla nabídnout těžba kryptoměn. Ta propojuje hádání noncí na vyprodukování řetězce (Chai) a vybrání nejdelšího (zároveň nejtěžšího) řetězce.
Více informací najdete zde.
Zdroje:
andrew.cmu.edu
wikipedia.org
youtube.com
Obrázok:
moodle.autolab.uni