Door Krijn Soeteman

Freelanceredacteur

The DAO, blockchains en Ethereum

Miljoenendiefstal door ontwerpfout

03-07-2016 • 06:00

102

Singlepage-opmaak

Ethereum

Ethereum nodeEr kan al heel wat meer met de betrekkelijk simpele bitcoin-blockchain dan alleen geld overmaken. Ethereum is net als veel alternatieve cryptovaluta gebaseerd op het blockchainconcept van Bitcoin, met één groot verschil, namelijk dat de scripts in de Ethereum-blockchain veel complexer kunnen zijn. De gebruikte scripttaal voor de Ethereum-blockchain is Turing complete. Dat betekent dat deze scripttaal werkt als een gewone computertaal. Talen als Java, Pascal, C++ en Prolog zijn Turing complete. Html, wat een mark-uptaal is, of json zijn dat bijvoorbeeld niet.

Bij Ethereum kunnen dus in principe echte programma's uitgevoerd worden, al zijn ze wel vergelijkbaar met hoe de scripts van Bitcoin werken; zonder vergoeding doen ze het niet. Dit is vergelijkbaar met de miner-vergoeding om de transactie van oma door te voeren. Als oma er zeker van wil zijn dat de transactie snel, zeg binnen 25 berekende blocks, wordt meegenomen, moet ze 0,00016702 bitcoin extra overmaken. Daarna is de transactie rond en is het verhaal klaar.

Ethereum kan in zijn blockchain daadwerkelijk een programma uitvoeren. Een rekenmachine kun je de opdracht geven om 1+1 uit te rekenen, maar in de 'wereldcomputer' moet daarvoor overeenstemming worden bereikt om op 2 uit te komen. Binnen de computerwetenschappen heet dit ook wel consensus computing. Bij een consensuscomputer hoeven niet alle nodes in een netwerk dezelfde uitkomst te hebben, maar wel het grootste deel. Hierin wijkt de betekenis van het woord af van het 'normale' woord consensus. Dit werkt zo, omdat sommige nodes in het netwerk de berekening niet zullen afmaken, bijvoorbeeld door een stroomstoring, of door een fout op een ander getal uitkomen. Dat is niet erg, want de consensus komt uit op 2. Met andere woorden, het is een deterministische computer.

Als deze berekening via een zwaarlijvig script loopt, moeten alle computers relatief hard rekenen en kost het dus veel rekentijd. Die rekentijd kost bij Ethereum ether, de munteenheid van het Ethereum-netwerk. Om die som uit te laten rekenen is dan ook ether nodig; in jargon heet dat 'gas'. Hoe langer er gerekend moet worden, hoe meer het kost. Als de aanvrager van de rekentijd te weinig gas levert, dan stopt de berekening op den duur.

Klassieke blockchain

Ethereum

Adressen

Adressen + dataopslag + code

Balans met 'eigen' coin

Balans met ether + applicatiespecifieke tokens met een specifiek gedrag

Transacties

Transacties + het creëren van contractcode + het ophalen van contractcode

Blocks: gebundelde transacties

Blocks: 'transacties' + 'nieuwe staat' van hele systeem

Huis huren

Een Ethereum-script kun je zo ingewikkeld maken als je zelf wil. Dat heet dan ook smart contract, al bestaat er discussie over die term. Met een slim contract leg je afspraken vast en via dat slimme contract is de uitvoering af te dwingen. Daarin kun je heel ver gaan en zelfs een hele organisatie maken die geheel en al functioneert vanuit de Ethereum-blockchain. Een dergelijke organisatie heet een decentrale autonome organisatie, of dao, en daar kun je theoretisch leuke dingen mee doen. Er is technisch geen verschil tussen een dao of een smart contract, al zal je de term sneller gebruiken voor een verzameling smart contracts.

Stel, je verhuurt huizen. Een huis heeft een slot dat geopend kan worden via een app op een smartphone. De hele wijze van transactie, borg, huur en verhuur is vastgelegd in een smart contract. Om het huis te huren, moet de huurder een bepaald bedrag plus de borg storten. Dat doet deze gebruiker via de digitale munteenheid van Ethereum: ether. Door het storten van ether verkrijgt de huurder een token. De huurder bewaart dat token in zijn eigen wallet op zijn smartphone.

Vervolgens komt de huurder bij het gehuurde huis aan en opent hij het elektronische slot via bluetooth, want in het slimme contract staat dat de deur bij een geaccepteerde transactie opengaat als een telefoon met dat token in de buurt is. Aan het eind van de huurperiode moet de huurder natuurlijk wel het huis uit, anders krijgt hij zijn borg niet terug. Door het terugsturen van het speciale token weet het contract dat de huurder in ieder geval het huis uit is en dat de deur niet meer door de huurder geopend kan worden. Vervolgens moet het appartement fysiek gecontroleerd worden en als alles goed bevonden is, stuurt de controleur een ander token op. Als de huurder binnen de tijd bleef, wordt de borg teruggestort. Is er een kopje stuk, dan worden de kosten daarvan van de borg ingehouden.

Het grote verschil met een bedrijf als Wimdu of Airbnb is dat iedereen gebruikmaakt van de gedeelde 'computer' op de Ethereum-blockchain en niet van een centrale server van een bedrijf. Die blockchain is van niemand en de applicatie waarmee zaken gedaan worden, wordt door niemand beheerd. De app, of de verzameling slimme contracten, is één keer aangemaakt in de blockchain en iedereen kan zien hoe de applicatie functioneert. Daardoor kunnen mensen rechtstreeks zakendoen in plaats van met een bemiddelende partij, die ook nog eens tussendoor voorwaarden kan wijzigen.

Dat laat meteen zien waarom sommigen vinden dat de naam 'smart contract' niet handig is gekozen. Het woord 'contract' geeft bij velen het gevoel dat er alleen iets wordt vastgelegd, maar er kan dus veel meer.