Bitcoin is een decentrale munt en heeft dus ook een decentraal systeem: de blockchain. De blockchain is niet iets op papier maar is 100% digitaal en dus voor iedereen in te zien. De blockchain houdt alle transacties publiekelijk bij; het slaat een openbaar record op van elke bitcoin-transactie die ooit is gemaakt.
Stel je een grootboek voor met meerdere bladzijdes. Elke pagina (een ‘block’) begint met een samenvatting van de vorige bladzijde; de pagina’s zijn gelinkt aan elkaar (‘chained’) door een unieke identificatie van het blok.
Een aantal elementen zijn nodig voor de blockchain:
- Een peer to peer (P2P) en open source netwerk
- Cryptografie
- Consensus algoritme
- Mining (en Proof of Work)
Met de basis van decentralisatie zijn deze elementen ook de basis van een omgeving waarbij vertrouwen geen rol meer speelt maar het meer draait om techniek en de kracht van de meerderheid (community).
Een peer to peer (P2P) netwerk
De blockchain wordt bijgehouden door alle deelnemers aan het Bitcoin netwerk. Een deelnemer aan het Bitcoin netwerk draait de Bitcoin software (blockchain) op zijn/haar computer en noemen we een ‘node’ en vormt daarmee een rader in het Bitcoin-netwerk.. Er zijn wereldwijd tienduizenden nodes.
Het belangrijkste is dat er duizenden en duizenden identieke exemplaren van de blockchain zijn die door deze nodes over de hele wereld worden bewaard. Al deze kopieën worden gesynchroniseerd door het systeem dat de blockchain uitvoert. De blockchain houdt bij hoeveel bitcoins er zijn. Bitcoins zelf kunnen dus nooit op een computer opgeslagen worden of in je hand worden gehouden. Al deze nodes zijn essentieel voor de werking van Bitcoin. Het vormt de basis van het decentrale karakter.
Als er een transactie plaatsvindt, zal een node die gaan afkeuren/goedkeuren (volgens regels in de blockchain) en die informatie gaan doorgeven aan alle nodes in het netwerk. Het Bitcoin netwerk bestaat dus eigenlijk uit een netwerk van duizenden nodes die álle transacties controleren. Je praat dus over een ”peer to peer (P2P)” netwerk waarbij ‘peer to peer’ slaat op het feit dat nodes met elkaar ‘communiceren’ zonder tussenkomst van een derde partij.
Alle nodes hebben een kopie van de hele bitcoinadministratie: de blockchain.
Consensus algoritme
Blockchain is de technologie waarmee vreemden samenwerken om zonder vertrouwen geld uit te wisselen. Dit is zeer krachtig omdat het eigendom bewijst (transacties controleert) zonder een derde partij zoals een bank nodig te hebben.
Stel je vier vreemdelingen in een kamer voor. Ze kennen elkaar niet en vertrouwen elkaar ook niet. Elke vreemdeling heeft een laptop waar de blockchain software op staat. Deze vreemdelingen zelf zijn te vergelijken met de gebruikersgemeenschap van Bitcoin (de ‘nodes’).
Bij een transactie (de ene vreemdeling geeft een bitcoin aan de andere vreemdeling) registreren alle vreemdelingen deze transactie. Deze transactie wordt dus vastgelegd op alle exemplaren van de blockchain over de hele wereld. Deze vreemdelingen vergelijken vervolgens al hun laptops om te controleren of ze overeenkomen. Deze methode om alle identieke “laptops” te vergelijken, wordt het vinden van een “consensus” genoemd, met andere woorden een wederzijdse overeenkomst dat de transactie geen fraude is. Een transactie wordt alleen goedgekeurd als alle nodes samen consensus, ofwel overeenstemming, bereiken.
Zie de blockchain als een openbaar grootboek. Het consensus algoritme zijn regels die bepalen wanneer we ‘een nieuwe pagina’ mogen toevoegen aan het grootboek. Nieuwe pagina’s noemen we bij bitcoin: blokken (blocks). Als alle vier de laptops overeenkomen, is alles in orde. Na de goedkeuring wordt er een gevalideerd blok aan de blockchain toegevoegd.
Als een laptop verschilt van de andere drie, hebben we een probleem. Het betekent dat een vreemde liegt over de transactie. Als gevolg hiervan negeren de drie anderen de vreemdeling met de laptop die niet overeenkomt en verder gaat. De transactie is niet goedgekeurd. Als één blockchain -kopie verschilt van alle andere in het Bitcoin-netwerk, weigert het netwerk automatisch de transactie die niet overeenkomt met de rest. Dit is wat fraude voorkomt. Het is onmogelijk voor oplichters om het systeem te manipuleren, omdat hun blockchain -kopie niet overeenkomt met de blockchain -kopie waar iedereen het eens over is.
Mining en Proof of Work
Zoals er in het reguliere betalingsverkeer instellingen zijn die transacties doorvoeren, zo zijn er in de wereld van de cryptovaluta personen die transacties verifiëren aan de hand van de blockchain: ‘miners’. Miners zijn verantwoordelijk voor het bundelen en verifiëren van transacties in een groep (block) en proberen te verifiëren dat het blok juist is om zo het blok te kunnen toevoegen aan de blockchain. Miners zijn een speciaal soort nodes en gebruiken ook de Bitcoin software op hun apparatuur. Waar dit voorheen op laptops kon is er tegenwoordig dusdanig veel rekenkracht nodig dat er speciale miner apparatuur op de markt is. Er zijn veel miners en ze concurreren allemaal om het volgende blok aan de Blockchain toe te voegen om betaald te krijgen. Als het de miner als eerste lukt een block aan de blockchain te verbinden, verifiëren de andere nodes de juistheid van de oplossing en indien overeenstemming is bereikt ontvangt de miner daarvoor een vastgestelde block reward in de vorm van een bepaald aantal bitcoins en alle transaction fees uit het blok. In feite krijgen ze gloednieuwe bitcoins die zojuist door het systeem zijn gemaakt.
Maar hoe kies je een winnaar als je met een netwerkprotocol als Bitcoin te maken hebt?
Een van de meest populaire manieren om consensus te creëren in een blockchain is ‘Proof of Work’ (PoW); zo bepalen we welke miner het blok toe mag voegen. Het ‘werk’ in Proof-of-Work omvat, in het geval van Bitcoin, het zoeken naar een getal (hash-output) met een minimum aantal voorloopnullen.
Zie de ‘hash’ vinden als een soort omgekeerde loterij. Het winnende nummer is bekend alleen het winnende lot niet. Je moet loten blijven kopen om kans te blijven maken op het winnende lot. Ben jij de eerste miner die het winnende lot heeft gevonden dan win je en mag jij als miner het blok toevoegen. Als uiteindelijk de gevonden hash van de miner voldoet aan de eisen dan levert de miner met het vinden van de hash het bewijs dat hij een bepaalde hoeveelheid werk heeft verricht (energie heeft verbruikt!). Vandaar: Proof-of-Work. De nodes (anders gebruikers van de Bitcoin software) accepteren het block alleen, en voegen het toe aan hun blockchain, als het proof of work juist is en de overige bitcoin regels niet zijn overtreden. Het proof of work wordt moeilijker naarmate er meer miners zijn die proberen het getal te raden. Dit maakt dat er met een relatief constante snelheid bewijs wordt gevonden voor een block. Deze constante snelheid ligt ongeveer rond de 10 minuten. Hoe meer energie je kunt gebruiken als miner hoe meer kans je maakt om jouw blok toe te mogen voegen aan de blockchain.
Miners zorgen dus enerzijds voor de documentatie van de transacties in de blockchain en anderzijds voor de aanwas van nieuwe bitcoins. Aan de creatie van bitcoins zit echter een maximum van 21 miljoen. Omdat de snelheid waarmee bitcoins gemined worden relatief contant is, kan worden uitgerekend dat in 2140 alle 21 miljoen bitcoins daadwerkelijk gemined zullen zijn (in 2030 is al 99% gemined). Vanaf dat moment is het de verwachting dat transaction fees de rol van de block reward volledig zullen overnemen. Op die manier zullen miners nog steeds bereid zijn proof of work te vinden en de boekhouding van het systeem bij te houden.
Het minen slaat op het creëren van bitcoin maar is slechts een bijproduct van het verifiëren van transacties. Hoe meer miners hoe moeilijker de puzzel (mining difficulty) àdit proces is nodig om automatische inflatie te bewerkstelligen (ook omdat het aantal bitcoins beperkt is)
Op het moment dat het block aan de block chain is toegevoegd is de transactie echter nog niet met volledige zekerheid te bevestigen. Bij de meeste exchanges en handelsplatformen wordt daarom een aantal bevestigingen (confirmaties) afgewacht, variërend van één tot zes, voordat de bitcoins daadwerkelijk gedebiteerd en gecrediteerd worden. De eerste confirmatie wordt gegeven als de transactie in een block is gebundeld en dit block in de block chain is opgenomen. De confirmaties die volgen vloeien voort uit de blocks die, na het block met de desbetreffende transactie erin, aan de blockchain zijn toegevoegd.
Samengevat doet een miner het volgende:
- Een miner levert rekenkracht om een nieuw blok te maken waarin de transacties opgenomen kunnen worden (en beveiligt het netwerk)
- Een miner zoekt en controleert in het Blockchain netwerk de gemaakte transacties en bundelt ze in een blok
- Een miner biedt daarna het blok aan bij de blockchain
- Een miner gebruikt Proof of Work om hopelijk als eerst zijn geldig blok op de blockchain te krijgen en de beloning te krijgen
In theorie zijn miners vrij om zelf transacties te kiezen welke zij willen opnemen in een block (bv alleen transacties met de hoogste fee) zolang ze maar een geldig block produceren.
Nodes daarintegen controleren bijvoorbeeld de volgende regels:
- Een miner kan zichzelf maar zoveel BTC geven als reward en niet meer/minder
- Bij transacties moet de handtekening (private key) matchen met de public key
- De bitcoins mogen bij een transactie niet al uitgegeven zijn
- Een succesvolle ‘hash’ moet bestaan uit eerst een bepaald aantal nullen
Een ”full node” valideert en verifieert transacties (n.a.v. bovenstaande regels), deelt zijn informatie met andere nodes en houdt een kopie bij van de volledige blockchain.
Energie en beveiliging
Het winnende lot raden vraagt pure computerrekenkracht van de apparatuur en energie. Feit is dat minen veel energie kost. Het slimste is om te gaan minen vanuit een land waar de stroomkosten laag zijn en om uiteraard te minen met de best mogelijke apparatuur. Miners gebruiken ASICs, oftewel Application-Specific Integrated Circuits. Dit zijn complete systemen met veel meer rekenkracht dan normale computers. Ook zijn ze energiezuiniger dan reguliere processoren en grafische processoren en daarmee veel geschikter voor o.a. mining.
Een toegevoegd blok aan de blockchain betekent een overeenstemming door alle nodes dat het een geldig blok is. Naarmate de blockchain groter wordt, wordt er meer energie verbruikt. Het is het meest eerlijke proces voor de fysieke wereld om iets gevalideerd te krijgen in de digitale wereld. Het onveranderlijke karakter van de blockchain kan alleen ontstaan doordat je kosten moet maken om het te maken. Vergelijk het met een pan met water en je doet daar een klompje goud in. Als het water dan kookt, kost dat energie. Maar tegelijkertijd beschermt dit ook tegen mensen die het goud uit de pan willen pakken. Dat is eigenlijk waar het met Proof of Work op neerkomt. Je voegt energie toe aan de situatie om deze te beschermen.
Blokken worden aan elkaar gelinkt door een unieke code van het voorgaande blok. Wil je een blok manipuleren zul je ook het voorgaande blok moeten aanpassen etc. etc. Door dit model is het nagenoeg niet te breken; het wordt steeds moeilijker om de blockchain te manipuleren en de meerderheid te verkrijgen zonder enorm veel energie te gebruiken. De blockchain wordt dus beveiligd door de gezamenlijke kracht van de nodes en miners; de som van alle energie.
Je kunt de blockchain ook voorstellen als een gigantische wolkenkrabber waarbij elke verdieping een blok is. Op die manier kun je beter zien dat een hele vloer opnieuw maken niet kan/zinvol is. Er is geen kostenstrategie waarbij dit voordelig is. Het idee om energie aan blokken te koppelen is fundamenteel de juiste en waarschijnlijk de enige manier om vrijwel onveranderlijkheid te waarborgen.
De langste ketting
Bitcoin nodes komen tot een consensus op basis van ‘’de langste kettingregel’’. Stel we zijn allemaal boeren die leven in een klein dorp. De meerderheid van ons verbouwd rijst als belangrijkste bron van inkomsten. We oogsten de rijst en verpakken deze in jutezakken van 1KG en brengen deze eerst naar het stadhuis. Vandaar brengt een vrachtwagen deze naar de markt voor de verkoop. Op een dag komt het stadhuis samen om de grootte van de jutezakken te bespreken…
Sommige boeren willen namelijk de jutezakken groter hebben om zo meer winst te maken. Andere boeren zijn het hier niet mee eens want grotere zaken maakt het zwaarder voor hen om de zakken te vervoeren naar het stadhuis. De burgemeester stelt voor om een stemming te houden…alleen ze lopen tegen een probleem aan. Sommige boeren vinden dat hun stemrecht zwaarder moet wegen omdat zij meer rijst verbouwen.
Een boer genaamd Satoshi komt met een idee. De volgende keer als er gestemd gaat worden neemt iedereen zijn jutezakken vol met rijst mee. Elke zak stelt een stem voor zodat bij meer zakken de boer ook meer stemmen kan geven. Elke jutezak met rijst geld hier dus als bewijs dat de boer hier hard werk voor heeft moeten leveren.
Iedereen is het hiermee eens. De volgende dag vormen er zich 2 rijen bij het stadhuis:
- vergroot de jutezakken
- vergroot niet de jutezakken
De boeren komen met hun jutezakken aanzetten en plaatsen deze in een van de 2 rijen om zo hun stem te geven. De rij welke het meest aantal jutezakken heeft zal de winnaar worden. Aan het eind van de dag is de rij van de ‘’vergroot niet de jutezakken’’ het grootst geworden en is dus de winnaar. Het oplossen van onenigheid als het gaat om de blockchain gaat in theorie op dezelfde manier. Elke jutezak is een blok in de blockchain en elke rij is een chain.
Miners voegen hun blok toe aan de blockchain als het ware om hun stem uit te brengen op die blockchain. Bestaat er onduidelijkheid over de block chain, dan zal de block chain die gesteund wordt door de meeste nodes het snelste groeien en derhalve, op termijn, als de juiste worden aangemerkt.
In het proof of work zou je kunnen zeggen dat de energie wordt gebruikt om de blockchain te beveiligen. Waarom ‘beveiligd’? Omdat je een blok moet wijzigen, moet je het ‘werk’ opnieuw uitvoeren dat nodig was om dat blok te maken. Om een van de vorige blokken ongedaan te maken, moet je het werk voor dat blok en elk blok dat erop volgde opnieuw uitvoeren. Een aanvaller zal een nieuwe ketting moeten starten en zal genoeg werk moeten doen om ook de langste ketting te worden. Alleen als zijn ketting de langste ketting is, wordt deze als winnaar en geldig beschouwd. En om dit te bereiken moet je heel veel elektriciteit verbruiken. Daarom is de regel van de langste ketting zo cruciaal.
Wanneer er onenigheid is over het mogen toevoegen van het volgende blok praten we over een ‘fork’. Zo ontstaat dus een nieuwe chain. In dit geval de 2 rijen met jutezakken. Nodes die het eens zijn met deze chain kunnen hun blokken toevoegen op die nieuwe chain. Uiteindelijk, als de nieuwste chain langer wordt dan de oude chain, gaat de Longest Chain Rule in werking. De Longest Chain Rule zorgt ervoor dat het netwerk de ‘ketting met het meeste werk’ als de hoofdketen zal herkennen. De ketting met het meeste werk is meestal (niet altijd) de langste van de vorken.
Cryptografie
Bitcoin maakt gebruik van cryptografie om betalingen veilig te verzenden. Dat is waarom Bitcoin een cryptocurrency wordt genoemd. Cryptografie is een technologie die informatie beschermt door middel van complexe wiskundige functies. Deze versleuteling is zo sterk dat geknoei vrijwel onmogelijk is. Bitcoin gebruikt sterke cryptografie om je account te beschermen en je geld veilig te laten verzenden.