Wat is het Byzantine Generals Problem?

with Geen reacties

Het Byzantine Generals Problem heeft betrekking op het consensus-mechanisme binnen blockchain ecosystemen. Wie zich voor het eerst gaat verdiepen in de werking van blockchain-ecosystemen, wordt al snel geconfronteerd met de meest vreemde terminologie. Mensen die niet werkzaam zijn binnen de IT-branche of enige kennis hebben van programmeren, zijn dan ook meestal al snel de draad kwijt. En dat is ook niet zo gek, want blockchaintechnologie is een zeer complexe tak van sport. Eén van de meest ingewikkelde elementen van decentraal gedistribueerde netwerken is het consensus-protocol. Dit protocol is nodig om het netwerk goed te kunnen laten functioneren en daarnaast is die consensus een hele belangrijke factor om de veiligheid van blockchain-transacties op ieder moment te kunnen waarborgen. Het valt niet mee om dit zeer verfijnde mechanisme goed uit te leggen. Toch ga ik in dit artikel een bescheiden poging wagen.

Nodes, uitleg blockchain, Byzantine Generals Problem

De nodes zijn het met elkaar eens over dezelfde informatie

Consensus-mechanismen zijn algoritmen waarmee overeenstemming kan worden bereikt, over bepaalde specifieke informatie die binnen het netwerk aanwezig is. Deze data wordt gedeeld door een heleboel computers binnen het netwerk. In veel gevallen wordt de informatie zelfs gedeeld door alle computers die zich binnen het netwerk bevinden. Bij Bitcoin bijvoorbeeld moeten alle computers (nodes) die onderdeel zijn van het bitcoinnetwerk, een akkoord bereiken over de juistheid van de aangeleverde specifieke informatie. Wanneer alle nodes het met elkaar eens zijn dat die informatie ook daadwerkelijk klopt, dan bereiken zij met elkaar consensus. Dat houdt in dat al deze nodes op ieder moment over precies dezelfde informatie beschikken. Wanneer die consensus over specifieke data eenmaal is bereikt, dan is er binnen het netwerk een akkoord over wat er nu verder moet gaan gebeuren.

Blockchain, transactie, blok, Byzantine Generals Problem

Het validatieproces

In het geval van Bitcoin houdt dat in dat er een akkoord is over de geldigheid van een stukje data, die verbonden is aan bitcoin-transacties. Dat stukje data visualiseren we als een blokje binnen een hele lange ketting van andere blokjes, die op hun beurt ook allemaal aan een bitcoin-transactie verbonden zijn. De nodes hebben over al deze blokken in het verleden een akkoord bereikt. Dat wil zeggen: de blokken (transacties) zijn gecontroleerd en goed bevonden (gevalideerd) en vervolgens toegevoegd aan de ketting. Dit valideren van blokken is een ingewikkeld proces en de uitvoering daarvan verloopt bij blockchainnetwerken soms op verschillende manieren. Bitcoin maakt voor dit validatieproces gebruik van het consensus-mechanisme Proof of Work (bewijs van afgeleverd werk). Deze Proof of Work (PoW) is samengesteld uit de specifieke informatie, waar ik het eerder over had (de informatie waarover alle computers het met elkaar eens zijn geworden).

Bitcoin

Voor altijd vastgelegd binnen de blockchain

Alle blokken binnen deze blokketen verwijzen naar het voorgaande blok. Wanneer iemand een transactie van A naar B wil uitvoeren, dan wordt er een nieuw blokje aan het bitcoinnetwerk aangeboden. Wanneer een blok eenmaal is toegevoegd, dan ligt dat blokje voor altijd vast in het netwerk. De informatie binnen dat blokje kan nooit meer worden veranderd. Een blok dat is toegevoegd ligt voor altijd vast. Hierdoor kan iedereen er met honderd procent zekerheid van uitgaan dat de vastgelegde transactie-informatie uit het verleden ook daadwerkelijk klopt.

Bitcoin miner, uitleg blockchain.

Hoog energieverbruik

Het valideren van blokken binnen het bitcoinnetwerk vereist dus een akkoord tussen alle computers over nieuwe informatie die aan het netwerk wordt aangeboden. Op het moment dat je een transactie uitvoert dan gaat het netwerk direct controleren of die transactie aan de voorwaarden voldoet om te worden verzonden en of het dus aan de blokketen mag worden toegevoegd. Bij Proof of Work (de manier waarop overeenstemming kan worden bereikt over de geldigheid van een blokje), worden zware wiskundige berekeningen uitgevoerd. Deze berekeningen worden gedaan door miners, een deelverzameling van nodes. Deze berekeningen zijn zo complex en verbruiken zoveel energie, dat de miners hiervoor gebruik moeten maken van speciale hardware.

Mining hardware

Moeilijkheidsgraad

