Blockchain-technologie: zo werkt de techniek achter Bitcoin

Marco den Teuling
0

Inhoudsopgave

blockchain technologie techniek uitgelegd uitlegDe term ‘blockchain’ is al een tijdje een van de populairste buzzwords in de IT. Blockchain is meer dan de technologie achter Bitcoin en andere cryptomunten. We bekijken wat er achter de marketing-speak zit en of blockchain-technologie daadwerkelijk hele branches kan revolutioneren.

Alle grote techbedrijven doen mee: Amazon biedt ‘Blockchain as a Service’, Microsoft introduceerde een framework voor het implementeren van blockchains (Coco) en IBM heeft een Blockchain Platform. Ook uit andere bedrijfstakken komen bijna dagelijks berichten die op het onderwerp betrekking hebben: containerbedrijf Maersk gebruikt blockchain-technologie om containers te traceren, pensioenfondsen APG en PGGM hopen met blockchain de kosten van pensioenuitvoering te verlagen en Zweden test een blockchain voor het landelijke kadaster (Lantmäteriet). Ook een mediabedrijf als Disney doet onderzoek naar blockchain (met Dragonchain). Vooral in de financiële wereld zijn er grote verwachtingen wat betreft de blockchain-technologie. Die is ook bekend onder de Engelse term ‘distributed ledger’ oftewel ‘gedistribueerd kasboek’.

In dit artikel lichten we toe hoe een blockchain nu eigenlijk werkt en welke onopgeloste problemen er op de loer liggen bij het gebruik. Een belangrijk kenmerk van blockchains is dat ze zogeheten smart contracts mogelijk maken. Dat zijn overeenkomsten die in programmacode zijn vastgelegd en min of meer automatisch worden afgehandeld. Meer hierover lees je in c’t 1-2/2018. Meer over bitcoin, zoals wat er komt kijken bij het kopen van en geld verdienen met bitcoin, lees je in de uitgebreide Bitcoin-special.

Wat is de blockchain?

In technisch opzicht is een blockchain niet veel meer dan een gedistribueerde database die bestaat uit een keten van datablokken. ‘Gedistribueerd’ betekent in dit geval dat deelnemers de data uitwisselen via een eigen peer-to-peer netwerk (P2P). Elke node beschikt daarbij over het volledige databasebestand.

Er bestaan zowel openbare als private blockchains. De bekendste openbare is die van de cryptomunt bitcoin. Een andere openbare blockchain is Ethereum. Die is vooral bekend geworden omdat hij in tegenstelling tot bitcoin ook smart contracts kan vastleggen. In theorie kan bij een openbare blockchain iedereen meedoen, alle data lezen en zelf nieuwe gegevens toevoegen. In het bedrijfsleven wordt meer gebruik gemaakt van private blockchains. Die bestaan alleen op het eigen netwerk en op computers van het betreffende bedrijf. Er zijn ook hybride vormen, waarbij niet alle data gedeeld wordt.

Een van de kenmerkendste eigenschappen van blockchains is dat eenmaal vastgelegde data naderhand in principe niet meer veranderd kunnen worden. Daardoor komen ze in aanmerking als opslagmedium voor toepassingen waarbij steeds nieuwe gegevens moeten worden bewaard zonder dat ze gemanipuleerd kunnen worden. Het kan gaan om gegevens van financiële transacties, maar net zo goed om een elektronisch patiëntendossier. De gebruikersdata in de bitcoin-blockchain zijn alle uitgevoerde transacties, oftewel de overboekingen van bedragen tussen deelnemers.

Het kleinste element van een blockchain is een block. Dat omvat behalve een index en een tijdstempel minstens drie andere componenten: de eigenlijke data, de hash van het voorgaande block en een zogeheten Proof of Work.

Doordat elk block de hash bevat van de voorganger, zijn ze aan elkaar gekoppeld en bieden ze onderlinge bescherming tegen manipulatie of onopzettelijke corruptie door bijvoorbeeld geheugen- of overdrachtsproblemen. Als je gegevens in een block achteraf zou wijzigen, verandert de hash en dit valt meteen op bij het volgende block. Maar dat niet alleen: de hash van de voorganger maakt deel uit van het block en wordt dus gebruikt bij het berekenen van de eigen hashwaarde, die weer in het volgende block wordt opgeslagen. Om de gegevens in een bestaand block aan te passen, moet je dus alle blocks vanaf dat punt opnieuw berekenen. Dat is in theorie wel mogelijk, maar veel meer werk. Hoe verder terug in de blockchain gegevens zijn vastgelegd, hoe moeilijker ze te manipuleren zijn.

