Wat is het Byzantine generals probleem?

Wat is het Byzantine generals probleem?
Byzantine generals probleem toen en nu

Het Byzantine generals probleem is een vraagstuk over consensus (overeenstemming). Het speelt zowel in de oudheid als in de huidige tijd. De oplossing voor dit probleem moet een unanieme uitkomst opleveren in een gedeeld systeem met mogelijk onbetrouwbare actoren. Hoe werkt dat?

In dit artikel vertellen we je wat het oorspronkelijke probleem was in het Byzantijnse Rijk en hoe zich dat vertaalt naar cryptocurrency en blockchain.

1.350 woorden
6-9 minuten

Byzantijnse generaals

In het Byzantijnse Rijk, dat een onderdeel was van het Romeinse Rijk, bedacht men wat je moest doen als er een generaal onder de gelederen was die niet trouw was. Byzantium was destijds de hoofdstad van het Byzantijnse Rijk. Later veranderde zijn naam in Constantinopel en het heet nu Istanboel.

Het probleem is als volgt: stel je belegert een stad en je wil dat alle legeronderdelen dezelfde actie ondernemen. Je valt met zijn allen aan of je trekt je met zijn allen terug. Als bepaalde onderdelen van het leger iets anders doen, zullen zij mogelijk een nederlaag lijden.

Hoe krijg je alle neuzen dezelfde kant op? Je weet dat nooit zeker, tenzij je het praktisch aanpakt. Als de meerderheid van de legeronderdelen een bepaalde actie onderneemt (aanvallen of terugtrekken), moeten de andere onderdelen hetzelfde doen, ongeacht wat de generaal of boodschapper zegt. Zo krijg je een situatie waarin altijd alle onderdelen van het leger hetzelfde doen en is de consensus geregeld.

Scan de QR-code of klik de link om lid te worden bij Whitebit en je exclusieve korting te claimen op de toch al goedkope transactiekosten van 0,1% bij deze exchange. Maak zelf ook referrals en krijg 40-50% commissie over hun transactiekosten.

Byzantine fault

Een Byzantine fault is een fout die ontstaat als er in het leger verraderlijke generaals zitten. Deze zenden via boodschappers naar de ene helft van het leger de opdracht aanvallen en aan de andere terugtrekken. Hierdoor is er geen 100% consensus meer.

Byzantine fault tolerance

Doordat men met een meerderheid werkt, kunnen niet loyale generaals dit systeem niet breken, tenzij zij in de meerderheid zijn. Generaals worden niet licht gekozen, dus in vrijwel alle gevallen zullen er meer loyale dan verraderlijke generaals zijn.

Als de meerderheid voor een bepaalde strategie kiest, zal de rest van het leger zich daar aan moeten houden. Zo krijg je tolerantie voor fouten (verraad) in een systeem dat vrijwel altijd perfect werkt.

Nu begrijp je wel hoe je een imperfect systeem dat afhankelijk is van afzonderlijke eenheden zodanig kunt organiseren dat het toch vrijwel perfect werkt.

Byzantine fault tolerance in blockchain

Nu zul je je wellicht afvragen wat je moet met een verhaal over Byzantijnse generaals uit het jaar 0!

Je hebt vast wel eens gehoord van Byzantine fault tolerance (BFT) in de cryptowereld. Vandaag gaan we je vertellen hoe je dit kunt gebruiken in de gedecentraliseerde wereld van crypto en blockchain.

Als er een nieuw blok op een blockchain gemaakt moet worden, zal dit eerst goedgekeurd moeten worden door miners (Proof of Work) of validators (Proof of Stake). Het kan best dat er een paar bij zitten die foutieve of corrupte blokken voorstellen of goedkeuren. Deze mogen nooit op de blockchain verschijnen. De volledige blockchain is al vastgelegd en slechts nieuwe blokken kunnen worden toegevoegd.

Hiervoor heeft Satoshi Nakamoto in Bitcoin de Byzantine fault tolerance gebruikt om geldige nieuwe blokken op zijn blockchain te krijgen, zo lang de meerderheid eerlijk is. Dat klinkt nog enigszins verdacht, maar er zit een verstandig idee achter.

Als een miner een corrupt blok voorstelt om aan de Bitcoin blockchain toe te voegen, dan zal de meerderheid van de miners (51% oftewel de meerderheid) dit blok afkeuren volgens de protocollen van het Bitcoin consensus mechanisme (Proof of Work). Hierdoor komt dit blok niet op de blockchain terecht.

