In mijn bijdrage 'Blockchain, waar hebben we het eigenlijk over!?' van 7 september jongstleden, heb ik uitvoerig stilgestaan bij de mogelijkheden en voordelen van blockchain. In deze blog ga ik in op smart contracts die nog veel meer veranderingen teweeg kunnen gaan brengen dan de meest bekende blockchain: Bitcoin. Maar wat zijn smart contracts en decentralized apps?
Met bitcoin ontstond een platform waarmee veilig elektronische transacties konden worden uitgevoerd tussen twee partijen die elkaar op voorhand niet hoeven te vertrouwen. Dus zonder tussenkomst van een derde, vertrouwde partij (zoals een bank). Met bitcoin beperken deze transacties zich vooral tot de valuta bitcoin, al bestaan er diverse alternatieven voor andere assets (goederen met een economische waarde). Smart contracts bieden de mogelijkheid om dit soort transacties automatisch te laten uitvoeren volgens vooraf vastgelegde afspraken.
Het idee van smart contracts is niet nieuw. In 1996 schreef Nick Szabo al over smart contract. Szabo is een computerwetenschapper die al lange tijd publiceert over crypocurrencies en decentrale waardenetwerken, zoals goud. Hij wordt dan ook regelmatig in verband gebracht met het pseudoniem Satoshi Nakamoto (de bedenker van bitcoin), waarvan tot op heden niet bekend is wie daarachter zit.
Smart contracts zijn dus afspraken rondom een transactie die vooraf zijn geprogrammeerd en automatisch kunnen worden uitgevoerd. Belangrijk om te realiseren is dat het dus geen contracten zijn met een juridische geldigheid. Over deze geldigheid (en wet- en regelgeving) wordt momenteel veel gediscussieerd. Lees voorlopig contracts als een set afspraken en smart als vooraf geprogrammeerd en autonoom.
Ethereum
De blockchain Ethereum is volledig gericht op het ondersteunen van dit soort smart contracts, door een ‘Turing-complete‘-programmeertaal aan te bieden, waarmee feitelijk elk denkbaar soort contract kan worden ontwikkeld. Ethereum werd eind 2013 beschreven door Vitalik Buterin, in de paper ‘A next generation smart contract & decentralized application platform’.
De Ethereum blockchain is grotendeels gebaseerd op bitcoin en geschikt gemaakt voor smart contracts, door de toevoeging van een programmeertaal, een virtual machine die deze contracten kan uitvoeren en een digitale munt genaamd ether voor het vergoeden van de gebruikte rekenkracht. Het doel van Ethereum is het bieden van een platform waarmee decentralized applications (Dapps) kunnen worden gebouwd.
Programmeerbare transacties
Waar bitcoin een platform biedt waar eigenlijk een type transactie mogelijk is, namelijk het overmaken van een hoeveelheid bitcoins van partij a naar partij b, kan op Ethereum de transactie geprogrammeerd worden. En niet alleen de transactie (en alle voorwaarden), maar ook de asset. Dit kan simpelweg ether zijn, maar ook een zelf gedefinieerd token. Bijvoorbeeld een eigen munt, een spaarpunt of de digitale versie van een schilderij. Ik noem maar wat. Deze vrijheden in zowel de transactie als de asset, maken het mogelijk dat smart contracts kunnen worden ingezet in vrijwel elk denkbare overdracht van assets. En dat allemaal met een platform dat dezelfde veiligheid biedt als bitcoin, ondanks het ‘gebrek’ aan vertrouwde partij (zie eerdere blog).
Net als bij bitcoin werk je op Ethereum met een wallet, waarin je je ether bewaart. Ether is noodzakelijk voor het kunnen uitvoeren van een smart contract. Omdat een smart contract een stuk code is, dient deze te worden uitgevoerd op de virtual machine (zeg maar een denkbeeldige computer) op de blockchain, waardoor de transactie daadwerkelijk plaatsvindt. Doordat het een blockchain is, voert niet alleen de miner de code uit, maar vervolgens ook alle (full) nodes (zodat er consensus is over de juistheid). Om enerzijds de miner te compenseren voor de gebruikte rekenkracht, en anderzijds om transacties meer prioriteit te kunnen geven, wordt een fee meegestuurd. Dit lijkt op de fee van bitcoin, al bestaat het op Ethereum uit een gas price en een gas limit, die vermenigvuldigd met elkaar de fee zijn. Gas is het aantal operaties (de instructies) dat uitgevoerd wordt in het contract op de virtual machine. Hoe complexer of groter het contract, des te meer operaties uitgevoerd moeten worden. Met gas limit geef je op hoeveel operaties je maximaal wilt laten uitvoeren, en met de gas price geef je de prijs (in ether) die je betaalt per operatie. Bijkomend voordeel is dat hiermee wordt voorkomen dat te complexe code (die teveel tijd vraag voor de uitvoer) kan worden uitgevoerd op de blockchain.
In tegenstelling tot bitcoin is de tijd om een block te mine-n zo’n vijftien à twintig seconden. De transactiesnelheid ligt hierdoor een stuk hoger dan bij Bitcoin. Lees deze blog om meer inzicht te krijgen in de veiligheid van deze block time.
Dapps
Een smart contract maakt nog niet een applicatie die bruikbaar is. Op z’n minst is een gebruikersinterface nodig. Rondom een smart contract is het mogelijk een webapplicatie te ontwikkelen (met gangbare frameworks) die communiceert met de blockchain (Ethereum). Belangrijk daarin is dat het kunnen uitvoeren van een transactie (smart contract) het hebben van een node (een kopie van het grootboek) vereist. Simpelweg zijn er voor Ethereum twee mogelijkheden: het gebruik van Mist (een browser die onder water een Ethereum node bevat) of Chrome met de MetaMask-plugin (wat een bridge is naar de Ethereum node die MetaMask zelf host). Webapplicaties die gebruikmaken van de blockchain via smart contracts worden Decentralized applications genoemd, of te wel Dapps. Doordat de logica is vastgelegd in één of meerdere smart contracts, kunnen we spreken over een gedecentraliseerde applicatie.
Om een idee te geven van de mogelijkheden die Dapps biedt, geef ik hieronder een aantal interessante voorbeelden:
Crowdsale. Voorbeeld van een crowdsale waarmee de afspraken rondom het doel van de crowdsale in een smart contract worden vastgelegd. Als het doel wordt gehaald, wordt de donatie in het project gestoken. Wanneer het doel niet behaald wordt, worden de donaties teruggestort zoals vastgelegd in het smart contract. Er is geen te vertrouwen, centrale partij nodig wat de kosten enorm verlaagd.
Decentralized Autonomous Organization (Dao). ‘The Blockchain, no one knows you’re a fridge’ Richard Brown. In veel voorbeelden worden contracts gemaakt en aangeroepen door personen, maar dat is niet noodzakelijk. Ethereum maakt het net zo goed mogelijk dat bots of sensors gebruikmaken van contracts. En contracten kunnen op hun beurt weer tokens bezitten, meedoen aan crowdsales en zelfs stemrecht hebben in andere contracten. Hierdoor kunnen geheel geautomatiseerde organisaties ontstaan.
Slock.it. Dit initiatief werkt aan een universal sharing network (usn), een open source infrastructuur waarmee elk object kan worden gevonden, gehuurd en beheerd, vanaf overal ter wereld. Peer to peer, zonder tussenkomst van een ‘te vertrouwen partij’ zoals Airbnb.
Middle man
Moet de middle man zich zorgen maken? Op korte termijn niet verwacht ik. De technologie staat nog in de kinderschoenen en het gebruiksgemak laat te wensen over. De komende jaren verbetert dit drastisch, waardoor te verwachten is dat in een periode van drie tot vijf jaar blockchain meer mainstream wordt in allerlei toepassingen.
De impact onderschatten we nu waarschijnlijk, zoals dat vaak gebeurt met technologische veranderingen. De middle man (zoals banken, Airbnb, et cetera) sorteert inmiddels ook voor op blockchain, al was het maar uit verdediging. Hun tijd is op korte termijn niet uitgespeeld, maar drastisch veranderen gaat het wel, dat bewijzen de genoemde voorbeelden.
Interesse in meer?
In een volgende blog zal ik stilstaan bij het ontwikkelen van een smart contract. Welke technieken en tooling komen hierbij kijken, hoe is een smart contract te testen en te deployen.
Heb je interesse gekregen in het ontwikkelen van smart contracts en Dapps? Neem eens contact met me op! Deze ontwikkelingen vragen namelijk om diversiteit en experimenteren!
ETH is technisch vernuft maar kent ook een duistere keerzijde. Het is geschreven in C en juist door de vele mogelijkheden zullen er veel zwakheden zitten. In de core, maar ook in de implementatie. Dit is een verhoogd risico met als voorbeeld : https://hackernoon.com/yes-this-kid-really-just-deleted-150-million-dollar-by-messing-around-with-ethereums-smart-2d6bb6750bb9
Ik zeg niet dat ETH slecht is, maar het maakt me wel huiverig omdat ik als gebruiker of afnemer de risico’s niet goed in kan schatten..