blockchain techniek concept

Om zulke manipulaties nog lastiger en vanaf een bepaald punt haast onmogelijk te maken, verwerken de meeste blockchains in de hash een implementatie van Proof of Work. Dat is een getal dat moeilijk te berekenen, maar makkelijk te verifiëren is. De hashwaarde van een geldig block mag bijvoorbeeld niet groter zijn dan een bepaalde maximumwaarde. Om een nieuw block toe te voegen, moet net zo lang een Proof of Work-getal worden geprobeerd totdat een geldige hashwaarde is gevonden. Zolang het hash-algoritme niet gekraakt is, kan een geldig block alleen worden gevonden door lukraak getallen uit te proberen. In bitcoin-termen wordt het Proof of Work-getal trouwens de nonce genoemd. In de cryptografie staat dat eigenlijk voor ‘number used once’ en is het een soort eenmalig te gebruiken wachtwoord.

Door de regel voor een geldig block aan te passen, kan de hash-berekening moeilijker worden gemaakt. In de bitcoin-blockchain word de maximumwaarde voor een geldige hash geregeld zodanig aangepast dat alle deelnemers samen gemiddeld elke tien minuten een block kunnen toevoegen. De Ethereum-blockchain zou elke vier minuten met een block moeten groeien. Het bijbehorende hash-algoritme vereist niet alleen rekencapaciteit, maar ook een paar gigabyte aan opslagruimte. Daarmee moet worden verhinderd dat geldige blocks kunnen worden berekend met speciale hardware, zoals ASIC’s. Door een flinke investering in dergelijke hardware zou anders een meerderheid van de rekencapaciteit in handen kunnen komen van een beperkte groep deelnemers, wat de stabiliteit van de blockchain in gevaar kan brengen.

Elke deelnemer kan controleren of een blockchain intact is. Het werk daarvoor is te overzien. Je hoeft alleen de hash van elk block opnieuw te berekenen, die te vergelijken met de voorganger-hash in het volgende block en controleren of de nonce voldoet aan de gestelde voorwaarde. Hiervoor download je een blockhain-client.

blockchain cryptomunt cryptovaluta

Blockchain-technologie: goudkoorts en minen

Om te blijven bestaan, moet een openbare blockchain genoeg deelnemers hebben die nieuwe blocks berekenen. Je kunt je afvragen waarom iemand hiervoor rekencapaciteit zou willen inzetten.

Die vraag is goed te beantwoorden met bitcoin als voorbeeld. Daarvoor moeten we wel verder toelichten hoe cryptovaluta werken. Als je een bitcoin-tegoed hebt, kun je een overboeking doen naar een andere gebruiker door een bijbehorend versleuteld bericht te sturen naar het netwerk. Het p2p-netwerk verdeelt die berichten over alle deelnemers die bezig zijn met het berekenen van nieuwe blocks. Iemand die een nieuw block probeert te berekenen, kiest transacties uit om te verwerken en verpakt ze in een speciale datastructuur. Daaraan wordt de hash toegevoegd van het laatste bekende block en een nonce en vervolgens wordt de bijbehorende hash berekend voor het nieuwe block. Als na proberen van vele nonces een geldig block is gevonden, wordt dat via het p2p-netwerk naar alle andere deelnemers gestuurd. Door het block aan de blockchain toe te voegen worden de daarin opgenomen transacties vastgelegd en verwerkt.

De reden dat mensen blocks willen berekenen, is dat bijna alle openbare blockchains hier een vergoeding in de vorm van digitaal geld aan koppelen. Als je een nieuw block berekent voor de bitcoin-chain, mag je zelf een transactie toevoegen aan het block om een bepaalde hoeveelheid nieuw gecreëerde bitcoins te ontvangen. Door dit proces ontstaat nieuw digitaal ‘goud’, daarom heet het ook wel mining (delven). De betreffende deelnemers heten dan ook ‘miners’. Door het minen zijn grafische kaarten extra populair geworden, maar er wordt ook speciale hardware voor gebruikt.

blockchain techniek hardware ASIC.

