top of page
  • Foto van schrijverAaron

#9 - Zo werkt het Bitcoinprotocol: een diepgaande technische uitleg

Bijgewerkt op: 22 mrt. 2023

Dit artikel is voor de ingenieurs, boekhouders en programmeurs; de doorzetters, diehards en mensen die techniek en technologie interessant vinden. De kennis uit dit artikel heb je niet nodig om Bitcoin te kopen, te sparen of te verzenden. Dit artikel lees je omdat je het interessant vindt om te leren hoe het Bitcoinprotocol daadwerkelijk functioneert. Zodra je dit snapt, gaan er waarschijnlijk allerlei lampjes branden en is er geen weg meer terug. Na het lezen van dit artikel word je hoogstwaarschijnlijk een Bitcoiner, je bent gewaarschuwd…

In de eerste plaats lijkt Bitcoin een financieel probleem op te lossen. Satoshi vond bijvoorbeeld een oplossing voor een probleem waar digitaal geld mee kampte, het “double spend problem”. Oftewel, hoe voorkom je dat digitaal geld meerdere keren kan worden uitgegeven.

Satoshi heeft met Bitcoin ook een ander, veertig jaar oud probleem, opgelost: het “Byzantine generals problem”. Hoe komen verschillende onafhankelijke partijen tot overeenstemming over één en dezelfde waarheid. En hoe krijg je deze informatie onaangetast van de ene partij naar andere partijen, zonder dat iemand anders deze informatie kan onderscheppen, veranderen of dat een derde partij moet worden vertrouwd. De oplossingen voor deze twee problemen zijn voldoende grond voor een financiële revolutie.

Maar misschien wel het meest indrukwekkende aan Bitcoin, is dat Satoshi hiermee een portaal opende tussen de fysieke en digitale wereld. Satoshi vond een manier om kosten uit de fysieke wereld, in de vorm van energie, tot leven te brengen in de digitale wereld.

Hoe? Vanwege verschillende digitale componenten die Satoshi samenvoegde in het Bitcoinprotocol en daarover lees je meer in dit artikel.


Hoe werkt Bitcoin mining?

Bitcoin mining is een essentieel proces in het Bitcoinnetwerk. Miners en nodes beveiligen het netwerk en voorkomen dat iemand ongeautoriseerd transacties kan aanpassen, of toevoegen aan de timechain. Via het miningproces worden op een gedecentraliseerde manier nieuwe transacties toegevoegd aan de timechain. Elke node controleert vervolgens individueel of deze transacties voldoen aan de regels. Over het algemeen kiezen miners de meest economische transacties uit de mempools, oftewel degene waar gebruikers de hoogste transactiekosten voor betalen. Deze financiële beloning voor miners voorkomt dat alle miners samenspannen om transacties te censureren. Er zullen namelijk altijd miners zijn voor wie de financiële beloningen van transacties belangrijker zijn dan de voordelen van censuur.

Na het vinden van een blok worden door het protocol nieuwe Bitcoin vrijgegeven. Miners produceren dus zelf geen Bitcoin, maar worden beloont met Bitcoin door het Bitcoinprotocol na het vinden van een nieuw blok. Deze beloning heet de blockreward en bestaat uit de transactiekosten van alle transacties in een blok + de blocksubsidie. Dit wordt uitbetaald als eerste transactie in een nieuw blok en heet een coinbase transactie. De bloksubsidie bestaat uit compleet nieuwe Bitcoin die door het protocol worden toegevoegd aan de totale hoeveelheid in omloop. Dit gaat volgens een specifiek vastgesteld schema: het monetaire beleid van Bitcoin.



Zo werkt het Bitcoinprotocol
De werking van het Bitcoinprotocol. (klik om te vergroten)


Wat is het monetaire beleid van Bitcoin?