Om blokken te kunnen genereren (minen) moeten de miners met hun berekeningen op zoek gaan naar een bepaalde input. Deze input bestaat uit een complete lijst van alle in het verleden uitgevoerde transacties. Hierbij worden de miners geconfronteerd met een bepaalde moeilijkheidsgraad. Ongeveer iedere tien minuten wordt er door de miners een nieuw blok gevonden. De moeilijkheidsgraad bepaalt voor een groot deel de snelheid waarmee blokken kunnen worden gevonden. Deze snelheid noemt men de hashrate. Hoe hoger de moeilijkheidsgraad, hoe lastiger het voor de miners is om nieuwe blokken te ontdekken.

Middeleeuwse ridders te paard

Wat wordt er precies bedoeld met het Byzantine Generals Problem?

Consensus-protocollen zijn meestal “Fault Tolerant”. Dat wil zeggen dat het blockchainnetwerk gewoon blijft functioneren indien er fouten optreden binnen het systeem. Bij gedistribueerde computersystemen (p2p) kunnen van tijd tot tijd defecten ontstaan, waarbij bepaalde componenten het begeven en niet meer naar behoren functioneren. In dat geval is niet altijd direct duidelijk om welk soort fouten het precies gaat. Er wordt dan gesproken van “Byzantine fault”. Deze term is afgeleid van het zogenaamde “Byzantine Generals Problem”. Ik zal het Byzantine Generals Problem proberen uit te leggen aan de hand van het volgende voorbeeld:

 

Centraal commando

Stel je een kasteel voor in de middeleeuwen dat wordt omringd door verschillende legers die van plan zijn om het bouwwerk aan te vallen en te veroveren. Elk leger heeft een generaal aangewezen die bij de aanval het voortouw zal nemen. De legers rondom het kasteel zijn verspreid dus de communicatie tussen de bevelhebbers en het organiseren van een centraal commando is erg lastig. Om de aanval toch op een goede manier te kunnen coördineren zullen de generaals een manier moeten vinden om de soldaten toch op enig moment het startsein te geven. Alleen een aanval waarbij de legers exact op hetzelfde moment aanvallen geeft kans op een succesvolle verovering van het kasteel.

Middeleeuwse ridders in gevecht bij kasteel

Input

De generaals weten echter niet precies wie ze kunnen vertrouwen. Wie is er betrouwbaar en wie juist niet? De vraag is dus: hoe kunnen de generaals dan toch een gezamenlijke beslissing nemen? Hier biedt blockchaintechnologie uitkomst! De blockchain maakt gebruik van een gedistribueerd grootboek, dat eigenlijk precies zo functioneert als de gedistribueerde aanval op het kasteel. De “input” in de blockchain moet net zoals de “aanvalsinstructie” bij het kasteel 100% betrouwbaar zijn. Maar hoe kunnen blockchainnetwerken (en de legers) de anderen nu vertrouwen?

Ridders

Hash

Alle deelnemers moeten overeenstemming bereiken over de boodschappen die worden verzonden. Wanneer een deelnemer onbetrouwbaar is of de boodschap klopt niet, dan zal die boodschap worden tegengehouden. Het blockchainnetwerk zal hier vervolgens geen enkel nadeel van ondervinden en gewoon blijven functioneren. Voordat een boodschap wordt uitgezonden aan een blok moet een miner de complexe berekeningen (proof of work) oplossen. Wanneer de miner deze berekening correct uitvoert dan wordt er een zogenaamde “hash” gecreëerd, waardoor de boodschap kan worden gevalideerd. Er is op dat moment overeenstemming (consensus) bereikt en de nodes synchroniseren de boodschap.

Ridder te paard

Betrouwbare boodschappen

Als we deze situatie weer even betrekken op de aanval bij het kasteel, dan betekent dat in feite dat proof of work op de blockchain ervoor zorgt, dat de Byzantine Generals alleen maar betrouwbare boodschappen kunnen overbrengen naar de legers. Hierdoor is een succesvolle en goed gecoördineerde aanval gewaarborgd. Met andere woorden: het blockchainnetwerk blijft in principe gewoon naar behoren functioneren, ongeacht de fouten binnen het digitale ecosysteem.

Blockchain, netwerk, uitleg blockchain.

 

Bronnen:

Blockchain Revolution, Don Tapscott en Alex Tapscott

The Bitcoin Standard, Saifedean Ammous

Blockchain Basics, Daniel Dresher

 

Op de hoogte blijven van de ontwikkelingen op het gebied van de blockchaintechnologie? Meld je dan nu aan voor onze blogpost!

 

Meld je aan voor de blogpost!
Ik ga ermee akkoord dat mijn naam en e-mailadres worden gedeeld met Mailchimp.
Met de blogpost van Uitleg Blockchain blijf je automatisch op de hoogte van de nieuwste ontwikkelingen omtrent de blockchain technologie.
We hebben een hekel aan spam. Uw e-mailadres zal niet worden verkocht of gedeeld met anderen (afgezien van het marketing automation platform dat wij gebruiken voor onze e-maillijst).

Leave a Reply