Bitcoin is zo opgezet dat er een maximum is aan de hoeveelheid bitcoins die in omloop kunnen zijn. Daarom wordt de beloning die een miner krijgt voor het berekenen van een nieuw block in de loop der tijd steeds kleiner. Om het delven naar nieuw digitaal goud toch een beetje lonend te maken, kunnen opdrachtgevers bij transacties een beloning uitloven voor de miner die het nieuwe block vindt. Die helpt tenslotte om het systeem in stand te houden. In de praktijk is het ondertussen zo dat transacties zonder beloning nauwelijks nog kans maken om aan de blockchain toegevoegd te worden.

Bij een openbare blockchain zoals het bitcoin-netwerk kan in principe iedereen miner worden en nieuwe blokken aan de keten toevoegen. De deelnemers kennen elkaar niet en hebben geen vertrouwensrelatie. Dat het toch praktisch onmogelijk is om de blockchain te manipuleren is te danken aan twee kenmerken. Ten eerste zorgen de cryptografische eisen aan nieuwe blocks ervoor dat ze in principe geldig zijn. Maar in theorie kan het gebeuren dat een miner een nieuw block berekent met een overboeking van deelnemer A naar deelnemer B, terwijl tegelijkertijd een andere miner een block vindt waarbij dit bedrag juist wordt overgeboekt naar deelnemer C.

Dergelijke collisions (botsingen) worden op de volgende manier opgelost. Zodra een miner een geldig block heeft berekend, wordt dit naar alle andere miners van het p2p-netwerk gestuurd. Elke ontvanger controleert eerst de geldigheid. Als die klopt, hangt de ontvanger het block aan de lokale kopie van de blockchain en worden de transacties erin verwijderd uit de lokale lijst van te verwerken transacties. Vervolgens gaat hij met nog te verwerken transacties een nieuw block berekenen. Ontvangt een miner tegelijkertijd twee geldige blocks met hetzelfde voorgaande block, dan kiest hij zelf met welke hij het volgende block berekent.

Dat geldt ook als de ontvangen blocks niet dezelfde voorganger hebben, maar wel dezelfde afstand tot het laatste gemeenschappelijke block. Er is dan een zogeheten fork ontstaan: de blockchain is in meerdere takken gesplitst. Vroeg of laat wordt een van de takken langer dan de andere. De kortere tak wordt dan verwijderd en alle transacties erin worden verworpen. Ook de beloningen van miners in die tak verdwijnen. Op termijn ‘wint’ de tak waarin de meeste rekencapaciteit beschikbaar is om nieuwe blocks te vinden. Men gaat er vanuit dat hier de meeste miners zitten en dat een enkele miner die de boel probeert te manipuleren zo nooit de hele blockchain voor langere tijd kan beïnvloeden.

blockchain techniek fork forks

Langdurige forks komen zelden voor in de bitcoin-blockchain. De meeste deelnemers gaan er daarom van uit dat een transactie definitief is zodra die in een block zit dat minstens zes opvolgers heeft. Pas dan worden bijvoorbeeld opgenomen bedragen uitbetaald of in bitcoins betaalde aankopen verwerkt. Maar dat bijvoorbeeld een bestelling mislukt omdat de bijbehorende transactie terechtkomt in een verworpen tak van de blockchain, is zeer zeldzaam. Als een transactie door de meerderheid van de miners als legitiem wordt herkend, komt hij normaliter in alle takken terecht. Hij belandt hooguit in een later block.

Blockchain-technologie werkt met consensus

Het concept van Proof of Work is niet zonder problemen. Het grootste kritiekpunt is het gebruik van resources. Talloze miners verspillen veel rekenkracht en daarmee elektriciteit om hashes te berekenen voor blocks die uiteindelijk nooit in de blockchain terechtkomen. Andere blockchain-implementaties gebruiken daarom andere methodes om overeenstemming te bereiken tussen deelnemers over het volgende geldige block.

Een andere populaire consensus-methode is Proof of Stake (bewijs van investering). Daarbij wordt voor het berekenen van het volgende block een deelnemer gekozen die daar aantoonbaar zelf belang bij heeft. Dat kan bijvoorbeeld zijn in de vorm van bezit van aan de blockchain gekoppelde cryptovaluta. De kans om een block te mogen toevoegen stijgt dan naarmate het belang groter is. Een probleem bij Proof of Stake is dat een enkele deelnemer of een kleine groep te veel invloed zou kunnen krijgen door veel te investeren en vervolgens blocks zou kunnen manipuleren. Om dat te voorkomen worden bij veel implementaties niet alleen beloningen uitgeloofd voor geldige blocks, maar ook boetes uitgedeeld aan deelnemers die verworpen blocks berekenen.

