Hoofdmenu openen

Blockchain

gedistribueerd dataopslagsysteem voor digitale transacties
Gevisualiseerde blockchain: de hoofdketting bevat de langste reeks van gegevensblokken vanaf het oorspronkelijke blok (groen). De paarse blokken zijn afsplitsingen van de hoofdketting en kunnen daar nooit terug op aansluiten.
Schematisch overzicht van de blockchain van onder meer bitcoin. Bovenaan staan drie block headers. Blok 11 wordt schematisch in zijn geheel getoond.

Een blockchain (Nederlands: blokketen) is een systeem dat gebruikt kan worden om gegevens vast te leggen. Dit kunnen bijvoorbeeld overschrijvingen zijn zoals die bij een reguliere bank mogelijk zijn, maar kan ook eigendomsaktes, afspraken, persoonlijke berichten of andere gegevens bevatten. Het bijzondere aan de blockchain is dat dit mogelijk is zonder centrale autoriteit waardoor het vervalsen van de vastgelegde gegevens niet mogelijk is door één centraal punt te corrumperen. De bekendste implementatie van de blockchain is de Bitcoin, een vorm van cryptogeld.

Het is daarbij een eenvoudig te controleren systeem volgens welke opeenvolgende blokken aan elkaar gerelateerd behoren te zijn, zodanig dat naast verlengen alleen vertakken van de keten praktisch mogelijk is, niet het bij elkaar komen van twee takken. Binnen dit systeem zijn twee even lange ketens met hetzelfde laatste blok daardoor vrijwel zeker gelijk.

De hele terminologie behorende bij blockchain is in het Engels.

Inhoud

BasisprincipeBewerken

De data wordt opgeslagen in zogenaamde blokken, dat zijn gewoon lijsten met transacties of andere gegevens. Het block wordt afgesloten met de hash van alle gegevens in het betreffende block. In het volgende block wordt de hash van het voorgaande block opgenomen waardoor de blokken naar elkaar verwijzen en er een zogenaamde chain (ketting) ontstaat. Elk block is daarmee als volgt opgebouwd:

  • De hash van het voorgaande block. Alleen het oudste block van de chain (het zogenaamde Genesis block) bevat deze niet.
  • Toegevoegde datarecords. Deze records kunnen door verschillende gebruikers worden toegevoegd. Om te controleren of een bepaald gegeven inderdaad door een bepaalde gebruiker is aangeleverd is deze voorzien van een elektronische handtekening die alleen door deze gebruiker gegenereerd kan worden maar door iedereen geverifieerd.
  • De hash van het geheel. Deze dient als een soort serienummer.

Om de zoveel tijd wordt een nieuw block gegenereerd, dit wordt minen genoemd. Nadat een nieuw block gemaakt is moet het nog door alle deelnemers op het netwerk, de nodes geaccepteerd worden. Op deze manier ontstaat een soort database waarvan alle nodes de legitimiteit kunnen controleren. Een nieuw block wordt alleen geaccepteerd als het de hash van het laatste block bevat en bij alle gegevens een juiste elektronische handtekening staat. Soms zijn extra verificaties nodig, bijvoorbeeld bij financiële transacties waarbij iemand voldoende saldo moet hebben voordat deze een transactie mag doen. Een block is pas legitiem als de meerderheid van de nodes het geaccepteerd heeft. Soms ontstaat er onenigheid, bijvoorbeeld als twee nodes tegelijk een nieuw block hebben gemaakt en de overige nodes deels het ene en deels het andere block accepteren. Dit wordt een fork genoemd en is bijna altijd tijdelijk van aard. Beide blocken zijn legitiem waardoor er tijdelijk twee versies van de waarheid bestaan. Na verloop van tijd wordt ontstaat er toch weer consensus en wordt de ene versie van de waarheid geaccepteerd en de andere vergeten.

Een blockchain werkt dus als een gedistribueerde database waarbij alle nodes die actief zijn een kopie bijhouden en elkaar controleren.

VariantenBewerken

Een blockchain kan openbaar zijn, wat vaak samengaat met de mogelijkheid voor iedereen om als node op te treden. Dit vergt speciale voorzieningen om bescherming te bieden tegen manipulatie en vervalsing,[1] zoals het veelgebruikte systeem proof of work.

Een blockchain kan ook besloten zijn, waarbij een autoriteit of vaste regels bepalen wie node is of kan worden.[2]

Verder zijn er per toepassing regels, die aangeven hoe de gegevens in blokken worden verwerkt.

ConsensusvariantenBewerken