Elke 210.000 blokken (ongeveer 4 jaar) halveert de blocksubsidie (het aantal Bitcoin waarmee miners worden beloont per nieuw gevonden blok). Dit moment heet “de halving” en leidt er uiteindelijk toe dat alle, maar niet meer dan 21 miljoen Bitcoin zullen worden gemined. De eerste 4 jaar kregen miners per blok maar liefst 50 Bitcoin als blocksubsidie. Inmiddels hebben er 3 halvings plaatsgevonden, waardoor de blocksubsidie momenteel nog maar 6,25 Bitcoin is. Dit houdt simpelweg in dat er steeds minder Bitcoin worden toegevoegd aan de hoeveelheid in circulatie. Oftewel, om de 4 jaar halveert de toevoer van nieuwe Bitcoin, tot het moment is bereikt dat alle 21 miljoen Bitcoin in omloop zijn gebracht. Dit is een bijzonder fenomeen omdat de mensheid nog nooit absolute schaarste heeft gekend. Niemand weet bijvoorbeeld hoeveel goud er in het universum beschikbaar is en in het geval van fiat weet niemand met zekerheid te voorspellen wanneer een centrale bank meer geld in omloop zal brengen. Iedereen met een Bitcoin node kan echter met zekerheid vaststellen dat er nooit meer dan 21 miljoen Bitcoin zullen worden gemined. Alle Bitcoin bestaan dus in principe al, ze worden alleen gemiddeld om de 10 minuten vrijgegeven via voorgeprogrammeerde regels.




Wat zijn hashfuncties?

Een belangrijk onderdeel van het Bitcoinprotocol zijn hashfuncties, maar wat zijn dat?

Een hashfunctie is een wiskundig proces dat invoergegevens van elke willekeurige grootte neemt (nummers, letters of zelfs bestanden), er een bewerking op uitvoert en unieke uitvoergegevens van een vaste grootte produceert. Deze noemen we een hash-uitvoer of simpelweg een hash.


Zo werkt een hashfunctie
Invoer => Hashfunctie => Hash


Hashfuncties spelen een belangrijke rol, niet alleen bij Bitcoin maar bij digitale beveiliging in het algemeen. Wanneer je bijvoorbeeld online een wachtwoord aanmaakt, wordt het wachtwoord door een hashfunctie geleid en wordt de hash van het wachtwoord opgeslagen. Wanneer je weer inlogt, wordt dezelfde hashfunctie uitgevoerd op het woord dat je hebt ingevoerd en controleert de server of het resultaat overeenkomt met de opgeslagen hash.

Er zijn 2 soort hashes:

  • Eenrichtingsfunctie: deze produceert gemakkelijk een hash in één richting voor een bepaalde invoer, maar het is onmogelijk om de invoer te vinden. Zelfs als de uitvoer bekend is, teruggaan is dus niet mogelijk.

  • Tweerichtingsfunctie: een functie waarmee men gemakkelijk heen en weer kan gaan wanneer de invoer of uitvoer bekend is. Met de invoer krijg je gemakkelijk de uitvoer en andersom.


Hoe worden hashfuncties ingezet bij Bitcoin?

Bitcoin gebruikt cryptografische eenrichtingsfuncties: SHA-256 & RIPEMD-160.

Zodra je data door een hashfunctie haalt, ben je zeker dat dezelfde data altijd dezelfde hash oplevert. Hierdoor kun je hashes gebruiken om de juistheid van bepaalde data in het netwerk te verifiëren. Bij Bitcoin worden hashfuncties daarom onder andere gebruikt voor de volgende doelen:


  • Adres generatie: Een Bitcoin adres is een hash van de public key na het inzetten van een dubbele hashfunctie: SHA256 + RIPEMD-160

  • Transactie identificatie: Alle Bitcointransacties krijgen nadat ze zijn geverifieerd en toegevoegd aan de timechain, een unieke Bitcoin-transactie-ID hash. Dit is een unieke reeks letters en cijfers die kan worden gebruikt om de details van een transactie terug te vinden. Een Bitcoin-transactie-ID is de hash van een samenvatting van alle informatie uit een transactie.

  • Blockheader generatie: Een blockheader is de hash van een samenvatting van alle data uit een blok. In het Bitcoin mining proces zijn de invoer voor de hashfunctie de meest recente, nog niet-bevestigde transacties (samen met enkele aanvullende gegevens met betrekking tot de tijdstempel en een verwijzing naar het vorige blok). Indien de miner de juiste hash raad, vindt hij een nieuw blok. Het nummer wat moet worden geraden heet de targethash. Dit blok krijgt een blok identificatienummer wat dus een hash is van een SHA-256 hashfunctie.

  • Blockheader identificatie: De nodes in het netwerk kunnen met de data uit reeds gevonden blokken verifiëren of de hash van een volgend blok correct is. Op deze manier ben je altijd zeker dat alle deelnemers aan het netwerk zich aan de regels houden. Indien de blockheader hash die de miner aanbiedt niet overeenkomt met de hash die de nodes genereren, is er sprake van afwijkende informatie in het blok en wijzen de nodes het blok af.


