Een smart contract, of in het Nederlands een slim contract, is computercode op een blockchain. Dankzij deze mogelijkheid om op blockchains te programmeren zijn blockchains in staat om veel meer functionaliteit te bieden aan gebruikers. Bijvoorbeeld de creatie van nieuwe blockchain activa (tokens) of financiële diensten (DeFi).
Ethereum is het grootste platform dat smart contracts ondersteunt. Niet alle blockchains ondersteunen dus (een uitgebreide vorm van) smart contracts. Bitcoin is daar een voorbeeld van.
Smart contracts zijn bedacht door Nick Szasbo. Hij introduceerde het als een overeenkomst tussen twee partijen die automatisch wordt uitgevoerd. Als er aan bepaalde voorwaarden wordt voldaan, dan wordt het contract (de overeenkomst) uitgevoerd via de blockchain.
Neem bijvoorbeeld een huurcontract waar de huurder iedere 1e van de maand 1.000 euro moet overmaken naar de verhuurder. Nu moet je zelf een betaalopdracht invoeren bij je bank. In een ‘smart huurcontract’ op de blockchain zou een betaling automatisch gedaan worden op de 30e van de maand van de huurder naar de verhuurder.
Nu is dit een simpel voorbeeld van een mogelijk smart contract. Op een blockchain zoals Ethereum zijn alleen nog veel meer voorbeelden te vinden. Vaak zijn ze een stuk complexer en gaat het niet om een simpele overeenkomst. Smart contracts bestaan vaker uit vele regels aan computercode. Deze computercode wordt dan gebruikt om verschillende blockchain applicaties te programmeren. Of in jargon ook wel bouwen genoemd.
Om zelf een smart contract te programmeren heb je verschillende mogelijkheden. Er zijn namelijk meerdere computertalen waarin je op de blockchain kan programmeren. De bekendste smart contract taal is Solidity waarmee je op Ethereum kan bouwen.
Hoe deze computercode er dan precies uit ziet? Hieronder een voorbeeld uit onze eigen omgeving:
Smart contracts zijn dus simpel gezegd computercode op de blockchain. Er zijn alleen wel een aantal belangrijke verschillen met normale software.
De omgeving waar een smart contract opereert, is een blockchain. Dit is een wereldwijd netwerk van verschillende servers. Normale software opereert altijd op één server.
Het grote verschil tussen programmeren op een blockchain en ‘normaal’ programmeren is dat computercode, eenmaal op de blockchain gezet, onomkeerbaar is. In tegenstelling tot een traditioneel softwareprogramma dat altijd op een eigen server draait en je altijd volledig kan aanpassen of verwijderen.
Daarnaast moeten smart contracts altijd heel zuinig zijn met het gebruik van data, omdat ruimte op een blockchain als Ethereum erg duur kan zijn.
Tot slot kunnen smart contract geld beheren. Smart contract kunnen daarom worden gebruikt om financiële diensten te ontwikkelen, terwijl normale software voor een financiële dienst altijd nog afhankelijk is van een derde partij, zoals een bank.
Omdat smart contracts geld kunnen beheren, tot soms honderden miljoenen tot miljarden dollars, zijn ze een aantrekkelijk doelwit voor hackers. Hieronder een lijst van de drie voornaamste risico’s:
Er zijn ondertussen tientallen tot honderden smart contracts hacks te vinden. Enkele voorbeelden zijn The DAO-hack in 2016 waar 3,6 miljoen ETH werd gestolen. De dForce-hack in 2020, waar 25 miljoen dollar aan crypto werd gestolen. Of de Pickle Finance-hack in 2020, waar 20 miljoen dollar aan crypto werd gestolen.
Gelukkig is het na steeds meer hacks, steeds duidelijker welke veiligheidsmaatregelen techneuten moeten nemen. Daarnaast worden goede smart contracts grondig gecontroleerd en getest voordat ze worden uitgebracht op de blockchain. Dit wordt zowel door interne teams als door externe auditfirma’s gedaan. Enkele voorbeelden van deze auditfirma’s zijn ConsenSys Diligence, Trail of Bits, Quantstamp, OpenZeppelin of CertiK.
Smart contracts zorgen ervoor dat blockchains tot veel meer in staat zijn. Het zijn simpelweg computerprogramma’s op de blockchain, die net als normale software ‘als-dan’ situaties uitvoeren.
Nu worden smart contracts vooral ingezet voor financiële toepassingen, gaming en creatie van allerlei eigendomscertificaten (NFTs). In de toekomst kunnen deze mogelijkheden natuurlijk nog worden uitgebreid, omdat smart contracts relatief nieuw zijn.
Voor degenen die er geen genoeg van kunnen krijgen… Het bouwen van slimme contracten is voor iedereen weggelegd die de wil en al enige kennis heeft van Javascript of andere programmeertalen. Hieronder een gratis, 32-uur durende, cursus om te beginnen:
Weet u zeker dat u uw BeursBits-abonnement wilt stopzetten? Door hieronder op Stopzetten te drukken, maak u uw opzegging definitief.