Blockchain bestaat uit meerdere nodes die een gedistribueerd netwerk vormen, veelal geografisch verspreid. In een open blockchain is er geen enkele toegangsbeperking en is het aantal nodes (deelnemers) over het algemeen heel groot. Deze deelnemers zijn veelal onbekend (anoniem) en zijn daardoor op voorhand niet betrouwbaar. Hoe komen deze nodes dan toch consensus?
De verschillende blockchains kunnen simpelweg verdeeld worden in permissionless en permissioned blockchains. Open blockchains waaraan iedereen vrij kan deelnemen, zoals Bitcoin en Ethereum, horen in de categorie permissionless, terwijl bijvoorbeeld HyperLedger Fabric tot de permissioned categorie behoort. In deze laatste categorie is de toegang tot het systeem beperkt tot geselecteerde deelnemers en kan zelfs het recht de blockchain aan te passen nog verder zijn beperkt.
In een permissionless blockchain is er dus geen enkele toegangsbeperking en is het aantal nodes (deelnemers) over het algemeen heel groot. Deze deelnemers zijn veelal onbekend (anoniem) en zijn daardoor op voorhand niet betrouwbaar. Er is dus een mechanisme nodig dat ervoor zorgt dat kwaadwillenden de inhoud van de blockchain (de transacties) niet zomaar naar hun zin kunnen aanpassen, zonder dat daar een centrale partij voor nodig is die dit bewaakt. Of te wel, dat alle deelnemende nodes het gezamenlijk eens worden over de (juiste) inhoud van de ledger (het grootboek). Een consensus mechanisme beschrijft de wijze waarop de nodes onderling bepalen wat de juiste inhoud van de ledger is. De insteek van een consensus mechanisme is het aanmoedigen/belonen van goed gedrag, waardoor het voor de kwaadwillende niet lonend is ongewenst gedrag te vertonen.
Het meeste bekende consensus mechanisme is Proof of Work. Maar er zijn alternatieven. Laten we deze mechanismen eens langslopen.
Proof of Work
In mijn eerdere blog heb ik uitgelegd hoe het Proof of Work (PoW) mechanisme van Bitcoin werkt. PoW is het oudste consensus mechanisme en draait om miners (nodes met een specifieke rol). Deze miners doen onderling een wedstrijd wie als eerste een zeer lastige cryptografische puzzel kan oplossen. De miner die deze opdracht wint, heeft het recht het block met transacties toe te voegen aan de blockchain, en ontvangt als beloning 12.5 nieuwe Bitcoin en de fees behorende bij de transacties.
De moeilijkheidsgraad van de puzzel wordt regelmatig aangepast aan de hoeveel beschikbare rekencapaciteit in het gehele netwerk, om ervoor te zorgen dat gemiddeld elke 10 minuten een block wordt toegevoegd. In de praktijk betekent dit dat de miner die de oplossing vindt, zeer veel rekencapaciteit (en dus energie) heeft moeten aanwenden om de oplossing te vinden (die vervolgens door alle andere nodes heel eenvoudig kan worden gecontroleerd). Om vals te kunnen spelen dient een miner een reeks puzzels als eerste op te lossen, wat tenminste 51 procent van de totale rekencapaciteit vereist. Gezien de omvang van het netwerk (en dus de benodigde rekencapaciteit) is dit vrijwel onmogelijk. De kosten van hardware en benodigde energie zijn extreem hoog, waardoor het voor miners aantrekkelijker is eerlijk gedrag te vertonen.
Het grootste nadeel van PoW is het enorme energieverbruik. Naar schatting is per transactie op dit moment gemiddeld 351KWh nodig (het energiegebruik van een gezinshuishouden per maand). Ander nadeel is dat er vaak twee kampen ontstaan met verschillende belangen. Enerzijds de miners met een financieel belang wat ervoor zorgt dat ze er veelal voor hun eigen belang inzitten en anderzijds de deelnemers en developers die een gedecentraliseerd platform nastreven dat snel en tegen lage kosten veilig transacties kan verwerken. Voorstellen ter verbetering van het platformen leiden vaak tot discussies tussen deze twee groepen, waarbij elk redeneert vanuit z’n eigen belang.
Bekende blockchains die op dit moment werken volgens dit consensus mechanisme zijn Bitcoin en Ethereum.
Proof of Stake
Een alternatief consensus mechanisme is Proof of Stake (PoS). In plaats van de relatieve rekenkracht die bepaald wie het volgende blok mag toevoegen, bepaalt de inzet (van coins) welke node de meeste kans maakt het volgende blok te mogen toevoegen. Oftewel, er wordt geen rekenkracht geïnvesteerd door de miner, maar coins door een validator. Dit betekent ook dat er geen coins ge-mine-d/gecreëerd hoeven te worden bij elk nieuw block, ter compensatie van de verbruikte energie. De validator ontvangt wel de transaction fees. Alle coins zijn vanaf de eerste dag aanwezig. De hoeveelheid coins die ingezet wordt, bepaalt de kans om het volgende blok te mogen toevoegen. Dit block wordt vervolgens gecontroleerd door andere nodes in het systeem. Blijkt een toegevoegd block niet te kloppen, dan verliest de frauduleuze node zijn inzet (stake). Vervolgens wordt het block door elke node ‘afgetekend’, totdat een vastgelegde meerderheid is bereikt. Om vals te kunnen spelen is het bezit van meer dan 50 procent van de roulerende coins nodig, wat enerzijds initieel prijsopdrijvend werkt en anderzijds een enorme investering vergt, wat niet opweegt tegen het verkregen voordeel.
Belangrijk voordeel van PoS ten opzichte van PoW is het beperkte energieverbruik. Er hoeft geen lastige puzzel te worden opgelost, waardoor het energieverbruik verwaarloosbaar is ten opzichte vanPoW.
Grootste uitdaging bij PoS is het zogenaamde ‘nothing at stake‘-probleem, waarbij een validator meerdere blocken creëert en de transaction fees in ontvangst neemt, en de nodes deze blocken aftekenen. Zolang er geen penalties in het systeem zijn opgenomen, worden nodes niet gestraft voor dit gedrag. Veel PoS-systemen werken daardoor met penalties op het creëeren van blocken aan de foutieve chain.
Een veel gehoord nadeel van PoS is dat het vasthouden van coins wordt beloond. Dit komt het daadwerkelijk gebruik van het netwerk niet ten goede. De rijker worden steeds rijker, wat tot een concentratie van bezit zorgt.
Bekende blockchains die gebruikmaken van PoS zijn Peercoin en NXT. Ethereum gaat in een volgende release ‘Serenity’ over van PoW naar PoS (‘Casper’ consensus algoritm).
Byzantine Fault Tolerance
Het consensusprobleem in gedistribueerde computersystemen wordt vaak vergelijken met het Byzantine Generals problem. Dit beschrijft een afstemmingsprobleem waarin een groep generaals die elk een deel van het Byzantijnse leger aansturen, een stad omcirkelen. Simpelweg dienen de generaals slechts gezamenlijk tot overeenstemming te komen aan te vallen of terug te trekken. Wanneer slechts een deel aanvalt, ontstaat chaos met een slechtere uitkomst dan een gezamenlijke aanval of terugtrekking.
Bovengenoemde consensus algoritmes zijn tot op zeker hoogte (51 procent rekenkracht/coins) bestand tegen dit probleem, al kunnen tijdelijk forks ontstaan. Een aantal blockchains kiest voor een model dat gebaseerd is op dit probleem, vooral omdat het een fors hogere responsetijd kan bieden. Een coin is in dit model niet nodig om consensus te bereiken, al wordt het wel vaak toegepast als anti-spam maatregel (en DDoS attacks).
Practical Byzantine Fault Tolerance
De blockchain HyperLedger maakt gebruik van het consensus mechanisme Practical Byzantine Fault Tolerance (PBFT), wat de eerste praktische oplossing is voor het Byzantine Generals probleem. In deze oplossing dienen de nodes vooraf bekend en toegelaten te zijn. Een andere beperking is de beperkte schaalbaarheid tot zo’n twintig nodes. Met meer nodes wordt er een te grote overhead gecreëerd door het versturen van alle berichten tussen de nodes. Dit maakt deze oplossing geschikt voor permissioned blockchains, maar niet voor permissionless blockchains.
Federated Byzantine Fault Tolerance
Om toch een schaalbaar, permissionless blockchain te kunnen opzetten op basis van Byzantine Fault Tolerance, hebben zowel Ripple als Stellar gekozen voor een Federated Byzantine Fault Tolerance mechanisme. Dit zijn open netwerken, zonder centraal gezag of gatekeeper. Elke node bepaalt zelf welke andere nodes het vertrouwt (quorom slices). Voor een gedetailleerde beschrijving kijk hier.
Delegated Byzantine Fault Tolerance
De blockchain Neo heeft Delegated Byzantine Fault Tolerance (dBFT) geimplementeerd omdat dit beter schaalbaar en hogere performance levert dan andere mechanismen. In dBFT wordt gewerkt met consensus nodes (of Bookkeepers) die in twee gedaanten voorkomen, te weten Speaker en Delegates. Neo bezitters kunnen onderling transacties uitvoeren maar hoeven niet deel te nemen in het block validatie proces. Dit doen de delegates en de speaker.
Aan delegates worden eisen gesteld zoals internetsnelheid, rekenkracht en een minimum hoeveelheid GAS. Neo bezitters kiezen hun vertegenwoordiger, of te wel delegate en brengen de transactie die doorgevoerd moeten worden in.
Wanneer een block toegevoegd moet worden aan de chain, wordt een speaker willekeurig gekozen uit de delegates. De speaker bepaalt de hash van het block en biedt dit aan aan de delegates. Wanneer 66 procent van de delegates akkoord zijn met de hash, wordt het block toegevoegd en definitief gemaakt. Statistisch gezien ontstaat hierdoor een betrouwbaar systeem.
Groot voordeel van dBFT is dat consensus ontstaat direct bij het toevoegen van het block en het block definitief wordt gemaakt. Het is onmogelijk dat er forks ontstaan zoals dat in PoW (door latency in het netwerk) regelmatig voorkomt. Een transactie opgenomen in een block is daarmee definitief.
Conclusie
Er worden verschillende consensus mechanismen gebruikt in de diverse blockchain platformen. Proof of Work is het oudste mechanisme dat door Bitcoin wordt gebruikt. Elk mechanisme heeft zijn eigen voor- en nadelen en ondervangt de risicos die komen kijken in een gedistribueerd systeem op het eigen manier. PoW heeft zich met Bitcoin de afgelopen negen jaar in elk geval bewezen. Veel van de andere mechanismen bestaan veel minder lang. De perfecte oplossing (silver bullet) bestaat niet en de toepassing en context bepalen welk mechanisme het meest geschikt is.