Er bestaan verschillende consensusvarianten, waaronder:

  • Proof of work, dit is de bekendste en wordt gebruikt door Bitcoin, Ethereum, Zcash en Monero
  • Proof of stake, deze is minder bekend en wordt gebruikt door EOS.IO, Steem en Tezos
  • Proof of authority
  • Proof of space[3]

GeschiedenisBewerken

De eerste die een vorm van cryptogeld ontwierp, die de bitcoin ontwierp, was iemand, of een groep, die onbekend is gebleven, maar die onder het pseudoniem Satoshi Nakamoto werkte.[4] Ethereum is een platform, dat voortdurend aan blockchains rekent. Onder andere Joseph Lubin en Vitalik Buterin hebben aan de ontwikkeling van Ethereum meegewerkt.

Openbare blockchain met proof of workBewerken

Vaak is er geen centrale autoriteit en zijn het ketensysteem, de regels voor het daarin verwerken van data, en de blockchain zelf openbaar, zodat iedereen kan controleren of de keten aan alle regels voldoet. Iedereen kan node worden. Dit wordt wel aangeduid als een permissionless blockchain. Hieronder wordt hiervan uitgegaan.

WerkingBewerken

Een blok bestaat uit:

  • de hash, hiermee wordt in dit verband altijd een cryptohash bedoeld, van het vorige blok. Dit verbindt de blokken als schakels in de keten, als het vorige blok wordt gewijzigd is dit gemakkelijk te constateren doordat deze hash dan niet meer klopt.[5]
  • de gegevens
  • de nonce, zie hieronder
  • de datum en tijd waarop het blok is gevonden

Hetzelfde, maar met in plaats van de eigenlijke data de top van de hash-boom daarvan (merkle root hash, in de illustratie aangegeven met Tx_Root), wordt de block header genoemd.

Het vinden van een blok begint met het controleren dat binnengekomen transacties voldoen aan algemene regels, zoals dat iemand een ontvangen tegoed niet een tweede keer uitgeeft, en eventueel speciale regels, zoals bij het uitvoeren van een smart contract. Uit het smart contract kan zelf een transactie voortvloeien, bijvoorbeeld bij een aflopende future.

Vervolgens wordt door wie dat wil, door de miners, een nonce gezocht waarbij de hash van het blok, of anders gezegd, de hash van de block header, aan bepaalde speciale eisen voldoet. Dit is doelbewust ontworpen dat het veel werk kost, als proof of work. Dit moet met brute force en heeft het gevolg, dat het zeer moeilijk is een blok te wijzigen als er blokken na zijn gekomen, want die moeten dan ook gewijzigd worden, dat wil zeggen opnieuw worden gevonden. In onder meer de bitcoinsoftware is de grootte van de nonce bepaald op 32 bits.[6] Dit geeft 232, dus ruim vier miljard, mogelijkheden. Vaak voldoet geen enkele aan de eisen, zoals blijkt door ze allemaal te proberen. De miner maakt dan inhoudelijk niet relevante wijzigingen in het blok, zoals het wijzigen van de volgorde van de transacties, of het gebruiken van een extranonce, een extra serie bits die veranderd kan worden zonder inhoudelijke consequenties. In zulke gevallen moet ook de top van de hash-boom opnieuw worden berekend.

Een gevonden blok bevat vaak automatisch een beloningstransactie, de uitgifte van een bedrag aan cryptogeld. Bij het vinden van een blok kan een deel van de transacties ook een beloning inhouden, namelijk als er een input van cryptogeld is die groter is dan de output ervan.

Het komt voor dat met twee takken wordt verdergegaan, een fork, meestal met in één tak gewijzigde regels, en ook weleens bij onenigheid over het terugdraaien van dubieuze blokken.

Vele miners concurreren om het eerst een blok te vinden. Het te vinden blok is om diverse redenen niet uniek. Zodra een blok gevonden is wordt dat blok bekendgemaakt. Als het correct blijkt heeft het voor de andere miners geen zin meer om te blijven zoeken naar een andere goede versie. Het feit dat men al veel werk heeft verricht om een blok te vinden vergroot nauwelijks de kans op het snel vinden van een blok. Ze gaan daarom vervolgens zoeken naar een blok dat voortbouwt op het nieuwe blok.

Nadere uitlegBewerken

Als aan een keten van blokken een nieuw blok wordt toegevoegd, dan is dit nieuwe blok gebaseerd op het vorige blok, op nieuwe data, en op een met veel rekenkracht gevonden bitreeks in het nieuwe blok (cryptografische nonce) waarbij de hash van het blok met een vereist aantal nulbits begint, volgens de cryptohashing. Het rekenwerk om de keten te verlengen kan dus pas beginnen als het vorige blok vaststaat.