In blockchain-projecten met beperkte toegang en een bepaalde vertrouwensrelatie tussen deelnemers zijn andere consensus-algoritmes mogelijk met nog minder overhead. Daarbij kan het feit gebruikt worden dat (anders dan bij openbare blockchains) het aantal actieve deelnemers beperkt is.

Een in de praktijk gebruikt algoritme is ‘Practical Byzantine Fault Tolerance’ (PBFT). Die naam stamt van een legende over de belegering van Constantinopel in 1453 door het Ottomaanse rijk. De generaals van de Ottomaanse legers konden alleen per boot berichten uitwisselen om een tijdstip te plannen voor een gezamenlijke aanval. Voor een geslaagde aanval op de stad moesten zoveel mogelijk legers tegelijk aanvallen. Maar er waren verraders onder de generaals, waardoor men niet wist welke berichten te vertrouwen waren. Als je dit probleem wiskundig benadert, kom je tot de conclusie dat een betrouwbare overeenstemming over het tijdstip alleen mogelijk was als minder dan een derde van de generaals de berichten saboteerde.

Blockchain en PBFT-algoritme

De belegering van Constantinopel en blockchain-technologie hebben wel degelijk iets met elkaar te maken. Een in de praktijk gebruikt algoritme bij blockchains is ‘Practical Byzantine Fault Tolerance’ (PBFT). Die naam stamt van een legende over de belegering van Constantinopel in 1453.

Het PBFT-algoritme gebruikt kopieën (replications) van state-machines die wijzigingen in hun toestanden onderling afstemmen door berichten uit te wisselen. Het wordt bijvoorbeeld gebruikt in Hyperledger Fabric, een blockchain-framework dat door de Linux Foundation wordt onderhouden. Geïnteresseerden kunnen hiermee hun eigen blockchain-toepassingen implementeren. Volgens de bedenkers levert het PBFT-algoritme een minimale overhead op bij de communicatie tussen nodes.

Twee populaire varianten van het PBFT-algoritme in de financiële wereld zijn Ripple en Stellar. Ze staan in principe een oneindig aantal nodes toe, maar vereisen dat elke deelnemer bepaalde partners volledig vertrouwt. De hierdoor gevormde groepen moeten elkaar bovendien overlappen. Het verschil tussen beide algoritmes zit in de manier waarop nodes overeenstemming bereiken over het volgende valide block. Ze hebben gemeen dat ze veel transacties in korte tijd kunnen verwerken en die snel definitief kunnen opnemen in de blockchain.

Blockchain-technologie: nadelen en kritiekpunten

De ideale blockchain heeft een lage latentie, laat nieuwe blocks snel definitief toe, verwerkt veel transacties in korte tijd en kan goed opgeschaald worden naar een groot aantal deelnemers. Die wensen sluiten elkaar enigszins uit. Consensusmodellen die tot snelle beslissingen leiden werken doorgaans alleen bij een beperkt aantal deelnemers. Ze zijn niet toepasbaar op netwerken met een potentieel oneindig aantal deelnemers. Consensusmodellen die aan alle eisen proberen te voldoen werken alleen als de deelnemers op zijn minst bepaalde partners volledig vertrouwen.

Voordat blockchains sowieso bedrijfsmatig breder ingezet worden, zullen nog andere problemen met de blockchain-technologie opgelost moeten worden. Zo vereist een blockchain dat elke P2P-node voortdurend de complete database bewaart. Er worden geen gegevens gewist en de blockchain groeit voortdurend. Dat kan een tijd goed gaan en wenselijk zijn, maar op de lange termijn gaat de overhead van oude gegevens als een rem werken. Het wordt bovendien steeds lastiger de integriteit van de blockchain te verifiëren omdat daarvoor vanaf het allereerste block de hashes nagerekend moeten worden.

Als je op dit moment een blockchainproject wilt opzetten, kun je kiezen uit een breed aanbod van dienstverleners en frameworks. Dat is op zich verdienstelijk, maar het betekent ook dat je vrij vroeg voor een bepaalde implementatie van de blockchain-technologie moet kiezen. Als achteraf blijkt dat je op het verkeerde paard gewed hebt, is overstappen eigenlijk onmogelijk omdat er geen algemeen geaccepteerde standaarden zijn.

