Het Byzantijns generaal probleem heeft zijn naam te danken aan het Byzantijnse Rijk, een tweeduizend jaar oud rijk dat was gelegen in het Middellandse zeegebied. Maar wat houdt dit probleem in? En wat heeft het met Bitcoin te maken?

Wat is het Byzantijns generaal probleem?

Wat is het Byzantijns generaal problem?

Het Byzantijns generaal probleem is een eeuwenoud probleem dat gebaseerd is op de vraag:

Hoe weet je 100% zeker dat verschillende entiteiten die zich op verschillende fysieke locaties bevinden, het volledig met elkaar eens zijn over een bepaalde handeling?

Als je dit probleem oplost, kunnen verschillende entiteiten elkaar volledig vertrouwen zonder tussenkomst van een derde partij.

Het volgende voorbeeld legt het probleem goed uit:

Stel, je bent een generaal in het Byzantijnse leger, en je staat met je leger klaar om een stad aan te vallen vanuit het Noorden. In de overige windrichtingen staan, op enkele kilometers van dezelfde stad, drie collega generaals uit het Byzantijnse leger klaar om de stad vanuit het Westen, Zuiden en Oosten aan te vallen.

Je collega generaals en jij kunnen de stad alleen veroveren door alle vier tegelijkertijd aan te vallen. Je besluit dat de aanval moet plaatsvinden bij zonsopgang en wil dit bericht doorgeven aan de andere generaals. Vervolgens wil je dat de andere generaals jou een bevestiging sturen dat jouw bericht in goede orde is ontvangen.

Echter, over moderne communicatiemiddelen beschik je niet, met lichtsignalen val je te veel op, en boodschappers lopen het risico om gedood of omgekocht te worden. Bovendien, zelfs je collega generaals kunnen corrupt zijn en expres een foutief bericht naar jou sturen met hun boodschappers. Ze kunnen bijvoorbeeld zeggen dat ze gaan aanvallen, terwijl ze dit niet gaan doen. Dus hoe ga je jouw plan communiceren aan de andere generaals, zonder dat er twijfels bestaan over dat het plan uitgevoerd gaat worden?

Probleemschets van Byzantijns generaal probleem

Wat is Byzantijns fouttolerantie (BFT)?

Een systeem is Byzantijns fouttolerant (BFT) als het bestand is tegen foutieve informatie die voortkomt uit het Byzantijns generaal probleem. Oftewel, een BFT-systeem zal blijven functioneren, ondanks dat sommige computers (Byzantijnse generaals) in het netwerk geen of foutieve informatie communiceren.

Pogingen om een systeem Byzantijns fouttolerant te maken, komen in de cryptowereld tot uiting in consensus mechanismen. Zo gebruikt Bitcoin proof of work, Ethereum 2.0 proof of stake en Hedera Hashgraph het Gossip Protocol.

Lost Bitcoin het Byzantijns generaal probleem op?

Lost Bitcoin het Byzantijns generaal probleem op?

Er zijn mensen die beweren dat Bitcoin het Byzantijns generaal probleem oplost, terwijl anderen dat ontkennen. Men is verdeeld.

Waarom lost Bitcoin het Byzantijns generaal probleem op?

Voor deze uitleg verwijzen we naar het voorbeeld in het vorige kopje.

De vier legers zijn analoog aan vier computers (Bitcoin nodes) in een netwerk (Bitcoin), die elk worden bestuurd door een kopie van een bepaald softwareprogramma (de generaals, oftewel Bitcoin software). De softwareprogramma-kopieën houden op een wiskundige manier een logboek bij van alle gebeurtenissen in chronologische volgorde.

De generaals zien allemaal exact dezelfde gebeurtenissen voorbijkomen in hetzelfde logboek. Op het moment dat één generaal (kopie van het softwareprogramma) een wijziging doorvoert die wordt gevalideerd door de wiskunde achter het programma (één van de generaals geeft aan om bij zonsopgang aan te vallen), zullen de logboeken van de andere generaals direct ge-update worden (de andere generaals zien precies wat hun collega-generaal gaat doen). Het resultaat: een logboek dat geografisch verspreid is en altijd in overeenstemming met elkaar is.

Door dit, op wiskunde-gebaseerde, netwerk (Bitcoin) wereldwijd uit te rollen, kunnen mensen elkaar volledig vertrouwen. Zelfs als ze duizenden kilometers uit elkaar wonen, en elkaar niet kennen. De Byzantijnse generaals kunnen elkaar dus vertrouwen zonder te werken met derde partijen, zoals boodschappers.

Video: Byzantijns generaal probleem en de rol van Bitcoin

In de video hieronder wordt het Byzantijns generaal probleem uitgebeeld, maar ook Bitcoin’s rol binnen deze context komt goed naar voren.

