Als je wat dieper in de technische kant van blockchain duikt, is de kans groot dat je de term fork waarschijnlijk wel bent tegengekomen. En de kans is ook groot dat je jezelf meteen afvroeg: 'wat is een fork?' Het is namelijk een term die niet meteen voor zich spreekt. Wanneer je weet van een fork is, kun je sommige blockchains en cryptomunten een stuk beter begrijpen.
Bekijk snel
Protocol van een blockchain
Het is belangrijk om te weten hoe een blockchain werkt, voordat je snapt wat een fork is. Aan een blockchain kunnen veel mensen deelnemen. Deze deelnemers noemen we natuurlijk de nodes. Om de blockchain goed te kunnen laten functioneren, zijn er wel regels nodig. Deze regels bepalen bijvoorbeeld wanneer een block wordt goedgekeurd en mag worden toegevoegd aan de blockchain. Of hoe groot de block mag zijn, en wat de beloning is voor de miner.
Al deze regels heten bij elkaar het protocol van de blockchain. Wanneer een node niet handelt naar de regels van het protocol, kunnen er sancties worden opgelegd. In een Proof of Stake omgeving wordt bijvoorbeeld de gehele inleg van de node afgenomen. Iedere blockchain heeft hiervoor echter zijn eigen regels, welke ook weer zijn vastgelegd in het protocol.
Wat is een fork?
Wanneer een blockchain groot is, is het eigenlijk bijna onmogelijk om nog iets aan het protocol aan te passen. Denk bijvoorbeeld aan Bitcoin. Stel je eens voor dat de maker (mocht hij zich bekend maken ;-) ) op het idee komt om het protocol van de blockchain aan te passen. Dat is mede onmogelijk door de grootte van de blockchain.
Hiervoor zou hij dan eigenlijk een aparte versie van de Bitcoin blockchain moeten maken, waarvan het protocol zich differentieert van het protocol van Bitcoin. Er komt dan een afsplitsing van de blockchain. En dat is ook echt gebeurd; denk eens aan Bitcoin Cash. De blockchain van Bitcoin Cash is eigenlijk hetzelfde als die van de blockchain van Bitcoin, maar dan met net wat andere protocollen.
De blockchain die zich afsplitst, noemen we een fork. Er zijn dan namelijk twee versies van eendezelfde blockchain, met andere regels. En wat grappig is, is dat dit ook eigenlijk best veel op een echte vork lijkt als je het visualiseert. Kijk maar eens in het plaatje hieronder. Ieder zwart bolletje symboliseert het ontstaan van de nieuwe fork.
Er zijn twee versies van een fork. Dit zijn de soft fork en de hard fork. Laten we daar eens wat meer over vertellen, zodat je beter begrijpt wat je nou zou kunnen doen met zo'n fork.
Een soft fork
De eerste versie waar ik het over had was de soft fork. Dit is een nieuwe versie van de blockchain die uiteindelijk weer terug zal komen bij de oorspronkelijke versie van de blockchain.
Hierdoor ontstaat het geval dat sommige nodes in de 'oude' versie van de blockchain werken, en andere nodes in de 'nieuwe' versie werken. Ze maken dan nog steeds op hetzelfde moment blocks, maar de protocollen die gehanteerd worden zijn anders.
Het nut van een soft fork
Ieder systeem heeft ooit onderhoud nodig. Denk bijvoorbeeld aan een website. Of aan je eigen laptop. Om een bepaalde tijd krijgt deze updates binnen. Na deze updates zijn er bepaalde regels in instellingen gewijzigd. Denk bijvoorbeeld nieuwe beveiligingsfuncties.
Er zijn ook blockchains waarvan de maker graag een update in het protocol wil doorvoeren. Echter kan dat vaak niet zomaar, omdat de meeste blockchains hier te groot voor zijn. Hiervoor kan de maker gebruik maken van een soft fork.
Stel je eens voor dat een blockchain altijd 1 coin als reward geeft aan de miner. De maker wil dit veranderen naar 2 coins. Hiervoor zou hij een nieuwe versie van de blockchain kunnen maken, waar in het protocol staat vastgesteld dat de reward 2 coins is. Een deel van de nodes zal in het nieuwe gedeelte terecht komen, terwijl een ander gedeelte in de blockchain met de oude regels blijft. Beide blockchains blijven op hetzelfde moment blocks produceren. Echter zal op een gegeven moment iemand in de oude omgeving een fout maken door bijvoorbeeld 1 coin te geven als reward. Deze node was zich namelijk nog niet bewust van het nieuwe protocol. Het netwerk van de nodes zal hem vervolgens corrigeren, zodat hij zich kan aanpassen aan de nieuwe regels. Uiteindelijk zijn alle nodes zich bewust van het nieuwe protocol, waarna de gehele blockchain verder gaat zoals eerst (maar dan met het nieuwe protocol). Hieronder zie je hoe dat er ongeveer zou uit zien. Ieder vierkantje symboliseert een block.
Hard fork
Bij een hard fork gaat het net wat anders. Het is dus duidelijk dat bij een soft fork iedere node zich kan aanpassen aan het nieuwe protocol. Hier zit het verschil met de hard fork.
De nodes in een hard fork kunnen of willen zich niet aanpassen aan het nieuwe protocol. Wanneer zij zien dat andere nodes een ander protocol volgen, zullen ze hun blocks niet toelaten en weigeren. Dat is het moment dat er een nieuwe fork ontstaat.
Een hard fork kan gepland zijn, zoals in het geval van een update, maar kan ook ontstaan doordat er onenigheid is.
Bij een geplande hard fork, krijgen de nodes met het oude protocol de mogelijkheid hun software te updaten met het nieuwe protocol. Ze kunnen er voor kiezen om dit niet te doen, waardoor ze in de blockchain met het oude protocol blijven werken. In de meeste gevallen zal de blockchain met het oude protocol na verloop van tijd uitsterven, omdat de meeste nodes zijn geupdate naar het nieuwe protocol.
Maar het kan ook zo zijn dat er een hard fork ontstaat doordat er onenigheid is. Zo kan het zijn dat er bepaalde mensen graag het protocol willen aanpassen, en andere zich willen houden aan het oude protocol. Door deze onenigheid besluit de ene partij om een fork te starten. Nodes kunnen vervolgens besluiten of ze in de blockchain met het oude protocol blijven, of juist naar de blockchain met het nieuwe protocol gaan. In bijna alle gevallen zal het nieuwe protocol uiteindelijk leiden tot een aparte cryptomunt. Dat zou er dan ongeveer uitzien zoals hieronder.
Voorbeelden van forks
Er zijn tal van cryptomunten die zijn ontstaan uit een andere cryptomunt. Sommige van hen zijn zelfs groter geworden dan de originele cyrptomunt. Daarom is het altijd interessant om in de gaten te houden wanneer een een blockchain besluit om zich te splitsen.
Ethereum
Misschien kun je je nog de Ethereum DAO hack herinneren. Bij deze hack was er voor 55 miljoen dollar aan Ethereum gestolen. Dit veroorzaakte grote onenigheid tussen de nodes van Ethereum. Er waren uiteindelijk twee verschillende groepen. De ene groep wilde de hack terugdraaien door met zijn alle de blocks uit het verleden aan te passen, terwijl de andere groep hier fel tegen was. Zij vonden namelijk dat zoiets tegen alle principes van blockchain ingaat. Deze twee groepen werden het uiteindelijk helemaal niet met elkaar eens. Dat veroorzaakte een splitsing in de blockchain van Ethereum. De groep die tegen het terugdraaien van de hack was, splitste zich af en begonnen een nieuwe blockchain, welke nu bekend staat als Ethereum Classic.
Bitcoin Cash
De splitsing van Bitcoin en Bitcoin Cash ging meer over een probleem waar Bitcoin al een tijdje tegen aan liep. Het is algemeen bekend dat het best lang kan duren voordat een transactie wordt gevalideerd door het netwerk van Bitcoin. Hierdoor vinden veel mensen de Bitcoin niet duurzaam is. Daarom besloot een groep om het aantal transacties in het Bitcoin te verhogen. Er werden verschillende voorstellen gedaan, maar geen enkele werd met open armen ontvangen. Een van deze voorstellen was het vergroten van de block-grootte. Dit voorstel leidde er uiteindelijk toe dat er een hard fork van Bitcoin ontstond, welke nu bekend staat als Bitcoin Cash.
Replay Attack
In de toekomst zul je nog vaak een nieuwe hard fork tegenkomen. Veel mensen besluiten om nog altijd even te wachten met het maken van een transactie met de nieuwe cryptomunt. Dit komt doordat zij anders mogelijk slachtoffer worden van een replay attack.
Wanneer er een hard fork plaatsvindt, splitsen de twee blockchains zich dus van elkaar. Er zijn dan genoeg mensen die besluiten meteen de nieuwe cryptomunt te kopen. Hackers kunnen in dat geval de transactie kopieëren naar de oude versie van de blockchain. Zij kunnen vervolgens met de transactiegegevens cryptomunten uit je wallet stelen. Doordat blockchain anoniem is, is het ook niet mogelijk om de dader van de aanval terug te vinden. In dat geval werkt de anonimiteit die blockchain biedt dus tegen zichzelf.
Een replay attack kan alleen in de eerste dagen van een nieuwe cryptomunt plaatsvinden. Na een aantal dagen zal het algoritme namelijk het probleem oplossen door middel van replay protection. Dat is dus ook de reden dat de meeste mensen in de eerste dagen van de blockchain nog geen cryptomunten kopen. De kans dat ze slachtoffer worden van deze aanval is dan namelijk te groot.