Als we kijken naar hoe een normale bank hier normaal gesproken mee omgaat, zien we het principe van het grootboek (een ledger) terug. Transacties - stortingen, betalingen, opnames en ontvangsten - worden allemaal centraal in een grootboek opgeschreven en blijven daar goed bewaard. De bank heeft daarmee een overzicht van alle geldstromen en garandeert jou daarbij dat jouw saldo op basis van het grootboek ook echt aan jou toebehoort. Dit is een veilige en overzichtelijke gedachte voor jezelf en voor anderen.
Blockchain basistoepassingen I: cryptocurrency
In de introductie van blockchain stelden we vast dat deze technologie aantrekkelijk is voor decentrale toepassingen, waarin vertrouwen (of eigenlijk wantrouwen naar elkaar) een cruciale rol speelt. Decentrale vastlegging van geldstromen - dus zonder tussenkomst van een bank - is dan een goede eerste mogelijkheid, omdat niemand elkaar daarin blindelings vertrouwt.
Vertrouwen
Maar hoe kan dat dan vertrouwd gebeuren zonder zo’n bank? Want als niemand je bezit (of schuld) centraal bewaart, kun je er dan wel op vertrouwen dat iemand anders (een peer) zo meteen echt geld heeft om jou te betalen of dat iemand anders echt iets zal leveren nadat jij hem betaald hebt?
Het antwoord hierop bestaat uit meerdere stappen:
- De creatie van een blockchain waarin alle transacties in blocks, digitaal ondertekend, worden vastgelegd, zodat die daarna niet meer zomaar te wijzigen zijn.
Een ledger op basis van hashes dus, die de complete historie van alle transacties bevat, waarvan we weten dat ze kloppen en waarmee we kunnen verifiëren of iemand die een volgende transactie wil doen daar (nog) wel de middelen voor heeft. - De creatie van een groot aantal kopieën (nodes in een peer-to-peer netwerk) van zo’n blockchain (ledger) voor een ongelimiteerd aantal anonieme gebruikers (de peers). Daarin kennen alle nodes dezelfde, complete transactiegeschiedenis (omvang, tijdstip, nodes).
Een distributed legder dus. - De aanmaak van digitale encryptie-sleutels (private keys en public keys), gebruikt voor decentrale goedkeuring en afhandeling van transacties (oftewel betalingen en ontvangsten) tussen nodes.
Het wegvallen van de noodzaak van controlerende tussenpersonen, die de transactierecords centraal beheren of controleren: banken, overheden, accountants, notarissen.
Als de handtekening is goedgekeurd, kan hij in het nieuwste/ laatste block worden geplaatst om deel te worden van de transactiegeschiedenis in deze blockchain en zal ook blijken of - op grond van die geschiedenis - de transactie als zodanig doorgang kan vinden.
Miners
En daarmee start de volgende dringende uitdaging: hoe zorgen we voor een nieuw block in een chain waar alle nodes tevreden mee zijn? De kracht van een distributed ledger is immers dat alle deelnemers dezelfde transactiegeschiedenis kennen en met elkaar nieuwe blocks goedkeuren.
Daarvoor introduceren we het begrip miners. Dit zijn nodes die nieuwe blocks aan de chain kunnen toevoegen (minen). Daarvoor zijn dan twee aspecten belangrijk:
- Aspect 1: Het wiskundige algoritme dat aan de specifieke blockchain ten grondslag ligt.
- Aspect 2: De eis die wordt gesteld aan de hashes in die specifieke blockchain.
Het eerste aspect hangt samen met de digitale muntsoort (ook wel cryptovaluta genoemd) die in een blockchain wordt gebruikt. De oudste en meest bekende soort is bitcoin. Feitelijk is deze valuta niks anders dan een complete economische transactiegeschiedenis, vastgelegd in een blockchain die bij transacties de rekeneenheid bitcoin hanteert en waarbij blocks aangemaakt worden met een algoritme dat hoort bij aanmaak van de muntsoort bitcoin.
Let op: iedereen die een nieuw algoritme heeft bedacht om daarmee blocks op een bepaalde, nieuwe manier aan te maken (minen) en daarbij in die blocks een vaste, nieuwe rekeneenheid definieert voor alle transacties, creëert daarmee zélf een nieuwe cryptomunt. Net als bitcoin dat is.
Het tweede aspect hangt ook samen met de muntsoort, maar betreft een specifieke eis die aan de hashes in de chain worden gesteld. In de versimpelde tabel uit de vorige introductie zagen we bijvoorbeeld dat elke nieuwe blockhash met vier nullen begon.
Wat een miner in dit voorbeeld nu doet (met een klein bedrag aan munteenheid als beloning) is nagaan hoe het algoritme van de specifieke cryptocurrency en de exacte inhoud van een block een uitkomst produceert die met de vereiste vier nullen begint.
Nonce
Minen is dus een probeerpuzzel leggen. Dat wil zeggen, heel vaak een ander getal in het algoritme plaatsen, totdat er met de concrete inhoud van de records en de hash van het vorige block een acceptabele nieuwe hash (vier nullen) uit dat algoritme rolt. Dit ene getal heet een nonce en hoort dus bij zowel de inhoud van het block als bij (het algoritme van) de specifieke cryptomunt. Alleen in dat algoritme en met die inhoud zorgt de betreffende nonce voor een hash met vier nullen.
In een grote blockchain worden nieuwe blocks dus aangeboden door miners, die daarmee hun geld verdienen. De miner die als eerste de volgende nonce vindt en waarvan z’n proof of work (of proof of stake) door de andere nodes wordt geaccepteerd, mag de nieuwe hash en daarmee het nieuwe block aan de chain toevoegen, waarna het door alle andere nodes kan worden gekopieerd en toegevoegd aan hun kopie van de chain. Vervolgens kunnen de transacties in dat block worden gecheckt en uitgevoerd (credible) of geskipt (overspent).
Cryptocurrency is daarmee dus een bijzonder slim en intussen zeer populair gebruik van blockchain. Dat er met blockchain nog veel meer mogelijk is, lees je in mijn volgende blog.