Een blok wordt dus gekoppeld door middel van een verwijzing naar een vorig blok. Deze verwijzing is eigenlijk een cryptohash van de header van het vorige blok.[7] Bij een blockchain kan er worden gekozen om een extra moeilijkheid aan te brengen in het berekenen van deze verwijzing. Dit gebeurt door eisen te stellen aan de hash die wordt berekend. Er wordt gezocht naar een hash die met een aantal nullen begint. Hoe hoger het aantal geëiste nullen, hoe moeilijker het is om een hash te vinden. Deze methode is voor het eerst gebruikt om spam op e-mailadressen tegen te gaan.

Er kan van een hash niet worden afgeleid hoe de gegevens eruitzien. Het is de bedoeling dat een hash uniek is. Als er een bit of teken verandert in een stuk code of document, zal de hash in zijn geheel veranderen. Elke wijziging is dus waarneembaar.

Blokken zijn dus via een hash met elkaar verbonden. Deze hash wordt opgeslagen in de header, en deze zal gebruikt worden voor het maken van de hash van dat blok. Dit betekent dat bij een wijziging in een blok, alle blokken die daarna komen ook gewijzigd moeten worden.

Stel dat er een blok 1 is. Na blok 1 komt er een blok 2, 3 en 4. Als blok 1 wordt aangepast, klopt de verwijzing in, de header van, blok 2 niet meer, omdat de hash erin opnieuw moet worden berekend. Blok 2 moet hierdoor ook worden aangepast. De verwijzing in blok 3 klopt niet meer, dus blok 3 moet worden aangepast, enzovoort.

Omdat er meer nodes zijn, kan dit soort problemen worden gedetecteerd en opgelost, door de aanpassingen stop te zetten of de node die deze gegevens verzendt te negeren. Dit systeem zorgt voor de integriteit die de blockchain biedt.

MiningBewerken

Bij een blockchain waar iedereen aan kan meewerken is er een systeem van concurrentie waarbij veel rekenkracht nodig is om een nieuw blok te vinden: het blok is pas af als met hashberekeningen een blok wordt gevonden dat aan de eisen voldoet. Het aantal nodige berekeningen is meestal zeer groot, maar dit aantal is van het toeval afhankelijk. De eerste die dat lukt wordt beloond. Die beloning heet fee. Het is een vorm van proof-of-work-systeem. De deelnemers worden miners genoemd, het zoeken heet minen.

Miners controleren transacties en verrichten digitale handelingen voorgeschreven door de eventuele smart contracts, en verwerken een en ander in een blok. Verschillende miners kunnen transacties verschillend selecteren, wel krijgen die met een grote fee vaak voorrang, waardoor ze hashes zoeken voor verschillende potentieel correcte blokken. Als een blok is gevonden gaan de miners dat eerst controleren en vervolgens daarop voortbouwen, met inachtneming van wat in het winnende blok al is gedaan.

De miners hebben belang bij correct werken, want een gevonden blok wordt door andere miners gecontroleerd, en in het geval van een fout niet geaccepteerd. Miners gaan dan verder werken met een vertakking van de blockchain waarin dit verkeerde blok is vervangen door een goed blok. De geaccepteerde blockchain bevat dan niet het verkeerde blok. Bij een systeem waarbij de beloning een bedrag in cryptogeld is dat in het blok geregistreerd staat wordt deze zo vanzelf onbruikbaar.

Miners ontvangen naast de beloning voor veel transacties ook een transactievergoeding, vaak een vrijwillige bijdrage van de betaler om de verwerking te bespoedigen.

Wanneer een miner meer dan de helft van de gebruikte rekenkracht binnen een miningnetwerk heeft, kan die de gegevens in de blockchain aanpassen. Het gaat daarbij om de rekenkracht met betrekking tot het betreffende hashingalgoritme. Een miner van bitcoin met 10% van de totale rekenkracht van het minen van bitcoin kan bijvoorbeeld, omschakelend naar een blockchain met hetzelfde hashingalgoritme, 51% van de totale rekenkracht van het minen daarvan hebben. In die zin zou een blockchain met hetzelfde hashingalgoritme als bitcoin, maar met een veel kleinere benodigde rekenkracht per seconde, relatief kwetsbaar kunnen zijn.[8] Dit is een reden dat sommige bedrijven voor een blockchainnetwerk kiezen zonder miners.[9]

