Blockchain consensus mechanismen

Door Victor van der Hulst In Blockchain

In mijn vorige blogs heb ik geschreven over blockchain in het algemeen, smart contracts en hoe deze zijn te maken. Waar ik tot nu toe weinig aandacht aan heb geschonken, is hoe blockchains zonder centrale partij überhaupt tot overeenstemming (consensus) kunnen komen.

Waarom is consensus belangrijk?

Zoals in eerdere blogs beschreven bestaat een blockchain systeem uit meerdere nodes die een gedistribueerd netwerk vormen, veelal geografisch verspreid. 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 (bijv. een consortium) 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.

Een gedistribueerd netwerk heeft te maken met sybil attacks: een aanval waarin de aanvaller een groot aantal identiteiten (nodes/deelnemers) creëert om daarmee een dispropotionele invloed op het netwerk te verkrijgen. Consensus mechanismen moeten zich hiertegen wapenen. Het meeste bekende consensus mechanisme is Proof of Work. Maar er zijn alternatieven. Laten we deze mechanismen eens langslopen.

image001@4x

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% 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. Sybil attacks hebben weinig invloed op PoW, doordat elke sybil rekenkracht vereist, wat de kosten enorm doet toenemen.

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 2 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 2 groepen, waarbij elk redeneert vanuit z’n eigen belang.

Ook zorgt de opkomst van mining pools (samenwerkingsverband van miners die hun rekencapaciteit gezamenlijk inzetten) voor concentratie van rekencapaciteit, en daarmee het risico op het controleren van 51% van de totale rekencapaciteit. De 3 grootste pools beschikken samen over deze benodigde hoeveelheid.

De opkomst Quantum computing is voor PoW een risico. Quantum computers zijn extreem veel sneller in het uitrekenen van deze puzzels. Wanneer de eerste operationele quantum computers nog beperkt voorhanden zijn, kan daardoor een 51% voordeel worden gehaald. 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 dag 1 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% 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 t.o.v. PoW.

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. Doordat elke sybil het bezit van een hoeveelheid coins vereist, is de bescherming tegen Sybil attacks vergelijkbaar met PoW. 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).

Leased en delegated PoS

Omdat in PoS bezitters met weinig coins een zeer kleine kans maken een block te kunnen toevoegen, draaien ze vaak geen volledige node. Wat ertoe leidt dat het netwerk door een beperkt aantal nodes wordt onderhouden: de grote spelers. Dit komt de veiligheid van het netwerk niet ten goede. Leased PoS bieden hier oplossingen voor, door balances te leasen aan staking nodes, die daardoor een grotere kans maken een block te kunnen toevoegen. De blockchain Waves maakt hier gebruik van.

In delegated PoS kiezen de bezitters met hun balance een aantal nodes (delegates) die de mogelijkheid krijgen een block toe te voegen. De blockchain BitShares werkt met dit mechanisme.

Proof of Importance

Een alternatief op PoS is Proof of Importance, waarbij het niet om de balance gaat, maar dat de ‘productive network activity‘ van de node bepalend is (om met een stake een block te mogen toevoegen). De bekende blockchain NEM werkt op deze manier en beloont gebruikers voor de transactions (aantal en waarde) die zijn uitgevoerd.

Proof of Activity

In het Bitcoin PoW model is het aantal te minen bitcoins eindig. Rond het jaar 2140 stopt de reward bij het minen van een nieuw block en ontvangt de miner alleen de transaction fees. Er wordt gespeculeerd dat dit grote security issues introduceert, door het ‘tragedy of the commons‘ probleem (waarin deelnemers worden beloond voor handelen in eigen belang en het gezamenlijke systeem om zeep helpen). Alternatief hiervoor is Proof of Activity, wat een combinatie is van PoW en PoS. Elk nieuw block ontstaat door PoW, of te wel miners die een cryptografische puzzel oplossen, maar het gevonden block bevat nog geen transacties. Vervolgens wisselt het systeem naar PoS en wordt een willekeurige groep validators aangewezen het block af te tekenen. De balance bepaalt de kans te worden geselecteerd als validator. Wanneer er te weinig validators beschikbaar zijn, wordt het volgende ge-mine-de block geselecteerd en een nieuwe groep validators gekozen. Net zo lang totdat het block door een meerderheid is afgetekend. De transaction fees worden gedeeld tussen de miner en de validators. Dit systeem wordt momenteel gebruikt door Decred.

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% 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). Dit model is wel vatbaar voor sybil 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 20 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). Een transactie wordt doorgevoerd via federated voting (vote, accept en confirm). 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 2 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% 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. Minder gebruikte mechanismes als Proof of Capacity en Proof of Elapsed time laat ik verder buiten beschouwing.

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 9 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.

Bronnen:

Meer informatie

victor-van-der-hulst

Victor van der Hulst

Managing Consultant

+31 6 22 98 68 76 Stuur Victor een e-mail

Reacties

Er zijn nog geen reacties op dit bericht.

Plaats een reactie

Dit veld is verplicht.

Vul een geldig e-mailadres in.

Dit veld is verplicht.