Hardfork. Hij staat nog niet in De Dikke van Dale, maar het lijkt een kwestie van tijd. Recent is er nogal wat controverse rondom het fenomeen geweest. Mocht je het gemist hebben of alweer vergeten zijn: de politieke dans rondom Bitcoin heeft ons onder anderen Bitcoin Cash, Bitcoin Gold en zelfs bijna Bitcoin2x gebracht. De laatste ging niet door, en misschien is dat maar goed ook. Maar, hoe zit dat nou? Waar komen al die “nieuwe” crypto’s in hemelsnaam vandaan? Ze heten ook Bitcoin, maar zijn het nou wel of geen Bitcoins?

Tussen al het cryptogeweld, bubbelpraat en ritjes naar Lamboland door, wordt het gesprek over de techniek achter blockchains zo nu en dan wel eens verstomd. Hardforks zijn een bijzonder belangrijk onderdeel van niet alleen dat gesprek, maar van de verdere ontwikkeling van blockchains in het algemeen.

Om goed te begrijpen hoe en waarom hardforks zo belangrijk zijn, doen we voor het gemak nog even een stapje terug: wat is er ook alweer zo kenmerkend aan blockchains?

Definitief

Maak je maar geen zorgen, ik ga hier niet voor de 3000ste keer uitleggen wat een blockchain nou ook alweer is. Ik weet zeker dat je die uitleg nog wel ergens online kan terugvinden.

Voor nu volstaat een van de belangrijkste kenmerken van blockchains:  Alles wat je in een blockchain zet staat er voor altijd in. Je kan de gegevens in een blockchain niet meer wijzigen. Dat zou ook een kwalijke zaak zijn. Stel dat iemand even de geschiedenis van alle Bitcoin-transacties zo zou aanpassen dat alle Bitcoins ineens in zijn of haar zak zouden belanden. Het hele idee is natuurlijk dat je je daar geen zorgen over hoeft te maken, en gelukkig hoeft dat ook niet.

Net zoals het internet zelf maken blockchains gebruik van allerlei protocollen (een verzameling van regels) welke in het leven worden geroepen door de programmeerkunsten van vakkundige ontwikkelaars.

Deze protocollen zijn de software die een blockchain draaiende houden. Hierin liggen de regels van een blockchain besloten. Je kan denken aan regels zoals: wat zijn de mining rewards? Om de hoeveel tijd komt er een nieuw block bij? Is het Proof of Work of Proof of Stake mining? Enzovoort. Alle nodes, dat zijn de computers die de blockchain in de lucht houden, volgen de regels van deze protocollen door de bijbehorende software te draaien, en dat ís de blockchain.

Genesis block

Maarrr… als deze protocollen eenmaal toegepast zijn op de blockchain in kwestie, liggen de regels ook vast en kunnen ze niet meer aangepast worden. Stel dat Vitalik Buterin toch nog een kleine aanpassing wil doen aan zijn geliefde Ethereum, dan kan dat dus helemaal niet. Want net zoals de data, zijn ook de regels van een blockchain definitief.

Desondanks blijft de technologie zich doorontwikkelen en is het soms handig om met de tijd mee te gaan, daarvoor moet je toch hier en daar wat sleutelen aan je blockchainproject. En dat kan dus alleen door een hardfork uit te voeren.

Hardforks: Hoe en waarom

De hardfork

Dus, hoe zit dat dan? Eigenlijk heel simpel. Een blockchain volgt, volgens bepaalde regels, een recht pad. Bitcointransacties worden aan elkaar geregen en zo wordt, naarmate de tijd vordert, de Bitcoinblockchain steeds langer. Steeds meer transacties worden immers aan de blockchain toegevoegd.

Een hardfork is simpel gesteld een afwijking van dit oorspronkelijke pad, een vertakking als het ware. Alsof je een afslag neemt van een weg die tot dat moment alleen maar rechtdoor ging. Op de oorspronkelijke weg blijft rechtdoor een mogelijkheid, maar je kan ook rechts de afslag nemen en een andere kant op gaan, met als belangrijkste kanttekening dat deze afslag nóóit meer terugkomt op de oorspronkelijke snelweg.

Een iets technischere uitleg zou zijn: er wordt een nieuw stukje software vrijgegeven en alle nodes kunnen kiezen of ze de oude regels blijven volgen, of de software die ze draaien aanpassen waardoor ze de nieuwe regels gaan volgen.

