Wat is een consensusalgoritme?
HomeArticles

Wat is een consensusalgoritme?

Beginner
3mo ago
7m

Inhoud


Inleiding

Een consensusalgoritme is een mechanisme dat de coördinatie regelt tussen gebruikers en machines in een gedistribueerde setting. Het moet ervoor zorgen dat alle deelnemers het eens kunnen zijn over de staat van het systeem, zelfs als sommige deelnemers zijn uitgevallen. Met andere woorden, het systeem moet fouttolerant zijn (zie ook Byzantijnse fouttolerantie).

In een gecentraliseerde setup wordt een systeem door één enkele entiteit gecontroleerd. In de meeste gevallen kan deze entiteit naar eigen wens bepaalde aanpassingen doorvoeren: er is geen complex systeem voor het bereiken van consensus tussen alle beheerders.

Een gedecentraliseerde setup werkt echter anders. Stel dat we werken met een gedistribueerde database: hoe kunnen we het dan eens worden over welke gegevens we toevoegen en welke niet?

Het oplossen van deze uitdaging, in een omgeving waarin vreemden elkaar niet vertrouwen, was misschien wel de meest cruciale doorbraak in de ontwikkeling van blockchains. In dit artikel gaan we dieper in op hoe consensusalgoritmes de basis vormen voor het functioneren van cryptocurrencies en gedistribueerde grootboeken.


Consensusalgoritmes en cryptocurrency

Bij cryptocurrencies worden de tegoeden van gebruikers opgeslagen in een database, de blockchain. Het is belangrijk dat iedereen (of, beter gezegd, iedere node op het netwerk) een identieke kopie van de database heeft. Anders zou de database snel vol tegenstrijdige informatie zitten, waardoor het hele doel van het cryptocurrency-netwerk teniet wordt ondermijnd.

Public-key-cryptografie zorgt ervoor dat gebruikers niet elkaars geld kunnen uitgeven. Maar dan nog moeten netwerkdeelnemers kunnen vertrouwen op de nauwkeurigheid en staat van het systeem, zodat gecontroleerd kan worden of bepaalde tegoeden al zijn uitgegeven.

Satoshi Nakamoto, de bedenker van Bitcoin, stelde een Proof of Work-systeem voor om coördinatie tussen gebruikers mogelijk te maken. We zullen dadelijk dieper ingaan op hoe PoW-systemen werken, maar eerst bespreken we een aantal gedeelde eigenschappen van bestaande consensusalgoritmes.

Ten eerste vereisen we dat gebruikers die blocks willen toevoegen (zogenaamde validators) een stake inzetten. Een stake is een bepaalde vorm van waarde die een validator moet inzetten, waardoor die ertoe wordt aangezet om eerlijk te handelen. Valsspelen leidt namelijk tot het verlies van de stake. Voorbeelden hiervan zijn rekenkracht, cryptocurrency of zelfs reputatie. 

Maar waarom zou iemand daarvoor eigen middelen willen inzet? Wel, er staat een beloning tegenover. Deze beloning wordt normaliter uitgekeerd in de cryptocurrency van het protocol en bestaat uit transactiekosten van andere gebruikers, nieuw gegenereerde eenheden van de cryptocurrency of beide.

Tot slot hebben we transparantie nodig. Het moet mogelijk zijn om te detecteren of iemand valsspeelt. Idealiter is het kostbaar om nieuwe blocks te produceren, maar goedkoop om ze te valideren. Dit zorgt ervoor dat validators gecontroleerd kunnen worden door gewone gebruikers.


Soorten consensusalgoritmes

Proof of Work (PoW)

Proof of Work (PoW) is de grondlegger van de blockchain-consensusalgoritmes. PoW werd voor het eerst geïmplementeerd in Bitcoin, maar het concept bestond al enige tijd. In Proof of Work hashen de validators (de miners) de gegevens die ze aan de blockchain willen toevoegen tot er een specifieke hash is gegenereerd.

Een hash is een schijnbaar willekeurige reeks van letters en cijfers die wordt gegenereerd wanneer gegevens door een bepaalde hashfunctie worden gehaald. Haal je dezelfde gegevens door dezelfde hashfunctie, dan kom je altijd uit op hetzelfde resultaat. Maar als je ook maar één klein detail van de gegevens verandert, zal de gegenereerde hash compleet anders zijn.

Op basis van de gegenereerde hash is het onmogelijk om te bepalen welke gegevens er door de hashfunctie zijn gehaald. Deze functies zijn daarom ideaal om te bewijzen dat je op een bepaald tijdstip op de hoogte was van bepaalde informatie. Je kunt iemand een hash van deze gegevens geven en wanneer de informatie later bekend wordt gemaakt, kan die persoon simpelweg de gegevens nog eens door de hashfunctie halen om te controleren of het resultaat hetzelfde blijft.

In Proof of Work beschrijft het protocol aan welke voorwaarden een block moet voldoen om geldig te zijn. Het kan bijvoorbeeld eisen dat alleen een block waarvan de hash met 00 begint, geldig is. De enige manier waarop de miner een dergelijke hash kan genereren, is door het forceren van inputs. De gegevens kunnen steeds iets worden aangepast om op een andere hash uit te komen, tot er uiteindelijk een hash wordt gevonden die met 00 begint. 