De miner heeft echter veel verloren hierdoor, want hij mag alleen een voorstel voor een blok indienen als hij dat blok gemined heeft. Minen is het raden van een enorm groot getal met een specifiek aantal nullen ervoor (SHA-256 hashing bij Bitcoin). Hij heeft dus veel werk verzet en geld uitgegeven. Eindelijk mag hij een blok maken en dan stelt hij een corrupt blok voor dat andere miners afwijzen. Zo schiet hij zichzelf in de voet!

Door dit systeem zullen miners correcte blokken voorstellen, anders verliezen zij waarde.

51% attack

Er is wel een manier om het consensus mechanisme van Bitcoin plat te leggen. Dat kan door een 51% attack. Hierbij heeft een bepaalde groep miners zo veel hashing power (rekenkracht) bij elkaar dat ze ook corrupte blokken kunnen goedkeuren. Dit komt heel zelden voor.

Er is een tijd geweest dat een bepaalde mining pool bijna 50% van de rekenkracht van de hele Bitcoin blockchain bij elkaar had. Op dat moment is aan deze groep gevraagd of zij zich wilden opsplitsen om het consensus mechanisme niet in gevaar te brengen en aldus geschiedde.

Naarmate de tijd vordert is dit probleem wat uit zicht geraakt, want ieder jaar dat de Bitcoin blockchain bestaat wordt het duurder om dit te doen, want deze blockchain database is ieder jaar groter en duurder om aan te vallen. In de vroege dagen van Bitcoin en cryptocurrency was dit veel beter te doen, omdat de marketcap nog niet zo hoog was en de database relatief klein. Dit systeem werkt zó goed dat er nog nooit een 51% aanval op Bitcoin is geweest.

Er zijn wel aanvallen van deze soort op andere Proof of Work blockchains geweest, maar die waren vaak kort en leverden relatief weinig op. De meeste van dit soort aanvallen gingen dan ook niet om de buit, maar om het schaden van de reputatie van een blockchain.

Byzantine fault tolerance in PoS

Hetzelfde systeem van fault tolerance wordt gebruikt in Proof of Stake consensus blockchains. De meerderheid bepaalt.

Bij Proof of Stake moet een validator veel munten van een bepaalde blockchain vastzetten (staken, at stake zetten) en blokken gaan goedkeuren (to validate). Hiervoor heeft hij een dure computer dag en nacht draaien die met behulp van speciale software alle blokken goed gaat keuren.

Als hij een foutief of corrupt blok goedkeurt, krijgt hij een boete in de vorm van een slash. Dit is het innemen van een aantal munten die de validator at stake had staan. Naarmate hij dit vaker doet, krijgt hij een hogere boete of verliest hij het recht om nog verder te werken als validator.

Een validator moet vaak voor tienduizenden euro’s aan munten at stake zetten en dure machines kopen, waardoor het absoluut niet rendabel is om foutieve blokken goed te keuren. Een validator past dan ook wel op dat hij iets fout doet en zorgt voor uitstekende hardware en up to date software en dat zijn machine altijd aan staat.

Dit systeem werkt ontzettend goed, want op deze manier heeft een validator niets te winnen, maar veel te verliezen bij het proberen te produceren of goedkeuren van foutieve blokken. Om deze reden hoor je dan ook eigenlijk nooit wat over Byzantijnse aanvallen op Proof of Stake netwerken, omdat de aanvallers alles te verliezen en niks te winnen hebben. Dit systeem is net wat slimmer dan Proof of Work, dat ook nog veel energie opslurpt.

Trustless blockchains

Door Byzantine fault tolerance krijg je het systeem waarbij deelnemers elkaar niet hoeven te vertrouwen. De meerderheid is simpelweg vrijwel altijd correct. Zo krijg je een blockchain die eeuwig kan doordraaien en frauduleuze miners en validators toestaat, zo lang de meerderheid maar betrouwbaar is. Zonder die fouttolerantie zou je een vastlopend systeem krijgen, waarbij slechts 1 corrupte miner of validator het hele systeem plat kan leggen.

Conclusie

Nu weet je dus wat het Byzantine generals probleem is en waarom dat belangrijk is voor blockchains. Zonder dit eenvoudige, maar toch slim bedachte, consensus mechanisme zouden blockchains niet eens kunnen bestaan.

Zowel in Proof of Work als in Proof of Stake is het niet handig om een Byzantine fault te genereren, omdat je er zelf de dupe van wordt. Precies daarom wordt het gebruikt!

Scroll naar boven