Longread: de ultieme, 1734 woorden tellende, simpele uitleg van Blockchain

Het systeem achter Bitcoin is één van de redenen waarom de cryptomunt zo razend populair is. Dit systeem heet – waarschijnlijk heb je er al eens over gehoord – Blockchain. In de vorige blog van deze serie vertelde ik dat er bij Blockchain geen vertrouwen in een financiële instelling (zoals een bank) nodig is om geld naar elkaar over te maken. Maar, wat dan wel?

Voordat ik je dat ga uitleggen, hier een disclaimer: ik heb geprobeerd om deze blog kort te houden, maar dat is totaal niet gelukt. Dat je het even weet.

Om te begrijpen hoe Blockchain werkt, is het handig om eerst in te zien welk probleem het oplost.

Vlak na de Wall Street-crash in 2008 daalde het vertrouwen in de grote banken gigantisch. Is mijn geld nog wel veilig bij een bank? En hoe kan ik daar zeker van zijn? Veel mensen begonnen zich deze vragen te stellen. Zo ook Satoshi Nakamoto, een onbekend iemand die deze naam als pseudoniem gebruikt. Hij dacht: “Als ik geld – laten we zeggen €500 – overmaak naar een goede vriend, wat gebeurt er dan eigenlijk?”

Vlak na de Wall Street-crash in 2008 daalde het vertrouwen in de grote banken gigantisch

Het volgende: Nakamoto geeft zijn bank opdracht om die €500 van zijn rekening te halen en dat bedrag op de rekening van zijn goede vriend te storten. De bank is in staat om dat te doen, omdat de bank als enige toegang heeft tot het betaalregister. Nakamoto en zijn vriend vertrouwen (en betalen) de bank om hun geld te beheren. Maar wat als de bank een fout maakt, corrupt blijkt te zijn, of failliet gaat?

De volgende vraag schoot Nakamoto te binnen: “Zou er een systeem kunnen zijn waarbij ik geld kan overmaken, zonder dat daar een derde partij – zoals een bank – aan te pas komt?”

Oftewel: “Is er een manier waarop het betaalregister alleen toegankelijk is voor mensen die betalingen doen, in plaats van dat iemand anders er toegang tot heeft?”

Het antwoord op de vraag is wat je misschien al dacht.

Blockchain, de uitvinding van Nakamoto, is het antwoord.

Het is een systeem waarbij het betaalregister alleen toegankelijk is voor mensen zelf, in plaats van dat een andere partij het voor hen beheert. En iedereen met een computer kan het gebruiken!

Maar hoe werkt zo’n nieuw soort betaalregister dan? Eerst eens kijken wat je er allemaal voor nodig hebt:

  • Genoeg gebruikers die niet afhankelijk willen zijn van een derde partij. Dit moeten er minstens drie zijn, maar laten we even uitgaan van 10 gebruikers.
  • De gebruikers kunnen details van elkaars transacties zien, zonder dat ze elkaars identiteit kennen.
  • De gebruikers hebben allemaal een map en een lege pagina nodig

Het is een systeem waarbij het betaalregister alleen toegankelijk is voor mensen zelf, in plaats van dat een andere partij het voor hen beheert