Eens in de 10 minuten wordt een bitcoinblok gevonden, en eens in de 12 tot 15 seconden een ethereumblok.[10][11]

ToepassingenBewerken

Blockchaintechnologie ligt aan de basis van munteenheden voor cryptogeld zoals de bitcoin, maar er zijn ook andere toepassingen in gebruik of in onderzoek. Een voorbeeld is het R3 consortium van financiële instellingen, dat de mogelijkheid onderzoekt transacties door middel van een blockchain uit te voeren. De gegevens zijn daarbij niet openbaar en er wordt geen eigen munteenheid gebruikt.[12]

Zoals een blockchain de overdracht van bedragen in een eigen munteenheden als transacties vastlegt, met daaruit steeds af te leiden het bij een cryptogeldadres behorende bezit, zou één blockchain ook transacties in allerlei verschillende valuta, effecten en goederen kunnen vastleggen. Het object van een transactie hoeft namelijk niet in een getal uit te drukken te zijn (zoals aantal bitcoins waarbij bijv. het ene bedrag van 3 bitcoin gelijkwaardig is aan het andere van 3 bitcoin), maar kan ook bestaan uit een hoeveelheid en een soort, of zelfs iets unieks zoals een bepaald huis, of een bepaalde zitplaats voor een bepaalde voorstelling. Men spreekt in dit verband wel van colored coins. In één transactie zouden ook de overdracht van het goed en de omgekeerde overdracht van de koopsom kunnen worden vastgelegd.[13][14][15] EPOBC is een van de manieren om colored coin transacties te coderen in de bitcoin-blockchain.[16]

Soms wordt een blockchain mede gebruikt voor een ander doel dan waarvoor deze gemaakt is, zoals het permanent vastleggen van een tekst op de plaats van de hash van de publieke sleutel van de begunstigde van een kleine cryptogeldtransactie.

Besloten blockchainBewerken

Een blockchain kan in een of meer van de volgende opzichten besloten zijn (naast besloten blockchain worden ook de uitdrukkingen gesloten blockchain en permissioned blockchain gebruikt):[17][2][18]

  • niet-openbare inhoud van de blockchain
  • niet iedereen kan meedoen met het uitvoeren van transacties. Dat kan bijvoorbeeld wel bij cryptogeld, hoewel men natuurlijk pas een bedrag kan uitgeven als men het eerst heeft ontvangen.
  • niet iedereen kan een nieuw blok aan de keten toevoegen

Bij een vergunning om de blockchain in te zien hoeft het niet alles of niets te zijn, een deelnemer kan ook vergunning hebben om kennis te nemen van een deel van de inhoud, dat per deelnemer kan verschillen. Evenzo kan een deelnemer beperkt vergunning hebben tot het uitvoeren van transacties.

Als alleen bepaalde deelnemers een blok aan de keten mogen toevoegen kan het zijn dat proof of work niet nodig is. Absoluut vertrouwen in elk van deze deelnemers is niet nodig, want ook bij een besloten blockchain is er consensus nodig onder een groep deelnemers.

In zo'n geval wordt een blok niet gevonden, maar gewoon gemaakt, en is de nonce niet van toepassing, en bestaat het blok uit:

  • de hash van het vorige blok. Dit verbindt de blokken als schakels in de keten, als het vorige blok wordt gewijzigd is dit gemakkelijk te constateren doordat deze hash dan niet meer klopt.
  • de gegevens
  • de datum en tijd waarop het blok is gemaakt

Anders dan bij een systeem dat in geen van de genoemde opzichten besloten is, en waarbij dus alle details over de werking van het systeem openbaar moeten zijn, is er over besloten blockchains soms minder bekend. Het is soms bij een geclaimde toepassing van blockchaintechnologie zelfs niet duidelijk wat daarbij nu eigenlijk de significantie van het blockchainconcept is.

Enkele Europese banken proberen bijvoorbeeld het gebruik van een blockchain uit voor handel in olie en landbouwproducten, op het platform Easy Trade Connect, ook Easy Trading Connect genoemd. Er wordt vooral gewezen op de voordelen van digitalisering en standaardisering. Het lijkt te gaan om een blockchain die besloten is in de zin van niet-openbare data, en in de zin van een besloten groep nodes, zoals de koper, de verkoper, de vervoerder en de bank, met van die rol afhangende bevoegdheden tot het toevoegen van data. Het lijkt te gaan om een blockchain zonder proof of work.[19][20][21] Het is niet duidelijk of er iedere keer bij nieuwe data, zoals bij contracten, certificaten en kredietbrieven, een blok aan de keten wordt toegevoegd, of dat meer toevoegingen van data samen in één blok worden geplaatst, evenmin is duidelijk of dit hierbij een relevant verschil zou zijn.

