Blockchain – een korte introductie


Blockchain

Hoe is het ontstaan?

Het idee van een blockchain, dat wil zeggen een gedistribueerde overeenkomstverwerker, is al erg oud. De theoretische voordelen ervan zijn al een tijdje bekend, maar het was niet praktisch uitvoerbaar. Tot de technologie langszij kwam. Het systeemontwerp voor de Blockchain is ontstaan toen Satoshi Nakamoto een nieuw elektronisch betaalmiddel aan het ontwerpen was. Hij liep tegen het double spending problem aan.

Blockchain.png

Double spending problem

Wanneer iemand een overeenkomst sluit en betaald met digitaal geld, hoe zorg je er dan voor dat diegene – per ongeluk of bedoeld – de transactie niet twee (of meer) keer kan doen? Met andere woorden, hoe valideer je een overeenkomst en zorg je dat een transactie eerlijk verloopt voor zowel koper als verkoper?


Meestal wordt het double spending problem opgelost door een derde partij aan een overeenkomst toe te voegen: een tussenpersoon of intermediair. Deze derde persoon, die door beide andere partijen wordt vertrouwd, controleert of de overeenkomst eerlijk verloopt.

Maar Nakamoto was niet op zoek naar een oplossing met een tussenpersoon en bedacht als oplossing een “block chain(toen inderdaad nog met een spatie). In 2009 publiceerde Nakamoto ‘Bitcoin: A Peer-to-Peer Electronic Cash System’ waar hij de blockchain-techniek uitlegt en het double spending problem oplost zonder tussenkomst van een vertrouwde tussenpersoon.

De principes van deze Bitcoin-blockchain zijn in alle andere blockchain oplossingen terug te zien. Maar, met klem: blockchains en Bitcoins zijn absoluut geen synoniemen. De enige link die er tussen deze twee begrippen bestaat is dat Bitcoin gebruikt maakt van (een) blockchain om haar overeenkomsten te valideren.


Blockchain

Wat is het nou precies?

Voor veel mensen is en blijft de term blockchain nogal ongrijpbaar en vaag. Dat komt omdat het een brede term is die meerdere soorten technologieën kan beschrijven. Toch is het idee in de basis vrij simpel.


Blockchain

Blockchain is een digitaal systeem waarbinnen overeenkomsten worden gesloten en de geschiedenis van deze overeenkomsten gevolgd kan worden in een netwerk. Een overeenkomst kan hier van alles zijn: financiële overeenkomsten, data uitwisseling, contracten, etc. De overeenkomsten worden bewaard in  blokken (hier later meer over) die door middel van encryptie met elkaar zijn verbonden.

Amsterdam Zuidas (2).png

Verschillende blockchains hebben eigen regels voor validatie en kennen vaak een andere manier van encryptie. Maar overeenkomsten binnen verschillende blockchains volgen altijd dezelfde principes, die garanderen dat een overeenkomst succesvol en eerlijk zal verlopen.


Principes van blockchain overeenkomsten

  1. Partij A initieert een overeenkomst.
  2. De overeenkomst wordt naar alle deelnemers van een netwerk verstuurd.
  3. Elke deelnemer kijkt of de overeenkomst voldoet aan de opgestelde validatieregels.
  4. Gevalideerde overeenkomsten worden in een blok opgeslagen en door encryptie veiliggesteld.
  5. Alle deelnemers controleren of de borging door encryptie klopt.
  6. Het goedgekeurde blok wordt door encryptie gelinkt aan het vorige blok.
  7. De overeenkomst ligt nu vast in de blockchain waardoor het niet meer aangepast of verwijderd kan worden.

Blockchain

Waarom willen mensen het?

Het sleutelwoord bij blockchain is vertrouwen. Net als andere overeenkomstmethodes garandeert blockchain een betrouwbare overeenkomst (geen volledige betrouwbaarheid, maar dat biedt geen enkele methode). Andere overeenkomstensystemen, zoals banken, leggen het vertrouwen in een enkele of verschillende autoriteiten (waaronder zichzelf). Een autoriteit zorgt voor een afhankelijkheid en is daarbij een risico. De validatie van overeenkomsten door een autoriteit moet altijd door één punt en als dat punt verdwijnt is validatie niet meer mogelijk.

Blockchain is gedistribueerd en duurzaam. De boekhouding aan overeenkomsten is gedeeld en wordt bij elk nieuw blok bij iedereen bijgewerkt. Het bestaan van de blockchain wordt door iedereen in het netwerk gedragen en is niet afhankelijk van een autoriteit of organisatie. Er is ook geen centrale waarheid – als er verschillen zijn tussen deelnemers komt dat omdat er nog geen waarheid is vastgesteld.

Unieker aan een blockchain is dat de overeenkomsten voor alle deelnemers transparant en controleerbaar zijn. Iedereen in het netwerk kan alle overeenkomsten inzien. Alle deelnemers kunnen overeenkomsten valideren en de identiteit van eigenaren verifiëren zonder tussenkomst van een autoriteit of derde partij. Eigendom is hierbij te herleiden naar overeenkomsten die openbaar zijn.

