Wat is het Byzantine Fault Tolerance (BFT)?

Ben je wel eens de leider van een grote groep geweest? Dan begrijp je misschien wel hoe lastig het kan zijn om een beslissing te maken waar de hele groep achter staat. Echter, dit is ook hoe het bij de blockchain gaat. De deelnemers van de blockchain zullen het namelijk met elkaar eens moeten worden over wat er zal gaan gebeuren.

Om dit in goede banen te leiden, is er het Byzantine Fault Tolerance (BFT). Dit is eigenlijk de basis voor de blockchain, en heeft ook geleid tot de verschillende consensus algoritmes die er op dit moment zijn. We zullen je in dit artikel meer uitleggen over het Byzantine Fault Tolerance.

Wat is het Byzantine Fault Tolerance (BFT)?

Om volledig te begrijpen wat het Byzantine Fault Tolerance (BFT) algoritme is, moeten we beginnen bij het begin. En dat is de blockchain. De blockchain is een gedecentraliseerd systeem waarop verschillende deelnemers bepaalde acties kunnen uitvoeren. Denk bijvoorbeeld aan het verzenden van een transactie.

Zodra een transactie naar het netwerk is verzonden, zorgen de nodes (deelnemende machines in het netwerk) ervoor dat deze wordt geverifieerd, gevalideerd en uiteindelijk in een soort database wordt opgeslagen. Alle nodes van het netwerk hebben een kopie van deze database op hun machine staan.

Het is belangrijk om te weten dat het netwerk consensus moet bereiken. Deze term krijgt zijn volle betekenis wanneer meer dan de helft van de deelnemers een besluit neemt tussen verschillende acties en tot een overeenkomst komt. Vaak is het in het geval van blockchain zo dat minimaal 51% van het netwerk het eens moet zijn over een bepaald besluit.

Maar waarom is het bereiken van consensus zo belangrijk? Je wilt natuurlijk niet dat iemand bepaalde handelingen uitvoert die niet uitgevoerd zouden mogen worden. Denk bijvoorbeeld aan bugs, maar ook aan aanvallen op het netwerk, zoals de 51% attack.

De grondleggers van blockchain hebben dit probleem opgelost door middel van de oplossing die ook in het Byzantijnse Rijk werd gebruikt.

Het probleem van de Byzantijnse generaals

In het Byzantijnse Rijk hadden de generaals van het leger een probleem. En dat was dat het Rijk veel te groot was. Om een beslissing te maken, moesten eerst alle generaals afgegaan worden voor een overleg. Je kunt jezelf voorstellen dat, door de grootte van het Byzantijnse Rijk, dit een erg tijdrovende klus was.

Twee of meer generaals moesten het eens worden over het moment om een vijand aan te vallen. Ze wisten hierbij ook dat één of meer van hen een verrader zou kunnen zijn. En dat zou natuurlijk niet goed aflopen. Hier moest dus een oplossing voor gevonden worden.

Het paradigma dat in dit beroemde probleem naar voren komt, is de totstandbrenging van een configuratie van commandant en luitenant, waardoor een consensus kan worden bereikt. Dit bleek de beste oplossing voor alle betrokkenen.

Hoe wordt het BFT toegepast bij blockchains?

Terecht dat je jezelf afvraagt wat het verhaal over het Byzantijnse leger te maken heeft met blockchain. Dat heeft het echter wel.

Zoals gezegd, is het belangrijk dat de nodes in het netwerk van de blockchain elkaar kunnen vertrouwen. Wanneer een node een transactie goedkeurt, moet dit ook daadwerkelijk een valide transactie zijn. Als dit niet het geval is, zou de blockchain nooit kunnen worden.

Op het moment dat nodes transacties hebben gevalideerd en een blok klaar hebben, zal het hele netwerk dit blok controleren. Is meer dan 51% van het netwerk het eens dat alles klopt? Dan wordt het blok, als dit het eerste is, toegevoegd aan de blockchain.

De manier waarop dit gebeurt, is echter voor iedere blockchain anders. De overeenkomst is altijd dat er consensus bereikt moet worden, waarbij het Byzantine Fault Tolerance als basis wordt gebruikt. Hoe dit gebeurt, is afgesproken door middel van het consensus algoritme.