Bij de grote blockchains wordt de lat daarvoor ontzettend hoog gelegd. Om met andere miners te concurreren, heb je een warenhuis vol speciale hash-hardware (zogenaamde ASIC's) nodig om kans te maken op het produceren van een geldig block.

Je stake bij het minen is de investering die je in deze machines hebt gedaan en het geld dat je kwijt bent aan elektriciteit om de hardware te laten draaien. ASIC's zijn slechts voor één doel geschikt en kunnen afgezien van het minen van cryptocurrency eigenlijk nergens voor worden gebruikt. De enige manier waarop je je investering kunt terugverdienen is met minen, wat veel geld oplevert als je met succes een nieuw block aan de blockchain toevoegt.

Voor het netwerk is het eenvoudig om de geldigheid van het block dat je hebt geproduceerd te controleren. Zelfs als je een miljoen verschillende combinaties hebt uitgeprobeerd om tot een bepaalde hash te komen, hoeven de andere netwerkdeelnemers dit maar één keer te doen met dezelfde input. Levert dit een geldige hash op, dan wordt het block toegevoegd aan de blockchain en ontvang je de beloning. Zo niet, dan wordt het block verworpen en heb je voor niets tijd en elektriciteit verspild.


Proof of Stake (PoS)

Proof of Stake (PoS) werd in de begindagen van Bitcoin voorgesteld als alternatief voor Proof of Work. In een PoS-systeem is er geen sprake van miners, gespecialiseerde hardware of enorm elektriciteitsverbruik. Het enige dat je nodig hebt, is een gewone PC.

Nou ja, bijna alles: je moet ook 'skin in the game' hebben. In PoS maak je geen gebruik van externe middelen (zoals elektriciteit of bepaalde hardware), maar juist van de cryptocurrency van het systeem zelf. Ieder protocol hanteert andere regels, maar over het algemeen geldt dat je een minimale hoeveelheid cryptocurrency moet bezitten om mee te kunnen doen met staking.

Vervolgens vergrendel je je tegoed in een wallet, waarna je er zolang je blijft staken geen toegang meer tot hebt. Met de andere validators spreek je af welke transacties er in het volgende block worden opgenomen. In zekere zin gok je op het block dat geselecteerd gaat worden, waarna het protocol er een kiest.

Als jouw block wordt geselecteerd, ontvang je een deel van de transactiekosten afhankelijk van de grootte van je stake. Hoe groter je stake is, hoe groter de beloning. Probeer je het systeem echter te manipuleren door ongeldige transacties voor te stellen, dan kun je je stake geheel of gedeeltelijk verliezen. Uiteindelijk is het resultaat van dit mechanisme hetzelfde als in PoW: eerlijk handelen levert meer op dan oneerlijk handelen.

Over het algemeen worden er geen nieuwe eenheden cryptocurrency toegevoegd aan de beloning voor validators. De cryptocurrency van de blockchain moet dus op een andere manier worden uitgegeven. Dit kan bijvoorbeeld met eerste verdeling (een zogenaamde ICO of IEO) of door het protocol eerst met PoW te laten beginnen en later over te schakelen op PoS.

Tot nu toe is PoS in pure vorm eigenlijk alleen in kleinere cryptocurrencies geïmplementeerd. Het is dan ook nog niet duidelijk of het een levensvatbaar alternatief voor PoW kan zijn. De theorie klinkt goed, maar de praktijk moet het uiteindelijk bewijzen.

Wanneer PoS eenmaal is uitgerold op een groot en waardevol netwerk, zal het systeem een speelveld worden voor speltheorie en financiële stimuli. Iemand die de kennis heeft om een PoS-systeem te hacken, zal dit waarschijnlijk alleen doen als het iets oplevert. De enige manier om te zien of PoS werkelijk haalbaar is, is dan ook door het op een live netwerk te implementeren.

PoS zal binnenkort op grote schaal getest worden met de implementatie van Casper, onderdeel van een serie upgrades van het Ethereum-netwerk (die collectief bekend staan als Ethereum 2.0).


Andere consensusalgoritmes

Proof of Work en Proof of Stake zijn misschien het meest bekend, maar dat betekent zeker niet dat het de enige consensusalgoritmes zijn. Er zijn meerdere andere consensusalgoritmes, elk met hun eigen voor- en nadelen. Je kunt de volgende artikelen doorlezen als je daar meer informatie over wilt.


Tot slot

Mechanismes voor het bereiken van consensus zijn essentieel voor het functioneren van gedistribueerde systemen. Veel mensen geloven dat de grootste innovatie van Bitcoin het gebruik van Proof of Work was, waardoor gebruikers het met elkaar eens konden worden over een serie gedeelde feiten.

Tegenwoordig vormen consensusalgoritmes niet alleen de basis van digitale geldsystemen, maar bestaan er ook blockchains die code kunnen draaien op een gedistribueerd netwerk. Deze gedistribueerde applicaties zijn cruciaal voor de levensvatbaarheid van blockchains op lange termijn.

Van alle consensusalgoritmes is Proof of Work het meest bekend en gebruikt. Een betrouwbaarder en veiliger alternatief moet nog worden voorgesteld. Dat gezegd hebbende, wordt er ontzettend veel onderzoek gedaan naar het ontwikkelen van vervangers voor PoW. De komende jaren zullen we daar waarschijnlijk veel van gaan zien.