Wat zijn merkle trees?

Een Bitcoin Merkle tree is een structuur van hashes die wordt opgebouwd door de Bitcoin-transactie- ID hashes van alle transacties in een blok met elkaar te blijven hashen (zie afbeelding). Dit gaat net zolang door totdat er nog maar één hash over blijft aan de top, dit is de root hash. Merkle trees maken zo een efficiënte en veilige verificatie van de inhoud van grote datastructuren mogelijk.

De roothash wordt gebruikt om ervoor te zorgen dat de data van blokken die worden gedeeld tussen nodes onderling, exact overeenkomen. Door de root hash te controleren, weten nodes of alle andere nodes en miners zich netjes aan de regels houden.

Zo werkt een Merkle tree


Wat is een targethash?

Het doel voor miners is het raden van een (256-bits) nummer dat alle nodes vervolgens kunnen controleren. De hash van de blockheader moet lager zijn dan, of gelijk zijn aan het vastgestelde doel om het blok door het netwerk te laten accepteren. Hoe lager het doel, hoe moeilijker het is om een blok te genereren.

Het is dus niet zo dat er een specifiek, vaststaand nummer uitgerekend moet worden, maar minen is eerder het raden van een getal tussen 0 en de target hash. Elke poging levert een hash op en geeft je in feite een willekeurig getal tussen 0 en de maximale waarde van een 256-bits getal (wat enorm is). Als de hash onder het vastgestelde doel ligt, wint de miner. Als dat niet het geval is, veranderden miners de nonce (waardoor de volgende hash volledig wordt gewijzigd) en proberen ze het opnieuw. Indien de hash niet geraden wordt, moet de miner het volledige hashproces herhalen. Daarom is het beter vergelijkbaar met een loterij waar iedere deelnemer met elke nieuwe poging dezelfde kans heeft op een prijs, dan met een som waar een deelnemer steeds dichter bij de uitkomst komt naarmate hij vordert in het proces.


Wat is een nonce?

We hebben inmiddels gezien dat miners zoeken naar een specifieke hash uitkomst. De hash van de winnende miner wordt de blockheader van een nieuw blok. Tijdens het proces blijft alle data die wordt ingevoerd in de hashfunctie gelijk, behalve de nonce. De nonce is het enige getal dat miners bij elke hashpoging aanpassen om een andere hash te kunnen genereren. Laten we naar een simpel voorbeeld kijken. In een hash generator kun je een invoer opgeven waarna je een unieke hash krijgt. In dit voorbeeld gaan we zoeken naar een hash die begint met een 0:

Invoer poging 1: Bitcoin-Partner

Hash: d13afcb767aeba1f21dda1bcaea663c8705cd7cb4ff894e1ee01322e5198fd6d

Invoer poging 2: Bitcoin-Partner!

Hash: 074258bf7b124c50b174e207b3d05c9eacd74b00c125b53764e683e41a7a74a6


In dit voorbeeld is het uitroepteken de nonce. Een correcte nonce is hetgene wat voor miners onbekend is wanneer ze beginnen met hashen, maar via de nonce kan achteraf geverifieerd worden dat de miner daadwerkelijk recht heeft op de blockreward. De nodes valideren vervolgens of de bij hen bekende informatie over de transacties in het blok, gecombineerd met de nonce, ook daadwerkelijk dezelfde blockheader als hash oplevert.


Wat is Proof of Work?

Bitcoin miners vinden nieuwe blokken via een proces dat proof of work wordt genoemd. Om een blok te vinden moeten ze dus via een computer een willekeurig getal raden door een hashfunctie op te lossen. Hiervoor wordt door de miners gehashed totdat het juiste getal is geraden. De uitkomst is een hash van de volgende onderdelen:

  • de vorige blockhash;

  • de tijdstempel;

  • moeilijkheidsgraad en nonce;

  • merkle tree root.


Om een hashfunctie op te lossen moet een computer rekenkracht inzetten: brute force. De computer moet hiervoor elektriciteit gebruiken en hier staan kosten tegenover; hashkosten. Het resultaat van het inzetten van computerkracht is het verkrijgen van een hash, dit is een bewijs dat er daadwerkelijk computerkracht is ingezet. Oftewel het zet energie om in een digitaal antwoord. Een hashfunctie is een big deal omdat het fysieke kosten oplegt aan de digitale wereld.