Smart contractsBewerken

Door de decentrale opzet van de blockchaintechnologie is deze ook interessant voor het implementeren van smart contracts (slimme contracten). Een smart contract is een computerprogramma dat (eventueel zelfstandig) een voorgedefinieerde opdracht kan uitvoeren op het moment dat zich bepaalde condities voordoen. Smart contracts hebben een eigen database waarin ze hun data bijhouden.

Ethereum is vanaf het begin ontworpen om smart contracts op te kunnen plaatsen. Deze kunnen zelf een bedrag aan ethers ontvangen en weer uitgeven en de gebruikte programmeertaal, Solidity, is Turingvolledig. Later kwam ook Bitcoin met de mogelijkheid voor smart contracts met de taal Simplicity.

Zo'n smart contract kan bijvoorbeeld gebruikt worden voor een waardeoverdracht. In dit geval kan de verkoper van een eigendomscertificaat (bijvoorbeeld van een huis) dit certificaat overdragen aan het smart contract en de koper maakt het bedrag in de betreffende coins hiernaar over. Als beide zijn overgedragen en een eventuele bedenkingstermijn zijn verstreken dan wordt het certificaat aan de koper overgedragen en de coins aan de verkoper. Bedenkt één van de partijen zich nog voor het verstrijken van de termijn, wordt er niet genoeg geld over gemaakt of wordt het certificaat niet aan het contract overgedragen dan gaat de transactie niet door en krijgt de verkoper het certificaat weer terug en de koper het ingelegd bedrag weer terug.

Smart contracts kunnen voor meer toepassingen gebruikt worden, voor loterijen, het vastleggen van gegevens, het uitbrengen van een nieuwe coin of initial coin offerings (ICO).

Een gevaar van smart contracts is dat deze voor iedereen toegankelijk zijn en daarmee interessant zijn voor hackers. De blockchain zelf is weliswaar niet te hacken maar dat geldt niet voor de afzonderlijke smart contracts. Elke functie van het contract moet dus zo geprogrammeerd zijn dat deze alleen aangeroepen kan worden vanaf het account dat daartoe bevoegd is. Daarnaast is de data in smart contracts ook openbaar en voor iedereen te lezen. Dit laatste kan omzeild worden door alleen versleutelde data op te slaan.

IOTABewerken

De cryptovaluta IOTA gebruikt in plaats van een blockchain een acyclische gerichte graaf, directed acyclic graph DAG, met als knooppunten afzonderlijke transacties, er zijn geen blokken. Een transactie doorgeven gaat gepaard met het controleren van twee willekeurig gegenereerde andere transacties. Er is geen fee verschuldigd. Er is een vast aantal munteenheden en er is geen mining.

NederlandBewerken

Om de kansen voor de Nederlandse overheid van de nieuwe technologie vast te stellen, worden sinds 2016 diverse pilots georganiseerd met o.a. het kadaster, de belastingdienst en de Kamer van Koophandel.[22]

Juridische aspecten van een blockchain kunnen onder meer aan de orde zijn als er persoonsgegevens in staan. Gezien de Algemene verordening gegevensbescherming is een open blockchain dan wellicht niet mogelijk.[23]

De NGO Fairfood International was in 2017 de eerste Nederlandse partij die geblockchaind voedsel verkocht. De organisatie zette 1.000 kokosnoten op de blockchain en maakte met dat pilotproject de productketen volledig inzichtelijk.[bron?]

BelgiëBewerken

In België werd in juli 2017 in de haven van Antwerpen een pilootproject opgezet, voor de verwerking van containers.[24] De Vlaamse overheid werkt aan de introductie van de blockchain-technologie.[25]

BillonBewerken

Het Poolse bedrijf Billon gebruikt een blockchain voor fiduciair geld, zonder mining, dat veel meer transacties per seconde dan bitcoin aankan.[26]

Transacties buiten de blockchainBewerken

Soms heeft het voordelen bepaalde transacties niet afzonderlijk in de blockchain te registreren, maar slechts het saldo van meer van deze transacties, niet noodzakelijk tussen dezelfde twee partijen. Dit is het principe van het Lightning Network, dat in ontwikkeling is, en kan ook op een markt worden toegepast, waarbij klanten een rekeningcourant van cryptovaluta en fiduciair geld aanhouden.