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 zesduizend euro waard, ruim vijf 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 2 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 60 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?
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 blockchain platform is een wallet nodig. 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 hashing.
Hashing en blocks
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. Probeer het hier. En hoe komen deze transacties nu terecht in een block?
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.
Consensus door proof of Wwork
De puzzel die opgelost moet worden is weer een hash, maar dan zodanig dat er gezocht moet worden naar een hash met een specifieke uitkomst. Namelijk een hash-uitkomst van de inhoud van het block, die moet beginnen met een x-aantal nullen. Doordat op voorhand de uitkomst van een hash-functie niet is te bepalen, kan een node (een miner) de puzzel alleen oplossen door zoveel mogelijk keren te proberen. Dit doen de miners door de waarde van een speciaal veld nonce steeds met één te verhogen. Doordat daarmee de invoer van de hash verandert, is de uitkomst ook elke keer anders.
Omdat er een enorme hoeveelheid pogingen gedaan moet worden om een geldige uitkomst (startende met een x aantal nullen) te vinden, wordt dit ‘proof of work’ genoemd. De miner heeft er enorm veel werk (en dus elektriciteit) in moeten steken om de uitkomst te vinden. Als beloning ontvangt deze miner de nieuwe bitcoins en kan het block worden toegevoegd aan de keten. Alle andere miners controleren de uitkomst door de hash van het block te controleren, alvorens deze zelf ook toe te voegen.
Ongeldige blocken worden door de andere miners niet geaccepteerd (en daarmee de beloning ook niet). Het aantal gezochte nullen bepaalt de moeilijkheid. Deze wordt dynamisch bepaald om de toenemende rekenkracht te compenseren. Gemiddeld wordt een block in tien minuten ge-mine-d, waardoor afgedwongen wordt dat de miner er flink energie in heeft gestoken.
Indien twee miners vrijwel gelijktijdig een oplossing vinden, ontstaat er een afsplitsing. In het netwerk zijn nodes die oplossing één als eerstvolgend block hebben opgevoerd, en er zijn nodes die oplossing twee als eerstvolgend block hebben opgevoerd. Doordat er een verschil zit in oplossingsnelheid van de puzzels, zal een van beiden op een gegeven moment meer blokken bevatten dan de andere. Hier geldt dat de langste ketting (longest chain) wint. De kortere rij blokken verdwijnt en de transacties in deze blokken worden aan nieuwe blokken toegevoegd. Ook de beloningen voor deze blokken vervallen, wat ervoor zorgt dat er een incentive is voor miners die altijd kiezen voor de longest chain.
Veiligheid
De inzet van cryptografie, decentralisatie en proof of work heeft een aantal belangrijke functies:
- Vooraf is niet te bepalen wie de proof of work wint. Dus wil je een frauduleuze transactie doorvoeren kun je je niet richten op een specifieke miner.
- Alle andere miners controleren het toegevoegde block. En alleen wanneer de meerderheid het block overneemt, is het een geldig block. Een kwaadwillende zal dus minimaal 51 procent van de nodes moeten bezitten (wat vrijwel onmogelijk is).
- Een fraudeleuze transactie kan worden doorgevoerd door te proberen zelf de longest chain te bemachtigen. Hiervoor is minimaal 51 procent van de rekencapaciteit nodig. Dit vergt een enorme investering in hardware en elektriciteit. Met de huidige omvang lijkt dit vrijwel onmogelijk.
- Het aanpassen van een transactie in een eerder goedgekeurd block is niet mogelijk, omdat daarmee de hash van het block verandert. En deze hash wordt weer als input meegenomen in de hash van het volgende block. Het wordt duidelijk dat het aanpassen van een transactie achteraf direct opvalt in het netwerk.
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!
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. Er zijn schattingen dat in 2020 het Bitcoin-netwerk net zoveel energie verbruikt als heel Denemarken. Er wordt dan ook gekeken naar een alternatieve manier: de proof of stake.
- 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 7 transacties per seconden kunnen worden uitgevoerd. Veel te weinig voor grootschalig gebruikt.
Ik kan overigens nog wel meer nadelen van bitcoin opnoemen.
4% van de bitcoin adressen (wallets) bezit 96% van het aantal bitcoin. Hiermee kan bijvoorbeeld de koers op de diverse exchanges enorm beïnvloed worden en daarmee wordt enorm veel geld verdiend. Dit bitcoin markt wordt op meer dan 100 miljard gewaardeerd terwijl de werkelijke geldstroom extreem veel kleiner is en vooral door die 4% eigenaar gerealiseerd wordt. Dat zijn dus ook de mensen die werkelijk verliezen “als het mis gaat” terwijl juist die het gevoel hebben dat ze onderdeel van een groot systeem zijn.
Ook wordt er enorm veel gehackt en gescammed. Het is allemaal ingewikkeld genoeg, maar de kans dat je geld verliest is significant. Alles wat door jarenlange ervaring op de beurs verboden is, wordt hier nog vrij beoefend. Als er een crash komt, dan kun je nergens meer je bitcoin terug naar euro’s vertalen.
Een nadeel van bijvoorbeeld ETH is dat de software geschreven is in C. Een taal die zeer moeilijk veilig te maken is. Zo kunnen gevonden kwetsbaarheden grote gevolgen hebben, juist omdat er zoveel met ETH mogelijk is.
Schaalbaarheid is een fundamenteel probleem voor de blockchain. Mogelijk wordt dit ooit opgelost door blockchain op te delen, maar dat kan eigenlijk niet, want dan wordt het onmogelijk om iemands bezit na te gaan… Alles moet in het grootboek, dus door de tijd heen blijven we dat immer groeiende grootboek met ons meezeulen.
Bitcoin is veel minder decentraal als dat verkondigd wordt. Niet alleen door de grootbezitters, maar ook omdat er maar een klein clubje feitelijke controle over de code heeft.
Transaction fees bij bitcoin zijn hoog. Dit wordt vaak weggelachen want echt geld over de wereld verplaatsen is nu eenmaal traag en duur. Maar als je geld van je online wallet verplaatst naar je offline / on-site wallet betaal je ook al transactie kosten. Dus als je tien keer van borstzak / vestzak verplaatst is je geld op 🙂
Ik kan nog even doorgaan, en ook ik heb bitcoin (FOMO, anyone?), maar het is een brak systeem wat nog veelsteveel krediet krijgt.
Virtueel geld, cryptogeld heeft toekomst. Daar twijfel ik niet aan, mogelijk wordt het zelfs dominant, net zoals iedereen internet heeft, maar er gaan nog wat pijnlijke leerscholen plaatsvinden voor het zover is.
Steek er niet meer geld in dat je zou kunnen missen. Sowieso moet je er tijd in steken voordat je begint, anders is de kans groot dat je geld kwijt raakt. Cryptogeld kun je makkelijk verliezen en dan gaat het overigens ook voor altijd verloren…..
Victor dank voor je uitleg.
Ik heb het nog niet helemaal in technisch detail door maar het princype van Mining is me inmiddels een stuk duidelijker.
Henri, ETH ? FOMO ? En vooral transactie-Fee ? bedoel je conversie tussen crypto en Euro’s (wat ook niet meer is dan een getalletje op een computer)
Henri, klopt niet helemaal wat je aangeeft: https://bitinfocharts.com/top-100-richest-bitcoin-addresses.html. Rijkdom is sowieso toch niet eerlijk verdeeld? Ongeacht welke waarde (vastgoed, valuta, aandelen, goud, etc) je hanteert.
Verder staat het nog in de kinderschoenen en gaat er zeker her en der leergeld betaald worden. Het internet begon echter ook met: http://info.cern.ch/hypertext/WWW/TheProject.html
ETH = Ethereum, een blockchain vooral gericht op smart contract (bespreek ik in mijn volgende bijdrage!)
Voor FOMO en ander crypto-‘slang’: https://captainaltcoin.com/blockchain-glossary/