Van alle miners die deelnemen kan maar één computer het juiste getal raden per blok dat wordt toegevoegd aan de timechain. Alleen de computer die het juiste getal raad krijgt de bevoegdheid om transacties toe te voegen aan het volgende blok. Ook wordt alleen deze miner beloond door het netwerk met de blockreward.

Miners moeten dus bewijzen in de digitale wereld dat ze in de fysieke wereld kosten hebt gemaakt door het inzetten van energie. Dit doe je alleen als de uitkomst je daadwerkelijk iets waard is. Zodra de kosten voor het hashen te duur worden ten opzichte van de opbrengst, wordt het nutteloos door te gaan met het inzetten van computerkracht.

De creatie van nieuwe Bitcoin is dus niet zonder kosten. Hoe meer deelnemers aan het mining proces, hoe meer computerkracht er nodig is, oftewel hoe duurder het wordt. Hierdoor vallen de minst efficiënte miners af in een race voor nieuwe Bitcoin. Maar meer computerkracht is tegelijkertijd wat het netwerk beschermt tegen een eventuele aanval. Om een historische transactie aan te passen zal iemand namelijk meer rekenkracht moeten leveren dan 51% van alle miners. Om volledige controle te krijgen over het Bitcoin netwerk heeft een aanvaller langdurig meer dan 51% van de hashkracht van het wereldwijde netwerk nodig. Dit is voor één blok al zeer kostbaar en is niet langdurig vol te houden omdat de kosten in de fysieke wereld simpelweg te groot zijn. Er is daarom geen centrale beveiligingslocatie nodig in de fysieke wereld, zoals bijvoorbeeld voor het goud in Fort Knox. Hierdoor heeft geen enkele miner het monopolie op het toevoegen van transacties aan de timechain. Naast dat de regels van Bitcoin worden bewaakt door alle nodes wereldwijd, hebben alle mining computers wereldwijd evenveel kans om een blok te vinden en nieuwe transacties toe te voegen aan de timechain.



Wat is de moeilijkheidsgraad aanpassing?

Het wordt moeilijker om Bitcoin te minen indien er meer miners aan het werk zijn en vice versa. Dit gebeurd na elke 2016 blokken automatisch via een moeilijkheidsgraad aanpassing, om te voorkomen dat de totale hoeveelheid Bitcoin te snel of te langzaam vrij komt.

Wanneer je het minen van Bitcoin vergelijkt met het minen van goud, dan is de moeilijkheidsgraad aanpassing de onderscheidende factor. Stel je voor dat de prijs van goud stijgt, dan is het aantrekkelijk om meer goud te minen. Hierdoor zullen meer miners op zoek gaan naar goud. Dit heeft als gevolg dat de hoeveelheid goud die gevonden wordt stijgt, dus de hoeveelheid in omloop wordt groter. Hierdoor komt er balans in vraag en aanbod en daalt ook weer de prijs.

Stel je nu voor dat de prijs van Bitcoin stijgt, in deze situatie komt er niet meer Bitcoin op de markt zodra meer miners aan het werk gaan. Dit komt omdat de moeilijkheidsgraad aanpassing dan in werking treed, waardoor het juist moeilijker wordt om een blok te vinden. De tijd die miners nodig hebben voor het vinden van een nieuw blok zal op deze manier gemiddeld altijd rond de 10 minuten liggen.


Dit alles maakt het Bitcoin netwerk een globaal, openbaar, efficiënt, decentraal en 100% accuraat boekhoud netwerk, waarop een absoluut schaarse asset leeft met een onveranderlijk en exact te voorspellen monetair beleid.


Wat is een Bitcoin? Één Bitcoin bestaat uit 100.000.000 Satoshi’s en is een digitale vorm van elektronisch geld waarmee waarde kan worden overgemaakt van de ene naar de andere partij zonder inmenging van een financiële instelling. Een Bitcoin is in principe een reeks digitale handtekeningen waarmee bewijs van eigendom kan worden overgedragen aan een ander. Elke eigenaar kan zijn Satoshi’s overdragen naar de volgende eigenaar door een hash van de vorige transactie en de public key van de volgende eigenaar digitaal te ondertekenen en toe te voegen aan een nieuwe transactie.


Bitcoin is een reeks digitale handtekeningen