Wat is het consensus algoritme?

Het consensus algoritme is een algoritme dat bepaald hoe nodes de transacties in het netwerk van de blockchain moeten goedkeuren. Iedere blockchain heeft een ander consensus algoritme. Denk bijvoorbeeld aan Proof of Work (PoW), wat door de blockchain van Bitcoin wordt gebruikt. Maar ook Proof of Stake (PoS) wordt steeds vaker gebruikt.

Proof of Work (PoW)

Bij Proof of Work draait het om rekenkracht. De node die de transacties als snelst heeft verwerkt, mag het blok toevoegen aan de blockchain. Natuurlijk alleen wanneer de rest van het netwerk het blok goedkeurt.

Dit betekent dat je als node over krachtige hardware moet beschikken. Doordat de hardware steeds beter wordt, zal er dus continu opnieuw geïnvesteerd moeten worden. Daarnaast zorgt Proof of Work ook nog eens voor een hoog energieverbruik. Dit heeft Bitcoin al veel kritiek opgeleverd, en is één van de redenen dat Ethereum op dit moment overgaat naar Proof of Stake.

Proof of Stake (PoS)

Het een-na-bekendste consensus algoritme is Proof of Stake. Hierbij draait het niet om rekenkracht, maar om hoeveel je kunt inzetten.

Wanneer je transacties wilt valideren, zul je een bepaald geldbedrag in de vorm van cryptomunten moeten inzetten. Dit noemen we de stake. Deze munten zullen worden vastgehouden door de blockchain, en je kunt hier dus niet bijkomen zolang je actief bent als node.

Op het moment dat een node zijn werk niet goed doet, en bijvoorbeeld malafide transacties goedkeurt, kan hij (een deel van) zijn stake verliezen. Dit moet dus een stimulans zijn om het werk goed te doen. Besluit de node om zijn werk als node te beïndigen, dan krijgt hij zijn stake weer terug.

51% attack

Een begrip dat je in dit artikel al een aantal keer bent tegengekomen is de 51% attack. Om het Byzantine Fault Tolerance en het consensus algoritme beter te begrijpen, is het goed om ook te weten wat de 51% attack is.

Zoals gezegd, moet minimaal 51% van het netwerk het over een besluit eens zijn. Dit is echter alleen veilig wanneer er genoeg nodes aan het netwerk deelnemen. Is dit niet het geval, dan kan iemand makkelijk een 51% attack uitvoeren.

Bij zo‘n aanval heeft iemand meer dan 51% van het netwerk in handen. Dit zorgt ervoor dat de aanvaller transacties kan goedkeuren die niet goedgekeurd zouden mogen worden.

De aanvaller is in dit geval eigenlijk altijd uit op vernieling van de blockchain. Stel dat dit bij Bitcoin gebeurt, zou de waarde hiervan direct instorten. Er is dus vrijwel nooit financieel gewin mogelijk bij een 51% aanval wanneer het gaat om het verkrijgen van cryptomunten.

Conclusie

Het Byzantine Fault Tolerance is een systeem dat de blockchain in staat stelt om elkaar te controleren op fouten. Dit probleem is vrij lastig op te lossen. Wanneer het algoritme namelijk niet werkt, kan iemand foutieve transacties naar de blockchain verzenden of aanpassingen doen die niet toegestaan zouden mogen worden.

Zonder het algoritme kan een node verschillende willekeurige gegevens genereren door zich voor te doen als een eerlijke speler. Gelukkig maken blockchains gebruik van het Byzantine Fault Tolerance door een bepaald type consensus algoritme te gebruiken. Proof of Work en Proof of Stake zijn de bekendste algoritmes.

Echter is het niet geheel onwerkelijk dat er geen problemen meer ontstaan. Zo is het ook mogelijk om een 51% attack uit te voeren om het Byzantine Fault Tolerance te omzeilen. Hierbij heeft een node met kwaadaardige bedoelingen meer dan 51% van het netwerk in handen.