In de weekendbijlage van een gemiddelde krant staat bijna wekelijks een artikel over bitcoin en blockchain. Vooral door de flinke waardestijging van de bitcoin, de digitale munt die sinds 2009 bestaat. Inmiddels meer dan 3500 euro waard, ruim drie keer zo hoog als op 1 januari 2017. Maar achter de bitcoin schuilt technologie genaamd blockchain. En hierin zit pas echt de vernieuwing. Een introductie op bitcoin en blockchain.
In 2008 verscheen een paper van Satoshi Nakamoto (een pseudoniem) genaamd ‘Bitcoin: A Peer-to-Peer Electronic Cash System’, waarin een platform werd beschreven waarmee veilig elektronische betalingen kunnen worden uitgevoerd, rechtstreeks tussen twee partijen. In 2009 is dit platform live gegaan en daarmee was de bitcoin geboren. Acht jaar later is bitcoin verreweg de grootste (in marktkapitalisatie) digitale munt: meer dan zestig miljard euro. Dat Bitcoin tot deze omvang is gekomen, heeft alles te maken met de onderliggende technologie blockchain. En blockchain biedt veel meer mogelijkheden dan digitale munten, zoals smart contracts en Dapps.
Bij het creëren van een digitale munt spelen een aantal uitdagingen:
– hoe voorkom je ‘double spending’: iemand probeert dezelfde ‘munt’ twee keer uit te geven;
– hoe voorkom je de noodzaak van vertrouwen hebben in een andere partij (de bank);
– hoe voorkom je dat iemand kan frauderen met transacties;
– hoe voorkom je dat iemand het netwerk ter gronde kan brengen.
Door een ingenious decentraal, open platform te ontwikkelen, gebruikmakend van cryptografie, zijn al deze uitdagingen ondervangen. Maar hoe dan?
Blockchain
Zoals het woord al doet vermoeden is de blockchain een ketting van blokken. Blokken van transacties. Het kan het best beschreven worden als een decentraal, open, niet wijzigbaar grootboek. Een grootboek is niets meer dan een lijst met transacties die uitgevoerd zijn. Nieuwe transacties worden onderaan toegevoegd en wijzigen van eerdere regels is niet toegestaan. En waarom biedt een dergelijk grootboek dan een oplossing voor eerder genoemde uitdagingen?
Decentralisatie. Allereerst is er gekozen voor een decentrale opzet, waarin alle partijen die meedoen aan de blockchain een letterlijke kopie van dit grootboek hebben. Van de allereerste transactie tot de meest recente. Al deze partijen, nodes genaamd, distribueren alle toevoegingen (nieuwe transacties) naar elkaar. Er is dus geen centrale partij die de waarheid beheert. Iedereen heeft de waarheid en heeft daardoor ook inzicht in frauduleuze activiteiten van een andere partij, doordat wijzigingen van een ander niet meer corresponderen met het eigen grootboek. Er is dus geen vertrouwen in een centrale partij nodig, en het platform is vrijwel niet plat te leggen (dit lukt alleen als alle nodes zijn platgelegd). Naast de decentrale opzet gebeurt dit door de inzet van cryptografie en een consensus-aanpak. Laten we eens inzoomen hoe dit werkt:
Cryptografie. Om deel te kunnen nemen aan een blockchainplatform is een zogenaamde wallet nodig. Dit is de digitale vorm van een portemonnee, waarmee je transacties kunt uitvoeren en munten (cryptocurrencies) kunt bewaren. Een wallet werkt met een combinatie van een public en private key. Op basis van je public key wordt een address gemaakt. Dit adres (vergelijkbaar met een e-mailadres) gebruik je voor betalingen. Iedereen kan bijvoorbeeld bitcoins naar je overmaken door simpelweg dit adres te gebruiken. Je private key wordt (door je wallet) gebruikt om transacties uit te voeren. Beschouw je private key als je pincode. Wanneer je deze kwijt bent, kun je onmogelijk meer bij de inhoud van je wallet. En indien iemand de beschikking heeft gekregen over je private key, kun je je wallet als gestolen beschouwen.
Door elke transactie te ‘signeren’ met een private key, kunnen de nodes deze transactie controleren met de bijbehorende public key. Alleen deze combinatie van keys ‘passen’ op elkaar. Hierdoor wordt gegarandeerd dat de transactie alleen kan worden ingegeven door de eigenaar van de private key: de bezitter van de betreffende bitcoins. En door niemand anders. Maar hoe voorkomen we nu dat er met de inhoud van de transactie wordt gesjoemeld? Door gebruik te maken van hashing.
Hashing. Een hash is een deterministische functie die een ongelimiteerde invoer kent, en altijd een uitvoer kent van een vast aantal cijfers en letters. Bied je twee keer een identieke tekst als invoer aan, dan is de uitvoer exact gelijk. Verander je één letter, dan is de uitvoer totaal verschillend. De uitkomst van een hashfunctie is niet te voorspellen, en uit de uitvoer is de invoer niet te herleiden (het is geen encryptie). Door de inhoud van de transactie te hash-en, en de hash met een timestamp op te slaan op de blockchain, is door alle partijen na te gaan of de inhoud van de transactie is aangepast. Als deze is aangepast, correspondeert de uitvoer van de hash van de inhoud niet meer met de reeds opgeslagen hash. Probeer het hier. En hoe komen deze transacties nu terecht in een block?
Blocks. Alle transactieverzoeken worden in een blockchain doorgegeven naar alle nodes. In plaats van het verwerken van transacties bij binnenkomst, worden vele transacties verzameld in een block. Dit block wordt als geheel toegevoegd aan de blockchain. Er is slechts één node die het eerstvolgende block mag toevoegen aan de blockchain. En om te bepalen wie dat is, moeten de nodes een ingewikkelde puzzel oplossen. Degene die als eerste deze puzzel oplost, mag het volgende block toevoegen en krijgt een beloning: 12,5 bitcoin (op dit moment). Dit is tevens de enige manier waarop nieuwe bitcoins in omloop komen. Naast de beloning stuurt men ook een fee mee met een transactieverzoek. Op basis van deze fees wordt bepaald welke transacties prioriteit krijgen (de hoogste fees). Deze fees zijn ook voor de node die het block mag toevoegen.
Dit oplossen van een puzzel wordt mining genoemd. Voor het oplossen van deze puzzel is zeer veel rekenkracht nodig, terwijl het controleren van de oplossing juist weinig rekenkracht vergt, en dus door alle nodes kan worden uitgevoerd. Gemiddeld wordt een block in tien minuten ‘gemined’, waardoor afgedwongen wordt dat de miner er flink energie in heeft gestoken.
Veiligheid
Het blockchainnetwerk van Bitcoin heeft een enorme omvang aangenomen, en biedt een platform waarmee rechtstreeks, zonder tussenkomst van een centrale partij als een bank, transacties kunnen worden uitgevoerd tussen twee partijen die elkaar op voorhand niet kennen en niet hoeven te vertrouwen. Sinds de start is de veiligheid gebleken. Het is vrijwel onmogelijk om 51 procent van de rekencapaciteit te controleren. Nog nooit is Bitcoin gehackt of uitgevallen. Wel zijn er hacks geweest, echter altijd in de software bovenop de Bitcoin: vaak wallets en exchanges. Deze werden gehackt waardoor private keys gestolen werden en daarmee bitcoins. Het is zaak de private key dusdanig te bewaren dat deze ongevoelig is voor hacks!
Naast open blockchains zoals Bitcoin, zijn er ook private blockchains die alleen toegankelijk en leesbaar zijn door partijen die zijn toegelaten op de blockchain. Veelal is er een centrale partij die de blockchain beheert en de toegang bewaakt. Een aantal voordelen vervalt hiermee en ik laat deze vorm voor nu buiten beschouwing.
Nadelen
Bitcoin en blockchain zijn platformen die geweldige mogelijkheden (gaan) bieden, vergelijkbaar met de opkomst van internet rond 1994.
Wel zijn er ook een aantal nadelen aan de werking van Bitcoin, zoals we die nu kennen:
- De Proof of Work kost enorm veel energie;
- De gebruiksvriendelijkheid valt nog tegen. Enerzijds erg technisch (keys, wallets en adressen) en anderzijds valt er bijna nergens te betalen met bitcoin;
- Ook wordt de schaalbaarheid bediscussieerd. Een block kan maximaal 1MB groot zijn. Dit houdt in dat er maximaal zo’n zeven transacties per seconden kunnen worden uitgevoerd. Veel te weinig voor grootschalig gebruikt.
Smart contracts en Dapps
Naast Bitcoin wint ook het blockchainplatform Ethereum aan populariteit. Waar Bitcoin vooral een digitale munt aanbiedt, biedt Ethereum een decentraal applicatieplatform aan voor smart contracts, gebouwd op een blockchain. Dit betekent dat het platform niet kan uitvallen, er niet gefraudeerd kan worden en er geen centrale partij is die vertrouwd dient te worden. Op dit platform kunnen smart contracts worden ontwikkeld. Smart contracts zijn kleine programma’s die geheel autonoom kunnen werken, wanneer ze worden aangeroepen. Hiermee is het mogelijk afspraken, die vaak in een contract staan, automatisch en veilig te laten uitvoeren. Om dit contract te laten uitvoeren is ‘ether’ nodig, de digitale munt van Ethereum. Hiermee wordt feitelijk betaald voor de rekenkracht die nodig is het contract uit te voeren.
Door een aantal contracten aan een elkaar te koppelen kunnen applicaties worden gebouwd. Deze applicaties, draaiend op Ethereum, worden ‘Dapps’ (decentralised applications) genoemd. Vooral deze smart contracts en Dapps bieden de komende jaren enorm veel kansen.
En waarom is blockchain een belangrijke innovatie? Vooral omdat het een enorme verschuiving veroorzaakt van centrale georganiseerde systemen (currencies, cloud storage, social media, predictions, et cetera) naar decentrale systemen waar niemand eigenaar van is: sneller, goedkoper en veilig.