blockchain bitcoin energie stroom verbruikVanuit milieuoogpunt zijn blockchains die Proof of Work voor consensus gebruiken een nachtmerrie. Experts schatten dat het bitcoin-netwerk momenteel minstens een gigawatt per uur verstookt voor het berekenen van hashes – dat is het vermogen van een traditionele kerncentrale. Als je uitgaat van zes berekende blocks per uur, kost een enkel block dus ongeveer 167 MWh. Daarvoor ben je met de huidige Nederlandse stroomprijzen ruim 33.000 euro kwijt. Miners krijgen voor een nieuw block circa 12,5 bitcoins als beloning. Dat is tegen de (hoge) koers op het moment van schrijven zo’n 100.000 euro. Een Nederlandse miner zou met een gevonden block dus ruim 67.000 euro winst maken. Maar de kans om dit lot uit de loterij te trekken is heel erg klein. Voor een maximale winst zetten professionele miners hun mining-farms neer in landen waar stroom heel goedkoop is, zoals China, Rusland en Ijsland.

Bij de milieuschade moet je ook meetellen dat aan bitcoin-mining met gewone processors of grafische kaarten nauwelijks meer iets te verdienen valt. Speciale ASIC-hardware om hashes te berekenen is veel sneller. In de praktijk wordt zulke apparatuur echter binnen enkele maanden ingehaald door de volgende generatie mining-hardware. Daardoor ontstaat een berg elektronica-afval.

De volgende schakel

Ondanks alle problemen richten veel bedrijven hun pijlen op de blockchain-technologie. Vooral de financiële sector verwacht hiermee bedrijfsprocessen efficiënter te kunnen maken. Als de techniek ervoor kan zorgen dat alle partijen hun verplichtingen nakomen, zijn notarissen en bewindvoerders niet meer nodig. Een passieve blockchain die puur als opslag fungeert, is dan niet genoeg. Daarvoor zijn ook smart contracts nodig: tegen manipulatie beschermde programmacode die in de blockchain staat opgeslagen en onfeilbaar wordt uitgevoerd als aan de bijbehorende voorwaarden is voldaan. In c’t 1-2/2018 lees je meer over smart contracts.

blockchain Gartner Hype Cycle

Een andere branche die veel verwacht van blockchain-technologie is de logistieke sector. Daar gaat het er vooral om foutloos en zonder vertraging te kunnen nagaan waar een zending zich momenteel bevindt en welke weg deze heeft afgelegd. Direct voordeel voor de gebruiker bieden blockchains in de voedingsindustrie. Ze zijn het ideale opslagmedium om de route van levensmiddelen te volgen van fabrikant tot consument. Dat fabrikanten internationaal aan zo’n systeem meewerken is nog toekomstmuziek. Brancheleider Nestlé is echter wel begonnen om de herkomst van toevoegingen aan levensmiddelen te volgen per blockchain.

Veel verder dan pilotprojecten gaan de genoemde voorbeelden nog niet. De voor- en nadelen van het toepassen van blockchains worden daarmee gepeild. Of de gehoopte voordelen in de praktijk haalbaar zijn, moet nog blijken. Volgens de jaarlijkse Hype Cycle van onderzoeksbureau Gartner bevinden blockchains zich nu in de overgang tussen de ‘piek van overtrokken verwachtingen’ en het ‘dal van desillusie’. Volgens hen kan het nog wel vijf tot tien jaar duren voordat een ‘brede inzet’ wordt gerealiseerd.

Blockchain-technologie is in elk geval niet het door veel aanbieders beloofde wondermiddel waarmee elk bedrijfsproces gemoderniseerd kan worden. Net als bij elke hype moet je goed nagaan achter welke aankondiging daadwerkelijk een revolutie schuilgaat en wanneer het alleen als buzzword wordt gebruikt om indruk te maken.

(Hajo Schulz / Marco den Teuling, c’t magazine 1-2/2018)

N.B.: Meer over bitcoin lees je in de uitgebreide Bitcoin-special.

Deel dit artikel

Lees ook

Online vakantie plannen – tips en trucs

Op internet kun je zelf je vakantie plannen en de beste vlucht, het fijnste hotel en een geschikte huurauto uitzoeken. Je kunt nu al gaan kijken voor ...

U.2-ssd: super-ssd voor servers en workstations

SATA-ssd’s zijn wel snel, maar vaak niet snel genoeg. PCIe-ssd’s zijn sneller, maar bieden dan weer niet genoeg opslagruimte. Er is een alternatief: s...

Interessant voor jou

0 Praat mee

avatar
  Abonneer  
Laat het mij weten wanneer er