Waarom worden Bitcoins eigenlijk gemined? En wat is het Double Spending-probleem dat Bitcoin als eerste oploste? Hieronder een fragment uit mijn boek ‘Bitcoin en anderen cryptovaluta – Hoe je dacht te laat in crypto te stappen maar succesvoller werd dan mensen die dit boek niet lazen‘.Boekcover Bitcoin en andere cryptovaluta

Het double spending-probleem

Het probleem dat ontstaat doordat het verplaatsen van digitale middelen eigenlijk altijd een kopie achterlaat en dus niet echt iets verplaatst, wordt het double spending-probleem genoemd. En het oplossen daarvan is belangrijker dan je op het eerste gezicht zou zeggen. Het maakt het namelijk mogelijk om op een digitale manier waarde te verplaatsen. Iets wat voorheen niet kon: we konden alleen kopietjes maken. Dan verplaats je niets, je copy-paste het. In de ‘gewone’ economie is dat probleem al lang geleden opgelost: centrale autoriteiten zorgen ervoor dat een euro maar één keer kan worden uitgegeven. Door complexe computersystemen van banken en moeilijk vervalsbare bankbiljetten wordt dat voorkomen. In de whitepaper van Satoshi wordt dit probleem voor de digitale wereld opgelost. De technische details zijn complexer dan ik het schets, maar wat je ervan moet weten is dit: door computers lastig werk te laten verrichten, wordt ervoor gezorgd dat elke bitcoin maar één eigenaar kan hebben en dat elke transactie wordt geverifieerd: mag deze transactie wel plaatsvinden? Heeft degene die bitcoin verstuurt überhaupt die bitcoin wel en is de bitcoin goed aangekomen bij de ontvanger?

Het o ja!-raadsel

Het verifiëren doen computers voor ons (gelukkig, want het is saai werk) en dat kost tijd en dus energie en dus geld. Het ‘werken’ bestaat uit het zoeken naar de uitkomst van een raadsel en noemen ze minen. Het is zo’n o-ja!-raadsel. Als je het antwoord hebt, zie je meteen dat het het juiste antwoord is. Maar om het antwoord te vinden, moet je alle mogelijke antwoorden stuk voor stuk uitproberen tot je de juiste hebt. Stel je voor dat jij en een grote groep andere mensen de opdracht krijgen om de naam te vinden die hoort bij een telefoonnummer. De winnaar krijgt een geldbedrag. Om het moeilijk te maken is het enige hulpmiddel dat je hebt een papieren telefoongids. Omdat die is gesorteerd op naam zit er niets anders op dan de volledige telefoongids handmatig te doorzoeken op het telefoonnumer. Als jij die als eerste hebt gevonden, laat je de anderen uit de groep weten wat de naam is om het geldbedrag te claimen. Zij kunnen heel snel controleren of dat klopt. Ze hoeven alleen maar naar de naam te bladeren en kunnen direct zien of het telefoonnummer dat erbij staat het nummer is waar iedereen naar zocht. Zoals je ziet kost het vinden van het juiste antwoord veel tijd maar duurt het controleren of het antwoord het juiste is heel kort. Dat principe wordt ook gebruikt om blockchain-transacties te verifiëren. Het is dus geen ingewikkelde rekensom zoals soms wordt beweerd, het lijkt meer op een kansspel. Ook in de crypto-variant van dit spel is het niet mogelijk om van tevoren te weten wat het juiste antwoord is, dus moet een computer achter elkaar gokken wat het kan zijn. Gelukkig kan dat een stuk sneller dan het lezen van een telefoongids, maar in het geval van cryptovaluta is de hoeveelheid mogelijke antwoorden vele malen groter. Je kunt je voorstellen dat dat nogal arbeidsintensief is en daarom veel energie kost. Als het juiste antwoord is gevonden (door puur geluk, of hard werk, net wat je wilt), wint die computer de beloning. Vervolgens stuurt hij dat naar alle andere computers die op dat moment in het netwerk zitten, vergelijkbaar met de vinder van de naam in de telefoongids die het antwoord naar de anderen roept om te bewijzen dat hij de eerste is. Die computers kijken ernaar, zien meteen of het goed of fout is en geven aan of het juiste antwoord is gevonden. Als dat het geval is, mag de winnende computer de transactie in een nieuw block zetten. Daarmee is een nieuw block ‘ge-mined’. Zie het minen dus als het delven van goud. Je doorzoekt tonnen aan aarde om een klein stukje goud te vinden, net zoals een computer een onvoorstelbare hoeveelheid data doorploegt om de juiste code te vinden. En met de term ‘block’ komen we vanzelf bij de term ‘blockchain’. Een blockchain kun je zien als een grootboek of een boekhouding waarin netjes alle transacties worden vastgelegd. Wie, wanneer, hoeveel, het staat er allemaal in. De toevoegingen van nieuwe transacties aan die boekhouding, de blockchain, gebeurt door ze in een nieuw block te plaatsen. Dat gebeurt met de regelmaat van de klok. Bij bitcoin wordt elke tien minuten een nieuw block toegevoegd aan de blockchain. In elk nieuw block staan alle goedgekeurde transacties.