De nieuwe eigenaar wil zeker weten dat de Satoshi’s die hij ontvangt niet eerder zijn uitgegeven. De enige manier om de afwezigheid van een eerdere transactie te bevestigen, is om op de hoogte te zijn van alle transacties. In het fiat systeem is de bank op de hoogte van alle transacties en beslist welke als eerste arriveerde. Om dit zonder tussenpartij te bereiken, moeten transacties openbaar worden aangekondigd via een node. Zodra een transactie in een blok is opgenomen is het niet mogelijk deze Satoshi’s nogmaals te versturen vanaf het oude adres zonder het gehele proof of work proces over te doen.


Het Bitcoin privacy model


Satoshi’s staan vervolgens niet op een hardware wallet maar als UTXO op een adres in de UTXO set, totdat deze wordt verstuurd naar een nieuwe eigenaar. Nodes verifiëren dit door de laatste transactie op te zoeken op de timestamp server. Hierin vinden ze het historische bewijs van alle Bitcointransacties en deze wordt om de 10 minuten bijgewerkt.

Wat is er zo revolutionair aan Bitcoin?

  • Het is een peer to peer valuta en Bitcoin maakt het mogelijk om in een oogwenk waarde te versturen over bijvoorbeeld 15.000 km afstand

  • Bitcoin maakt het ook mogelijk om waarde te versturen naar iemand in de toekomst bijvoorbeeld 15.000 dagen later

  • Bitcoin is digitaal, niet repliceerbaar eigendom

  • Deelnemers aan het Bitcoin netwerk zijn niet afhankelijk van een financiële instelling

  • Bitcoin is immuun tegen censuur

  • Het netwerk settelt transacties gemiddeld elke 10 minuten, waardoor ze onomkeerbaar zijn

  • Bitcoin is een synchroon, wereldwijd gedistribueerd, verifieerbaar, niet te manipuleren grootboek

  • Bitcoin levert cryptografisch beveiligd bewijs met de datum en tijdstip van elke historische transactie

  • Bitcoin verslaat elk monetair goed ter wereld op iedere eigenschap van geld

  • Bitcoin heeft een voorgeprogrammeerd en onveranderlijk monetair beleid

  • Bitcoin heeft een vastgestelde totale hoeveelheid: 21 miljoen

  • Bitcoin is een permissieloos, openbaar digitaal monetair protocol dat economisch is gelinkt via energiegebruik aan de fysieke wereld.


Dit veranderd alles.

Proficiat, je hebt jezelf bewezen als een echte doorzetter. De informatie uit de afgelopen twee artikelen was vrij technisch, maar je bent toch tot hier gekomen. Indien je alle artikelen vanaf het begin hebt gelezen kun je stellen dat je een goede basis hebt om te begrijpen waar dit allemaal naar toe gaat. Het volgende artikel gaat vooral over welke kant we niet op gaan voordat we een glimp kunnen opvatten van hoe de toekomst eruit komt te zien. Lees hier het volgende artikel waarin duidelijk wordt dat "crypto" niet de innovatie is die men hoopt dat het is. In dit artikel wordt duidelijk dat het gaat om Bitcoin, niet om "crypto".


Lees hier het volgende artikel: #10 - Bitcoin vs. crypto: wat is het verschil?



Dank je wel voor het lezen van dit artikel! Mijn artikelen zijn educatief van aard en gebaseerd op verifieerbare bronnen die ik gebruikt heb voor mijn werk. Ik hoop dat ze nuttig zijn en je inspireren te bouwen aan een betere toekomst. Ben je op zoek naar meer informatie lees dan ook mijn andere artikelen. Bezoek mijn dienstenpagina wanneer je persoonlijke hulp wilt omtrent Bitcoin en op mijn partnerspagina vind je exclusieve kortingscodes op Bitcoin producten. Ook kun je hier je eigen Bitcoin toolkit samenstellen! Bekijk de pagina's Bitcoin kopen, hardware wallets, software tools of bekijk de selectie Bitcoin boeken. Ben je klaar met de fiat wereld, dan zoek je hier je nieuwe Bitcoin baan!

Doneer hier een paar Satoshi's als bedankje voor het schrijven van dit artikel! Schrijf je ondertussen in voor mijn nieuwsbrief om op de hoogte te blijven van nieuws, artikelen en speciale aanbiedingen die ik voor jullie selecteer!

89 weergaven0 opmerkingen

Recente blogposts

Alles weergeven

Comments


bottom of page