We hebben de laatste jaren steeds meer gehoord over de toepassingen van blockchain en we komen er nu achter dat het vele aspecten van onze maatschappij kan gaan transformeren. Om op grote schaal te kunnen presteren, heeft een blockchain goede en efficiënte beveiliging nodig. De veiligheid van de blockchain is voor een groot deel te danken aan het consensus algoritme. Als je al wat kennis hebt van blockchain, weet je waarschijnlijk dat alle transacties worden verdeeld over het netwerk. Om overeenstemming te bereiken over deze transacties wordt gebruikgemaakt van een consensus algoritme. In dit artikel leer je wat een consensus algoritme is, hoe het werkt, en welke soorten er zijn.
Wat is een consensus algoritme?
Een consensus algoritme is een protocol dat door computers wordt gebruikt om overeenstemming te bereiken over specifieke data. Het wordt toegepast in gedistribueerde systemen of processen. Blockchain is een van de meest belangrijke technologieën die gebruikmaakt van consensus algoritmen.
Iedere transactie die plaatsvindt op een gedecentraliseerd blockchain netwerk moet worden geverifieerd door alle betrokken partijen. De computers die dit doen worden vaak miners genoemd. Door complexe cryptografische rekenpuzzels op te lossen proberen de miners nieuwe bitcoins (of andere cryptovaluta) te vinden.
De belangrijkste eigenschappen van een consensus algoritme zijn:
- Veiligheid – wanneer alle knooppunten in het netwerk dezelfde output geven, en de regels zijn nageleefd, weet je zeker dat de data juist is.
- Betrouwbaarheid – een consensus protocol geeft betrouwbaarheid aan een netwerk. Het garandeerd dat alles op de juiste manier wordt verwerkt en altijd online is.
- Fouttolerantie – in geval van problemen kan een consensus algoritme zichzelf herstellen, zolang er een voldoende meerderheid in het netwerk is met de goede informatie.
Hoe werkt een consensus algoritme?
Nu je ongeveer begrijpt wat een consensus algoritme is, kunnen we wat verder ingaan op de werking ervan. In het verleden moesten alle transacties worden vastgelegd door mensen. Dit waren vaak bankiers en boekhouders. Door de uitvinding van het consensus algoritme hoeven mensen dit werk niet langer te doen. De controlerende functie van de mens is als het ware ingebouwd in een computerprotocol.
Het enige doel van het consensusprotocol is om computers onderling te laten communiceren en om een gemeenschappelijke set van gevalideerde transacties aan te bieden die aan de blockchain kunnen worden toegevoegd. Dit is bedoeld om onder andere te voorkomen dat onethische miners valse transacties toevoegen.
Consensusregels
Een consensus algoritme werkt met een aantal consensusregels. Er moet aan bepaalde eisen worden voldaan om onder andere te voorkomen dat verkeerde data het netwerk kan binnendringen.
De consensusregels van Bitcoin vereisen bijvoorbeeld dat blokken slechts een bepaald aantal bitcoins creëren. Als een blok meer bitcoins aanmaakt dan is toegestaan, zullen alle knooppunten dit blok weigeren, zelfs als elke andere miner ter wereld het accepteert.
Als de gemeenschap het niet eens is over de consensusregels, wat nog weleens voorkomt, splitst het zich op in twee of meer totaal onafhankelijke netwerken met ieder zijn eigen valuta. Dit staat bekend als een hard fork.
Welke consensus algoritmen zijn er?
Er zijn veel verschillende consensus algoritmen. Het type mechanisme dat moet worden gebruikt, is afhankelijk van het type netwerk. Laten we enkele mechanismen bespreken.
Proof-of-Work (PoW)
PoW is momenteel de meest voorkomende en een van de meest robuuste consensus algoritmen voor blockchain technologie. Bitcoin, de eerste cryptocurrency, maakt ook gebruik van PoW.
De miner moet wiskundig complexe puzzels oplossen voordat hij een nieuw blok goedkeurt voor het grootboek (de blockchain). Nadat de puzzel is opgelost, wordt de oplossing doorgestuurd naar andere miners en door hen geverifieerd voordat deze wordt geaccepteerd. Als een meerderheid van de exemplaren van de miners overeenkomen wordt de data toegevoegd aan het grootboek.
Bij Proof-of-Work wordt de keten gebruikt die het meeste ‘werk’ draagt. Al zou je dus een eigen versie maken van de blockchain, dan heb je verschrikkelijk veel computerkracht nodig om ook maar in de buurt te komen van het werk dat is verricht door de miners. Het is daarom zeer onwaarschijnlijk dat concurrerende ketens samen het volgende blok zullen genereren.
Met behulp van PoW wordt het blockchain netwerk beschermt tegen dubbele uitgaven. Iedere transactie wordt geverifieerd en na goedkeuring afgerond door de miners. Als iemand een transactie probeert te dupliceren, zal deze snel worden opgemerkt en niet worden geaccepteerd. Zodra een transactie is goedgekeurd, kunt je je uitgaven niet verdubbelen.
Proof-of-Stake (PoS)
PoS is een opkomend consensus algoritme die veel minder computerkracht vereist voor mining dan PoW. In plaats het bewijzen van werk, doen miners aan het bewijzen van inzet (stake).
Bij Proof-of-Stake wordt de maker van een nieuw blok op een deterministische manier gekozen, afhankelijk van zijn inzet, oftewel rijkdom. Waar het bij Proof-of-Work draaid om de meeste computerkracht, gaat bij PoS meer om wie de meeste coins heeft, en daarmee het grootste belang in het netwerk.
Er wordt vanuit gegaan dat iemand met een groot belang in een PoS blockchain zich niet zomaar tegen het netwerk zal keren. Het netwerk is immers voor een aanzienlijk deel van diegene zelf.
Delegated Proof-of-Stake (DPoS)
DPoS is weer heel anders dan PoS. Met DPoS werken tokenhouders zelf niet aan de verificatie van transacties en de geldigheid van blokken, maar kiezen een aantal afgevaardigden (delegates) om het werk voor hen te doen. In een DPoS-systeem zijn er meestal tussen de 21 en 100 geselecteerde afgevaardigden met de opdracht om blokken af te leveren. Mocht een van de afgevaardigden zich niet volgens de regels van de tokenhouders gedragen, dan wordt deze uit het netwerk gestemd en vervangen door een andere afgevaardigde, geselecteerd door de gemeenschap.
In tegenstelling tot PoW en PoS, kunnen miners in DPoS samenwerken om blokken te ontwikkelen. Het proces wordt weliswaar enigszins gecentraliseerd, maar het zorgt wel voor meer transactiesnelheid dan alle andere consensus algoritmen. De meest bekende projecten die gebruikmaken van DPoS zijn EOS en TRON.
Byzantine Fault Tolerance (BFT)
Als een lid van de community inconsistente informatie over transacties naar anderen stuurt, gaat de betrouwbaarheid van de blockchain achteruit. Het decentrale karakter van blockchain technologie geeft het geen centrale autoriteit die kan ingrijpen wanneer er iets misgaat. Om het probleem van een frauduleus of onbetrouwbaar knooppunt op te lossen wordt BFT gebruikt. De toepassing van een versie van PoS die met BFT werkt, lijkt de meest veelbelovende benadering voor het goedkeuren van transacties in de blockchain. Ethereum is een groot project die zich hiermee bezighoudt.
Proof-of-Capacity (PoC)
Dit consensus algoritme is weer anders dan andere. Bij PoC word je betaald voor je hardeschijfruimte. Hoe meer ruimte op de harde schijf je hebt, des to groter de kans dat je het volgende blok mag toevoegen en beloningen verdient. Om dit mechanisme succesvol toe te passen moet je een hoop geld besteden aan hardeschijfruimte.
Conclusie
Het doel van ieder consensus algoritme is om consensus te bereiken tussen verschillende partijen in een gedistribueerd netwerk. Het geeft ons de mogelijkheid om vertrouwensloos te handelen over de hele wereld. Zonder toestemming nodig te hebben van een centrale autoriteit, kunnen keuzes gemaakt worden door de gemeenschap.