Blockchain, what’s all the fuss about?!

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 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.

Blockchain@4x

Bitcoin

In 2008 verscheen een paper van Satoshi Nakamoto (een pseudoniem) genaamd ‘Bitcoin: A Peer-to-Peer Electronic Cash System’ (https://bitcoin.org/bitcoin.pdf), 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.

Uitdagingen

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 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

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: https://anders.com/blockchain/hash.html. 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 1 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.

Consensus door Proof of Work

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 0-en. 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 1 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 0-en) 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 0-en bepaalt de moeilijkheid. Deze wordt dynamisch bepaald om de toenemende rekenkracht te compenseren. Gemiddeld wordt een block in 10 minuten ge-mine-d, waardoor afgedwongen wordt dat de miner er flink energie in heeft gestoken.

Indien 2 miners vrijwel gelijktijdig een oplossing vinden, ontstaat er een afsplitsing. In het netwerk zijn nodes die oplossing 1 als eerstvolgend block hebben opgevoerd, en er zijn nodes die oplossing 2 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% 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% 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.

Het blockchain netwerk 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 2 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% 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!

Pseudonimiteit

Is Bitcoin dan het platform voor illegale activiteiten als geld witwassen? Nee, juist niet. Doordat het een open grootboek is, zijn alle(!) transacties en waarden in wallets voor iedereen inzichtelijk. Is iemands adres bekend, dan zijn zowel de waarde als alle transacties zichtbaar. Private key kwijt of bitcoins gestolen? De bitcoins zijn zichtbaar, maar niet meer te gebruiken en door niemand (door de afwezigheid van een centrale partij) te herstellen.

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. 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.

Smart contracts en Dapps

Naast Bitcoin wint ook het blockchain platform 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 genoemd. Decentralised applications. Vooral deze smart contracts en Dapps bieden enorm veel kansen de komende jaren. Daarover later meer.

Benieuwd wat Blockchain voor jouw organisatie kan betekenen? Bel me gerust!

Meer informatie

victor-van-der-hulst

Victor van der Hulst

Managing Consultant

+31 6 22 98 68 76 Stuur Victor een e-mail

Reacties

Er zijn nog geen reacties op dit bericht.

Plaats een reactie

Dit veld is verplicht.

Vul een geldig e-mailadres in.

Dit veld is verplicht.