IMG_1827.jpg (1)

Het vertrouwen komt door consensus. Alle netwerkdeelnemers moeten het eens zijn met iedere overeenkomst. Door een consensus-algoritme worden de regels waar een overeenkomst aan moet voldoen bepaald. Het algoritme en de daaruit voortkomende regels zijn voor iedere blockchain anders.

Een laatste eigenschap van de blockchain is de onveranderlijke borging door encryptie. Niemand kan een overeenkomst aanpassen nadat deze aan de blockchain is toegevoegd. Overeenkomsten worden cryptografisch vastgelegd en vormen (een deel van) de basis voor alle overeenkomsten die volgen, waardoor ze onveranderd moeten blijven om de hele keten valide te houden.


Blockchain

Hoe werkt het?

De functionele eigenschappen van de blockchain, zoals hierboven beschreven, komen natuurlijk voort uit de technische eigenschappen van de blockchain. We gaan daar nu wat dieper op in. We hebben het over distributie, cryptografie en consensus. De details van deze technische eigenschappen verschillen per blockchain, maar we blijven hier globaal genoeg om over generieke eigenschappen te kunnen spreken.

I - Distributie

Deelnemers aan een blockchain (de zogenaamde nodes in het netwerk) hebben elk toegang tot een kopie van de huidige versie van de blockchain. Daardoor kunnen ze nieuwe overeenkomsten valideren aan de hand van de eigen kopie. De peer-to-peer eigenschap van een gedistribueerd netwerk zorgt ervoor dat een overeenkomst rechtstreeks tussen zender en ontvanger plaatsvindt, zonder tussenkomst van een intermediair. Het feit dat een blockchain gedistribueerd is betekent ook dat nodes weg kunnen vallen zonder dat de integriteit of stabiliteit van het netwerk in gevaar komt.

Blockchain - Gedistribueerd netwerk.png

Bij een centrale netwerkstructuur zouden overeenkomsten eerst door het centrale punt moeten voordat de overeenkomst bij de ontvanger terecht kan komen. Deze structuur is kwetsbaar. Want wanneer het centrale punt wegvalt, is er geen overeenkomstmogelijkheid meer. Facebook is bijvoorbeeld centraal, al je berichtjes worden op één centrale plek opgeslagen. Daarbij is alles wat jij op Facebook ziet ook op één centrale plek opgeslagen.

Een decentraal netwerk heeft nog steeds last van centrale punten waar overeenkomsten doorheen moeten. In een decentraal netwerk zijn de centrale punten van de groepen met elkaar verbonden.Wanneer een centraal punt wegvalt, zijn niet alle groepen meer bereikbaar. Hierdoor zijn de centrale punten nog steeds kwetsbaar.
E-mail kun je zien als decentraal. De e-mailservice die je gebruikt, bewaart jouw mail op een server. Een ontvanger kan een andere e-mailservice gebruiken en slaat mail op een andere plek op. Die servers communiceren met elkaar en zorgen ervoor dat je elkaars mail kan lezen.

Bij een gedistribueerd netwerk, ook wel mesh of peer-to-peer genoemd, zijn deelnemers vrij om met elkaar verbindingen te maken. Wanneer een deelnemer wegvalt, zijn er nog steeds vele mogelijkheden om via andere deelnemers een (nieuwe) verbinding te maken. Door de vele verbindingen is het netwerk goed bestand tegen aanvallen en heeft het een grote veerkracht.

II - Cryptografie

Alle overeenkomsten worden geborgd in blokken, met een bepaald aantal overeenkomsten per blok. Een blok bevat naast de overeenkomsten (de “body”, zogezegd) een header. Hierin staat identificerende informatie van het blok en blockchain protocol, bijvoorbeeld de protocol versie en een referentie naar het vorige blok. Een blockchain begint met een eerste blok genaamd de genesis. Dit blok krijgt een unieke waarde in de header, de genesis hash (een hash is een cryptografische functie waarmee een unieke waarde van een bepaald aantal karakters wordt gegenereerd). In deze header staat ook de merkle root, dit is simpel gezegd de hash van alle overeenkomsten. Er staat meer in deze header, zoals een tijdsaanduiding en een nonce, een unieke en willekeurige cijferreeks. Dit is allemaal bedoeld om de header zo uniek mogelijk te maken.

Het volgende blok na het genesis blok is blok 1. Dit blok bevat de hash van de header van het genesis blok. Hiermee zijn de overeenkomsten uit het genesis blok cryptografisch geborgd in blok 1. Bij ieder nieuw blok wordt de data van het vorige blok, waaronder dus de hash van de header van het blok dáárvoor, gebruikt om alle vorige overeenkomsten te borgen. Deze cryptografische eigenschap is de essentie van een blockchain.