Elke protocolwijziging of update aan een blockchain is uit noodzaak dus een hardfork. Wallets en exchanges doen deze updates vaak voor je en dus heb je als gebruiker helemaal niet door dat dit is gebeurd. Mensen die zelf een node draaien moeten vaak wel handmatig hun software updaten als ze mee willen blijven doen met de geupdate versie van een blockchain.

Als het gaat om een ‘gewone’ update blijft de ‘oude’ versie vaak niet bestaan en gaan alle nodes vroeg of laat mee in de nieuwe versie van een blockchain, dit gebeurt constant.

Denk aan Verge wat laatst het Wraith Protocol heeft gelanceerd. De enige manier waarop dit kon was door de Verge blockchain zonder Wraith een vertakking (hardfork) te geven naar een versie met Wraith. Alle nodes van de Verge blockchain hebben inmiddels hun software geupdate en is het Wraith Protocol een feit. Niemand had door dat het een hardfork was, maar dat was het wel.

Hardforks: Hoe en waarom

Consensus over code

Als we weten dat hardforks eigenlijk aan de orde van de dag zijn bij de ontwikkeling van blockchains, hoe zit dat dan met al die forkverhalen rondom Bitcoin Cash enzo? Dat waren toch ook hardforks? Dan zeg ik: “Ja! Dat klopt! Dat zijn het ook.”

Een vraag die je jezelf kan stellen als het om een decentrale technologievorm gaat is: wie is de baas? Oftewel: wie bepaalt eigenlijk die regels waar je het nou de hele tijd over hebt? Het antwoord is natuurlijk: iedereen.

Als de regels eenmaal vastgelegd zijn is iedereen het dus in zekere zin met elkaar eens: er is consensus bereikt over de te volgen regels op een specifieke blockchain. Maar achter elke node zit een computer en achter elke computer zit een mens van vlees en bloed. En daar gaat het nog wel eens mis, want mensen hebben nog wel eens de neiging het niet met elkaar eens te zijn.

In de meest extreme gevallen stormen de mensen die het niet met de rest eens zijn woedend de kamer uit terwijl ze brullen: “prima! Ik bedenk mijn eigen regels wel!” En dat is eigenlijk wat er gebeurt als er dankzij een hardfork een nieuwe coin verschijnt.

Laten we een recent voorbeeld pakken: Bitcoin Cash. De blockchain van Bitcoin had problemen met het verwerken van de enorme hoeveelheid transacties die het netwerk voorgeschoteld kreeg. Dus moest er een oplossing komen voor de schaalbaarheid van Bitcoin.

De manier waarop Bitcoin echter ging schalen (meer transacties verwerken) was voer voor discussie. Sommige developers vonden bepaalde technische oplossingen beter dan anderen en vice versa, de meningen waren – zacht gezegd – verdeeld. In dit specifieke geval kon er geen consensus bereikt worden over de manier waarop het schaalbaarheidsprobleem van Bitcoin opgelost moest worden en hebben de twee groepen onafhankelijk van elkaar allebei een andere oplossing gecreëerd. De ene oplossing is geïmplementeerd op de “oorspronkelijke” blockchain en noemen we nog steeds gewoon Bitcoin, de andere oplossing heeft dus een afslag genomen op een bepaald punt en wordt nu Bitcoin Cash (of BCash, door sommigen) genoemd.

Hardforks: Hoe en waarom

Op deze manier ontstaan er dus twee blockchains waar er vroeger maar één was, en is een nieuwe cryptocurrency geboren uit onenigheid. De charme is natuurlijk dat iedereen zijn eigen idealen kan loslaten op de regels die een blockchain sturen, zelfs als je het oneens bent met de rest kun je – als programmeur – dan gewoon je eigen versie ‘forken.’ Mocht jouw idee dan écht beter zijn dan het origineel, gaan mensen vanzelf wel gebruik maken van jouw versie. In die zin is het dus inderdaad “forks over knives.”

De korte geschiedenis van blockchains is al heel wat hardforks rijker. De één is allicht wat beruchter dan de andere. De volgende keer maken we het verhaal compleet. Want behalve een hoop techniek, gaat er ook vooral een hoop politiek schuil achter de schermen van Bitcoin en Ethereum, en daar spelen hardforks ook zeker een belangrijke rol in.