Blockchain
Een blockchain (Nederlands: blokketen) is een systeem voor het opslaan van data in een keten van datablokken, waarbij blokken niet gewijzigd kunnen worden. Blokken kunnen alleen aan het einde van de keten worden toegevoegd. Een blok bevat vaak meerdere transacties, die het resultaat zijn van uitgezonden transactieverzoeken/-opdrachten. Voor de actuele status van een gegeven in een blok moeten alle volgende blokken in aanmerking worden genomen, omdat die wijzigingen kunnen bevatten, voor zover die naar hun aard mogelijk zijn.
De data kunnen bijvoorbeeld overschrijvingen zijn van cryptogeld (en daarmee, zolang nog niet uitgegeven, bezittingen van de ontvangers), maar ze kunnen 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.[1]
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. Het ontwerp van een blockchain is een voorbeeld van Secure by design en gedecentraliseerde consensus.
Mogelijke digitale bezittingen op een blockchain zijn het cryptogeld in de eigen cryptovaluta, overige niet-unieke tokens, en non-fungible tokens.
Basisprincipe
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.[2] Elk block is daarmee als volgt opgebouwd:
- De hash van het voorgaande block (cryptohash).[3] 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 digitale 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 ontstaat er toch weer consensus en wordt de ene versie van de waarheid geaccepteerd en de andere vergeten. Een harde fork ontstaat wanneer twee ketens permanent naast elkaar blijven bestaan. Dit komt alleen voor wanneer een deel van het netwerk besluit om op een nieuwe versie van de software over te stappen (met aangepaste regels) terwijl een ander deel bij de oude versie blijft. Vanaf dat moment kunnen beide groepen elkaars blokken niet meer accepteren. Zo ontstond in 2016 Ethereum Classic als afsplitsing van Ethereum.
Een blockchain werkt dus als een gedistribueerde database waarbij alle nodes die actief zijn een kopie bijhouden en elkaar controleren. Het is niet mogelijk om aanpassingen te doen in eerder gegenereerde blokken omdat daarmee de hash van het aangepaste block ook zal veranderen en aangezien de blokken via de hash met elkaar verbonden zijn wordt de keten doorbroken. Wanneer een block aangepast wordt dan zullen alle blokken die daarna gegenereerd zijn ook aangepast moeten worden om zo een nieuwe keten te creëren. 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.
Een gevaar ontstaat wanneer één speler meer dan 50% van de nodes onder beheer heeft en een block aanbiedt met foutieve of frauduleuze gegevens. Deze speler kan dan toch consensus forceren en het block geaccepteerd krijgen.
Varianten
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,[4] 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.[5] Een hybride vorm kan ook waarbij bijvoorbeeld de gegevens openbaar zijn maar er slechts een beperkt aantal nodes en/of miners wordt aangewezen.
Een consortiumblockchain is bedoeld voor een specifieke samenwerking tussen verschillende spelers, een consortium. Hierbij dient de blockchain als database waarin men kan samenwerken en gegevens delen maar niemand de gegevens kan manipuleren of valse gegevens opvoeren. Bij een cosortiumblockchain zijn de gegevens alleen inzichtelijk voor de leden van het consortium. Vaak wordt ervoor gekozen om slechts één miner aan te wijzen.
Verder kunnen per toepassing andere regels gelden die aangeven hoe de gegevens in blokken worden verwerkt.
Mining
Het genereren van een nieuw blok, met gegevens, wordt mining (Engels voor delven) genoemd en de node die zich hiermee bezighoudt wordt miner genoemd.[6] Binnen een besloten blockchain, waar vaak allerlei regels gelden, kan bijvoorbeeld één node als miner worden aangewezen en dat de rest van de nodes de gegevens alleen maar controleren. Ook kunnen de nodes bij toerbeurt als miner optreden. Bij een openbare blockchain, waar in principe iedereen een node kan opstarten en zich als miner kan aanbieden ligt dit gecompliceerder. Om steeds nieuwe blokken te laten genereren en daarmee de blockchain te doen blijven functioneren is een beloningssysteem nodig dat het interessant houdt voor deelnemers om hier hun rekenkracht voor ter beschikking te stellen. Bij openbare cryptovaluta wordt er vaak voor gekozen om transactiekosten die met de transacties van het betreffende blok gemoeid zijn toe te kennen aan de node die deze gegenereerd heeft. Tegelijkertijd kan de miner ook beloond worden door voor elk gemind blok een vaste hoeveelheid van de cryptovaluta aan deze toe te kennen. Op deze manier wordt de hoeveelheid van de betreffende valuta groter en is het voor de eigenaar van een node financieel interessant om zich hiermee bezig te houden. Hier doet zich echter een probleem voor omdat dan vele spelers als miner zullen willen optreden en het lastig wordt om te bepalen welke van de vele gegenereerde blokken nu als volgende gekozen moet worden. Om dit op te lossen zijn verschillende consensusvarianten ontwikkeld.
Eens in de 10 minuten wordt een bitcoinblok gevonden, en eens in de 12 tot 15 seconden een ethereumblok.[7][8]
Consensusvarianten
Er bestaan verschillende consensusvarianten, waaronder:
- Proof of work: dit is de bekendste en wordt gebruikt door Bitcoin, Ethereum, Zcash en Monero. Het block dat als eerste foutloos gegenereerd wordt door een miner wordt geaccepteerd. Om het de miners extra moeilijk te maken moet het block niet alleen foutloos zijn maar moet de miner ook een complexe puzzel oplossen. Vaak moet aan het block een getal (een nonce) toegevoegd worden die ervoor zorgt dat de totale hash van het block met een bepaald aantal nullen (voorloopnullen) begint. Een correcte nonce kan alleen door vele malen proberen worden ontdekt (brute force) waardoor een node lang aan het rekenen is. Wanneer een correct block bekend gemaakt is dan is het voor de andere miners niet meer lucratief om door te zoeken naar een eigen versie van het volgende block en zullen deze trachten een nieuw block te genereren dat voortborduurt op het bekend gemaakte block. Om de bloktijd (de snelheid waarmee steeds een nieuw block ontstaat) constant te houden wordt het aantal voorloopnullen eens in de zoveel tijd bijgesteld. De kritiek op deze variant is dat deze erg veel energie kost omdat veel miners tegelijk proberen het volgende block te berekenen en als eerste een juiste nonce te raden. Er is daarmee veel verspilde rekenkracht.
- Proof of stake: deze is minder bekend en wordt gebruikt door Cardano, EOS.IO, Steem en Tezos. Dit is een methode waarbij miners zich aanbieden en de eerstvolgende miner wordt uitgekozen door een combinatie van rijkdom (of inzet), ouderdom van de portefeuille en kans. Het gaat er hierbij om dat de volgende miner ofwel het grootste belang heeft om een correct block te genereren of zelfs het meest te verliezen heeft bij het aanbieden van een foutief block.
- Proof of authority: hierbij worden zogenaamde validators aangesteld. Dit zijn nodes die controleren of een block valide is. Dit gaat wel ten koste van het decentrale karakter van de blockchain aangezien het aanwijzen van validators van buitenaf wordt uitgevoerd. Het is daarom meer geschikt voor besloten blockchains.
- Proof of space: dit is vergelijkbaar met proof of work, maar gebruikt opslagruimte in plaats van rekenkracht. In plaats van te blijven rekenen tot het blok gegenereerd is, worden willekeurige oplossing gegeneerd die worden opgeslagen op de opslagruimte. Vervolgens worden alle gegeneerde blokken vergeleken met de puzzel.
Smart contracts
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 een 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.
Toepassingen
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.[9]
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.[10][11][12] EPOBC is een van de manieren om colored coin transacties te coderen in de bitcoin-blockchain.[13]
Blockchaintechnologie kan gebruikt worden voor het transparant maken en automatiseren van de productieketens en logistiek. Hierbij plaatsen verschillende spelers in een keten hun informatie op een blockchain waarmee de voortgang of juist herkomst van een product of proces inzichtelijk wordt gemaakt. Dit is ook waardevol wanneer je als consument wilt weten waar bijvoorbeeld jouw zojuist gekochte fruit of koffie vandaan komt.
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.
België
In België werd in juli 2017 in de haven van Antwerpen een pilotproject opgezet, voor de verwerking van containers.[14] Dit systeem wordt sinds begin 2020 ook in productie gebruikt om containers veilig af te halen in de Haven van Antwerpen[15]. Bovendien wordt dit systeem ook in productie getest in de haven van Rotterdam[16].
De Vlaamse overheid werkt aan de introductie van de blockchain-technologie.[17]
Nederland
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.[18]
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, dan wel dienen additionele maatregelen te worden getroffen om de gegevens niet toegankelijk te maken.[19][20]
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.[21]
Valuta
- Het Poolse bedrijf Billon gebruikt een blockchain voor fiduciair geld, zonder mining, dat veel meer transacties per seconde dan bitcoin aankan.[22]
- 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.
- Transacties buiten de blockchain. 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.
Geschiedenis
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.[23] Ethereum is een platform, dat voortdurend aan blockchains rekent. Onder andere Joseph Lubin en Vitalik Buterin hebben aan de ontwikkeling van Ethereum meegewerkt.
Externe link
- Dit artikel of een eerdere versie ervan is een (gedeeltelijke) vertaling van het artikel Blockchain op de Engelstalige Wikipedia, dat onder de licentie Creative Commons Naamsvermelding/Gelijk delen valt. Zie de bewerkingsgeschiedenis aldaar.
Voetnoten
- ↑ Patrick Schueffel, Nikolaj Groeneweg, Rico Baldegger (1 augustus 2019). The Crypto Encyclopedia: Coins, Tokens and Digital Assets from A to Z. School of Management Fribourg, Bern/Fribourg.
- ↑ (en) Bitcoin wiki. Block hashing algorithm.
- ↑ Zie bijvoorbeeld Wayback Machine. web.archive.org (30 maart 2016). Geraadpleegd op 22 juli 2019.
- ↑ (en) Forbes. Beyond bitcoin: how the blockchain could disrupt our financial system, 11 augustus 2015.
- ↑ (en) IBM. The difference between public and private blockchain, 31 mei 2017.
- ↑ Sparreboom, Jelger, wat is crypto mining. techupdates (22 april 2020). Gearchiveerd op 26 oktober 2020. Geraadpleegd op 24 april 2020.
- ↑ (en) How Ethereum Mining Works
- ↑ (en) Etherchain - The Ethereum Blockchain Explorer
- ↑ (en) J Shieber. Blockchain consortium R3 raises $107 million, 23 mei 2017.
- ↑ J de Vries. Colored Coins, 17 november 2014.
- ↑ (en) Bitcoin wiki. Colored coins.
- ↑ (en) Blockchains. gearchiveerd
- ↑ (en) EPOBC.
- ↑ (en) Blockchain pilot solution to release Antwerp containers, 3 juli 2017.
- ↑ (en) Secure Container Release in production for 100 days & our vision for the future. SCR. Geraadpleegd op 12 maart 2021.
- ↑ (en) Port of Rotterdam to start trial with PIN-free container handling. SCR. Geraadpleegd op 12 maart 2021.
- ↑ Vlaamse overheid. Infosessie blockchain - VOLZET, november 2017.
- ↑ Nederlandse overheid. Blockchain pilots
- ↑ Pels Rijcken & Droogleever Fortuijn. Whitepaper Juridische aspecten van Blockchain, 16 november 2017. (pdf)
- ↑ Welzijn en Sport Ministerie van Volksgezondheid, Onderzoek: Blockchain in de zorg in relatie tot de AVG - Rapport - Zorginstituut Nederland. www.zorginstituutnederland.nl (13 juni 2019). Geraadpleegd op 20 november 2019.
- ↑ (en) A 100% transparent coconut chain. FairFood (5 januari 2018). Gearchiveerd op 27 augustus 2019. Geraadpleegd op 20 november 2019.
- ↑ (en) Billon sets industry-standard benchmark for Blockchain scalability, 23 november 2017.
- ↑ Satoshi Nakamoto. Bitcoin: Een Peer-to-Peer Elektronisch Geldsysteem. (pdf)