De naam cryptocurrency komt hier ook vandaan: deze betaalsoorten zijn veilig dankzij cryptografie.

III - Consensus

Iedere blockchain heeft een andere manier van validatie. Bij Bitcoin heet dit het proof of work-protocol – bewijs dat iemand significante hoeveelheid rekenkracht heeft gebruikt voor het oplossen van een cryptografisch probleem. Dit is een probleem wat bewust zeer moeilijk op te lossen is, maar zeer makkelijk te verifiëren is. Een voorbeeld hiervan is het iteratief proberen om tot een bepaalde hash te komen. Dit wordt mining genoemd omdat degene die het oplost een beloning krijgt. Een andere manier is proof of stake, hierbij wordt de validatie van het volgende blok op basis van willekeur geselecteerd. Dit is om te ondervangen dat degene met de meeste rekenkracht een monopolie heeft op het valideren van overeenkomsten.

Iedere blockchain kan een ander consensusprotocol hanteren. Meestal zijn dit verbeteringen op bestaande protocollen of zijn ze meer geschikt voor de beoogde toepassing. Veel consensusprotocollen zijn een verbetering op proof of work, naast proof of stake heb je onder andere proof of burn en proof of space.


Blockchain

Wat zijn de toepassingen?

Veel blockchains bieden de mogelijkheid om overeenkomsten te maken met (nieuwe) cryptocurrency coins of tokens. Deze hebben een bepaalde waarde die uit te drukken is in market capitalization (prijs maal circulerende voorraad), de relatieve marktwaarde ten opzichte van andere cryptocurrencies. De dominantie van Bitcoin is niet meer zo groot als het is geweest en ligt binnen de markt rond de 35 procent, het actuele percentage is te vinden op Coinmarketcap. In het geval van Bitcoin borg je alleen een cryptocurrency-overeenkomst, maar met blockchain kun je nog meer borgen.

De market capitalization van andere cryptocurrency is logischerwijs toegenomen. Zo is Ethereum met een market capitalization van ruim 15 procent de tweede cryptocurrency. Ethereum is gestart in 2014 en opgezet om smart contracts te borgen.


Smart contracts

Dit zijn applicaties, die je zelf kunt programmeren, die uitval, censuur, fraude of tussenkomst van derde partijen tegengaat door middel van blockchain. Een van de toepassingen is het afsluiten van contracten met meerdere partijen waarbij je alle verschillende voorwaarden dynamisch met iedere partij kunt regelen.

Bitcoin & Ethereum (1).png

Smart contracts zijn een gigantische stap binnen de blockchainmogelijkheden en er wordt dan ook met recht gesproken van een tweede generatie. Je spreekt niet “slechts” meer van gedistribueerde databases maar echt van gedistribueerde apps (dapps).

Zoals gezegd: niet alle blockchains zijn voor cryptocurrency. Naast de financiële oplossingen en smart contracts kun je ook denken aan supply chain oplossingen. Je kunt de overeenkomsten behorende bij een productieproces, van product origine tot eindproduct voor de consument, borgen. Dit geeft bijvoorbeeld inzicht in de mate van Fairtrade, waardoor je zeker kan zijn van de herkomst van je product. Denk aan een koffieplanter die bonen verbouwt en borgt waar, wanneer en waarmee hij ze laat groeien. Of waar, wanneer en voor welke prijs de boer de bonen verkoopt. Wanneer je uiteindelijk verwerkte koffie in huis haalt weet je als consument precies en met zekerheid wat er met de koffie is gebeurd.

Naast de genoemde voorbeelden kan de blockchain nog in vele andere domeinen van pas komen. Denk hierbij aan beveiliging, communicatie, data, identiteit, gaming, gokken en privacy. Een andere toepassing is het borgen van leerervaring en competenties. Zie de koffieboon van hierboven dan als student; hij wordt niet verhandeld, maar leert op school, bij bedrijven en online. Het zou voor de (eeuwige) student geweldig zijn als al deze leer- en werkervaringen op een innovatieve manier geborgd kunnen worden. Er zijn nog veel meer toepassingen te bedenken.


Blockchain

Hoe zet ik er zelf één op?

We sluiten af met een stukje theorie specifiek voor softwaredevelopers (en analisten, en testers). In Azure is het sinds 2016 goed mogelijk om een blockchain op te zetten.

Microsoft’s Blockchain as a Service (BaaS) bevat in feite alle features die hierboven zijn aangestipt. Je kan een blockchain aanmaken met meerdere nodes, hashing, mining, consensus, distributie en meer. Omdat je op Azure zit is het ook eenvoudig om andere services, zoals Blockchain-Data analytics en Blockchain-AI, met BaaS te combineren.

BaaS is een op Ethereum gebaseerd netwerk waarbij je Virtual Machines als nodes kan gebruiken. Het opzetten van de omgeving kan door de stappen te volgen in deze handleiding.


Bronnen


Blockchain - een korte introductie

Betabitter Jelle