Waarom lost Bitcoin het Byzantijns generaal probleem niet op?

De computers in het Bitcoin netwerk kunnen er niet 100% zeker van zijn dat alle gebeurtenissen in de Bitcoin blockchain waar zijn en genoteerd zijn in de exacte volgorde waarin ze hebben plaatsgevonden. Dit is nodig om het Byzantijns generaal probleem op te lossen.

Bitcoin transacties staan niet 100% in de juiste volgorde

Bitcoin’s blockchain koppelt blokken van informatie (het ‘logboek’) aan elkaar door middel van computers die continu proberen de oplossing van een wiskundig probleem te raden. Dit is inherent aan proof of work: het consensus mechanisme waarmee Bitcoin werkt.

Deze computers doen grofweg elke tien minuten een wedstrijd wie als eerst de oplossing geraden heeft. De winnaar mag het volgende blok aan de blockchain toevoegen. In dit blok bevinden zich alle transacties die de winnaar heeft uitgekozen uit de mempool. De mempool is een bak waarin de meest recente Bitcoin transacties uit de hele wereld terechtkomen.

Hoewel verschillende computers dezelfde transactie uit de mempool mogen halen, kiest iedere computer vrijwel altijd een andere set aan transacties uit om in zijn blok te stoppen. De computers willen het liefst de transacties in hun blok met de hoogste transactiekosten, zodat ze meer verdienen.

Slechts de transacties die door de winnende computer zijn gekozen, worden in de blockchain opgenomen. Daarentegen worden transacties die door de andere computers zijn gekozen weer teruggegooid in de mempool. Deze transacties worden teruggegooid totdat ze worden opgenomen in het blok van de winnaar. Daardoor kunnen transacties die eerder ontstaan zijn, op een later moment worden opgenomen in de Bitcoin blockchain.

Daarnaast kan een soft fork ervoor zorgen dat transacties niet in de juiste volgorde komen te staan. Een soft fork gebeurt als twee computers tegelijkertijd de oplossing van het wiskundige probleem raden. Vervolgens zal een deel van de computers in het netwerk zien dat computer A de winnaar is, terwijl een andere deel beweert dat computer B de winnaar is. Dat komt door de ongelijke internetsnelheden waaraan de verschillende computers onderhevig zijn. Het resultaat is een blockchain waarin twee blokken ‘het volgende blok’ zijn. Na tien minuten zal één van de twee blokken verliezen, waardoor de bijbehorende transacties weer in de mempool belanden.

Dus in Bitcoin is er geen volledige zekerheid over de volgorde waarin transacties hebben plaatsgevonden.

Bitcoin transacties hoeven niet per se waar te zijn

Bitcoin transacties kunnen gemanipuleerd worden door een 51%-aanval. Bij een 51%-aanval communiceert de winnende computer foutieve informatie aan de andere computers. Deze kwaadwillende computer laat een deel van de computers in het netwerk zijn waarheid geloven, terwijl dit niet de daadwerkelijke waarheid is.

Als de kwaadwillende computer zijn waarheid lang genoeg weet vol te houden, gaan de andere computers vanzelf zijn waarheid geloven. Deze waarheid zou in theorie een blockchain kunnen zijn, waarin de kwaadwillende computer dezelfde bitcoin twee keer heeft uitgegeven.

Echter, de kans op zo een aanval is klein, aangezien het enorm duur is om meer dan de helft van de rekenkracht van het Bitcoin netwerk te betalen.

Is er een oplossing voor het Byzantijns generaal probleem?

Is er een oplossing voor het Byzantijns generaal probleem?

Ja, het Gossip Protocol lijkt de oplossing te zijn. Dit protocol wordt gebruikt door Hedera Hashgraph.

Het Gossip Protocol is geen blockchain. In plaats van informatie op te slaan in een keten van blokken, laat het informatie van de ene willekeurige computer naar de andere willekeurige computer gaan.

Globaal werkt het als volgt: computer A vertelt zijn meest recente informatie aan computer B, computer B vertelt zijn meest recente informatie aan computer A, computer A doet hetzelfde bij computer C, computer B doet hetzelfde bij computer D, computer C doet hetzelfde bij computer E, enzovoorts. Kortom: het Gossip Protocol laat computers met elkaar roddelen (to gossip). Bovendien wordt met iedere roddel het tijdstip en de bron van de roddel genoteerd.

Op deze manier wordt het onmogelijk om het waarheidsgehalte en de volgorde van gebeurtenissen te wijzigen. Simpelweg vanwege de reden dat alle computers continu op de hoogte worden gehouden van de meest recente informatie door gigantisch veel verschillende bronnen.