Een chain van blocks

Dat verdient wat uitleg. Zoals we al zagen is een belangrijk onderdeel van blockchain het waarborgen van vertrouwen in de juistheid van de informatie die erin staat. Dat betekent dat je niet wilt dat aanvallers de blockchain kunnen wijzigen om er zelf rijker van te worden, of gewoon voor de lol. De manier waarop iemand te werk zou gaan, is het aanpassen van de inhoud van een block in de blockchain. Door een ingenieuze vondst van Satoshi zou zo’n aanpassing meteen opvallen. Doordat de inhoud van het block verandert, verandert ook de code die de inhoud van het block samenvat. Als die code verandert, dan moet die code ook worden veranderd in het block daarna. Anders is het geen keten meer en gaat de blockchain kapot. Iedereen in het netwerk zou dan meteen zien dat er iets niet helemaal goed gaat en het valsspelende block negeren. Om de code in dat block erna te veranderen, moet de aanvaller dus ook de inhoud dáárvan aanpassen. Dat betekent echter dat ook de code van dát block verandert. Dus ook het block daarna moet weer worden aangepast. En zo verder, en zo verder. Elke aanpassing van een block vereist het oplossen van het o-ja!-raadsel. Dat kost veel tijd en geld en is dus niet interessant voor iemand die geld wil verdienen, in plaats van verliezen. In het kort is het dus niet heel moeilijk om één block te hacken, maar als er al nieuwe blocks achteraan zijn geplakt, wordt het steeds moeilijker, omdat ook al die nieuwe blocks moeten worden aangepast. En dat niet op één plek, maar op verschillende plekken tegelijk. Blockchains zijn namelijk zo opgezet dat er niet één exemplaar van is. Nee, blockchains bestaan op heel veel verschillende plekken. Iedereen kan bijvoorbeeld de blockchain van Bitcoin downloaden op een computer waarna anderen die kunnen raadplegen. Pas als de blockchain overal op dezelfde manier is veranderd, zou de hacker theoretisch gezien transacties kunnen vervalsen en zichzelf ermee verrijken. Want dan ontstaat er een nieuwe gedeelde waarheid. Iedereen is het ermee eens dat de blockchain zoals hij er op dat moment uitziet, de juiste is. Een gedeelde waarheid is misschien een vreemd begrip. Is de waarheid niet altijd gebaseerd op feiten? In theorie wel. Maar hoe bepaal je of iets een feit is? In de wereld van cryptovaluta en blockchain hebben we een bekend gezegde: ‘Don’t trust, verify’. Ofwel, vertrouw nergens op; controleer het. Als het is gecontroleerd, dan kunnen we stellen dat dit de waarheid is.

Lees ook: Waarom zijn er uiteindelijk maar 21 miljoen Bitcoins?