Stel, van die 10 gebruikers, wil Nummer 2 (#2) € 10 overmaken naar Nummer 9 (#9). #2 laat iedereen in het netwerk weten dat hij deze transactie wil gaan doen. Alle gebruikers checken of #2 genoeg geld op zijn rekening heeft staan. Als dat het geval is, noteert iedereen de transactie.

Laten we er even vanuit gaan dat op één lege pagina 10 transacties passen. Als een pagina vol is, wordt hij verzegeld (dit heet in het echt ‘minen’, maar we noemen het voor het gemak verzegelen, dat spreekt meer tot de verbeelding).

Dat verzegelen gebeurt met een uniek nummer, eentje waar iedereen mee instemt. En als een pagina verzegeld is, betekent dit dat niemand nog veranderingen kan aanbrengen in de transacties. Als iedereen de verzegeling vertrouwt, vertrouwt iedereen de transacties op de pagina.

Dit verzegelen is de crux van Blockchain. Het vervangt het vertrouwen dat we voorheen hadden, of verwacht werden te hebben in die derde partij.

Hoe komt zo’n verzegeling tot stand?

Het grote hulpmiddel hierbij is……. de Magische Machine (deze heet eigenlijk een ‘Hash Function’, maar laten we vooral niet te technisch worden). Deze dingen zijn kenmerkend voor de Magische Machine:

  • Als je er aan de linkerkant iets in stopt (input), komt er aan de rechterkant iets anders uit (output).
  • Bij elke zelfde input is de output ook altijd gelijk (dus altijd als je er het getal ‘7’ in stopt, krijg je er de code 2CK9I uit).
  • Niemand weet hoe de machine van een input een output maakt, alleen de machine zelf.
  • Als je alleen de output weet, is het ontzettend moeilijk om erachter te komen wat de input moet zijn. De machine werkt maar één kant uit, van links naar rechts.
  • De gebruikers in het Blockchain-netwerk hebben allemaal toegang tot deze slimme machine.

De verzegeling is de crux van Blockchain. Het vervangt het vertrouwen dat we voorheen hadden, of verwacht werden te hebben in die derde partij

Wat nu, als ik het volgende wil weten: Als output wil ik een code krijgen die begint met ‘000’. Drie nullen dus aan het begin. De enige manier om daarachter te komen is om alle mogelijke getallen (en dat zijn er kneiterveel!) omstebeurt als input te gebruiken, totdat ik een match heb.

Na, laten we zeggen, een paar duizend pogingen kom ik erachter dat bij een input van 98621 uit de Magische Machine deze code rolt: 000U85. YEAH!

Belangrijk om te weten is dus dat het heel tijdrovend en moeilijk is om achter een bepaalde input te komen, als je alleen de output weet.

Maar, bij een gegeven input én output, is het super makkelijk om te checken of de input ook echt tot de gegeven output leidt. Dat doet de Magische Machine voor je.

Oké, je weet nu hoe de Magische Machine werkt. Gebruikers hebben deze machine nodig om een lastige som op te lossen. Iedere keer dat er een pagina verzegeld moet worden, hoort daar een andere som bij, die het Bitcoin-netwerk uitgeeft aan haar gebruikers.

Wat die som steeds zo anders maakt, is de gevraagde output die berekend moet worden. Het Bitcoin-netwerk stelt steeds een andere eis aan de output. Dat kan zijn ‘beginnend met 000’, of ‘eindigend op X25’. De oplossing van de som is het verzegelnummer.

Elke som ziet er zo uit:

INPUT(paginanummer + verzegelnummer) → MAGISCHE MACHINE → OUTPUT (code met een bepaalde eis, bijvoorbeeld ‘beginnend met 000’)

Het Bitcoin-netwerk stelt steeds een andere eis aan de output. Dat kan zijn ‘beginnend met 000’, of ‘eindigend op X25’

Het paginanummer is het getal van de pagina die je wilt verzegelen, bijvoorbeeld ‘772’. Het paginanummer is altijd al gegeven. Het verzegelnummer is een onbekend nummer dat je moet ‘raden’ door allerlei soorten getallen te proberen.

In dit geval kom je er na heeeeeel lang proberen achter dat het verzegelnummer 51994 is. Want, als je 772 + 51994 in de machine stopt, maakt hij er 0008YT54 van.  En – ja! – die code begint met drie nullen.

Even tussendoor: die drie nullen gelden hier als voorbeeld. In werkelijkheid zijn de eisen die aan de output (de code) worden gesteld nog veel en veel ingewikkelder, en ze verschillen steeds weer.

We gaan nu even terug naar wat er gebeurt als een pagina vol is.

Er zijn tien transacties verricht, en dus moet de pagina verzegeld worden. Iedereen in het netwerk, #1 tot en met #10, probeert het verzegelnummer uit te rekenen. Degene die het ‘t eerst weet, vertelt het hele netwerk de oplossing. De negen anderen checken met hulp van de Magische Machine of de oplossing klopt.

En als ‘ie dan klopt, verzegelt iedereen de pagina met hetzelfde nummer, en stopt de pagina weg in z’n map.

Een pagina is in dit opzicht een Block (van transacties), en de map kun je zien als Chain (van pagina’s (Blocks)). Daarom: Blockchain.

Maar wat nou als het verzegelnummer niet klopt? Bijvoorbeeld als iemand per ongeluk een fout heeft gemaakt, of probeert vals te spelen? Dan zorgen de andere negen er met hun controlefunctie voor dat degene die het fout heeft, door de mand valt. De boosdoener kan niet verder zonder dat hij de pagina met het juiste verzegelnummer in zijn map stopt. Als hij dat niet doet, wordt hij namelijk uitgesloten van het netwerk.

Nu vraag je je misschien het volgende af:

Waarom doet iedereen in het netwerk zo z’n best om het verzegelnummer te berekenen, als dit super veel tijd in beslag neemt, en je weet dat iemand anders er op den duur wel achter zal komen?

Dit komt omdat er wat te winnen valt!

Iedereen in het netwerk wil heel graag als eerste met de juiste oplossing van het verzegelnummer komen, omdat alleen diegene wordt beloond met geld, in de vorm van Bitcoins (en zoals je weet zijn die op het moment best wat waard!).

Maar, stel dat er vijf pagina’s verzegeld zijn. De transactie van € 10 die #2 eerder deed aan #9, staat op pagina één. En wat nou als #2 bedenkt: die € 10 kan ik eigenlijk wel goed gebruiken! Hij wil dus stiekem een eerdere transactie (die al verzegeld is) aanpassen. #2 zou een nieuw verzegelnummer kunnen berekenen voor pagina één, een nummer waarbij de uitkomst ook aan de eis voldoet (het begint met drie nullen), maar die anders is dan het originele verzegelnummer. Er zijn immers meerdere oplossingen mogelijk.

Om dit tegen te gaan, dat iemand met terugwerkende kracht een pagina en bijbehorend verzegelnummer aanpast, is het berekenen van een verzegelnummer nog ietsje ingewikkelder dan ik eerst uitlegde.

Iedereen in het netwerk wil heel graag als eerste met de juiste oplossing van het verzegelnummer komen, omdat alleen diegene wordt beloond met geld, in de vorm van Bitcoins

De formule om achter een verzegeling te komen ziet er namelijk zo uit:

INPUT (paginanummer + verzegelnummer + output van de vorige pagina) → MAGISCHE MACHINE → OUTPUT (code met een bepaalde eis, bijvoorbeeld ‘beginnend met 000’)

De input bestaat naast een paginanumer en een verzegelnummer ook nog eens uit het nummer van de output van de vorige pagina. Dit trucje zorgt ervoor dat het verzegelnummer van elke pagina afhankelijk is van de pagina ervoor. Zo kun je dus écht spreken van een Blockchain.

Als iemand een pagina wil veranderen, dan moet ‘ie dat bij alle andere pagina’s, hun verzegelnummer en outputcode ook doen, om de ketting constant te houden. Wil je dit doen, dan kost het je mega veel tijd en nóg meer moeite. In de tussentijd zal de fraude allang worden opgemerkt door de andere gebruikers in het netwerk. Er is dus geen beginnen aan.

Hier moet nog wel een allerlaatste dingetje aan worden toegevoegd (daarna is het echt klaar, beloofd!).

Want wat nou als niet één gebruiker, maar de meerderheid van alle gebruikers probeert vals te spelen? Dan zal het systeem niet werken. Dit is dan ook de enige manier waarop Blockchain zou kunnen instorten. Het is namelijk gebouwd met als uitgangspunt dat de meerderheid van het netwerk eerlijk is.

Eigenlijk best grappig, dat ook dit systeem weer gebouwd is op vertrouwen. Net als bij tussenkomst van een derde partij zoals een bank. Maar, dit systeem is gebouwd op het vertrouwen van honderden, misschien wel duizenden partijen, in plaats van één andere partij.

En dát maakt Blockchain nu zo speciaal.

Lees hier meer over Bitcoin:

Het broertje van Bitcoin

De basics van de Bitcoin