Wat is een smart contract? Zo werkt het, met voorbeelden
Een smart contract is een programma op een blockchain dat automatisch draait als aan vooraf bepaalde voorwaarden is voldaan. Zodra het live staat, kan niemand het stoppen, de regels veranderen of een transactie blokkeren die het moet uitvoeren. Daarom kunnen smart contracts geld verplaatsen zonder een bank of broker ertussen.
Smart contracts zijn de motor achter decentralized finance (DeFi), decentrale exchanges, stablecoins en NFT’s. Heb je ooit een token geswapt in een wallet-app, dan heb je er een gebruikt.
Wat is een smart contract, in gewone woorden?
Een smart contract is een reeks “als dit, dan dat”-regels, geschreven als code en opgeslagen op een blockchainnetwerk. Als aan de vooraf bepaalde voorwaarden is voldaan, voert het contract zelf zijn instructies uit, en het resultaat wordt op de blockchain vastgelegd, zodat iedereen het kan controleren.
De klassieke vergelijking is een snoepautomaat. Je werpt het juiste bedrag in, kiest een snack en de automaat geeft hem af. Niemand hoeft je geld te controleren of de verkoop goed te keuren: de regels zitten in de machine. Smart contracts werken op dezelfde manier voor digitale activa. De informaticus Nick Szabo beschreef het idee in de jaren 1990, maar het werd pas praktisch toen Ethereum in 2015 werd gelanceerd, met een blockchain die gebouwd was om zulke computerprogramma’s te draaien.
Ondanks de naam is een smart contract geen juridische overeenkomst. Het is software. Het kan de afspraken uitvoeren die twee partijen maken, maar het vervangt geen juridische contracten of geschillenbeslechting bij de rechter.
Hoe smart contracts werken
Smart contracts werken in vier stappen: ze worden geschreven, uitgerold, geactiveerd en uitgevoerd.
- Geschreven. Een ontwikkelaar schrijft de code van het smart contract in een programmeertaal, meestal Solidity op Ethereum.
- Uitgerold. De code wordt op een blockchain gezet en krijgt een eigen contractadres, net zoals een wallet een adres heeft. Vanaf dat moment staat het contract op een blockchain waarvan elke node een kopie heeft.
- Geactiveerd. Iemand stuurt een transactie naar het contractadres, bijvoorbeeld om tokens te swappen of geld te storten.
- Uitgevoerd. Elke node in het netwerk draait de code op dezelfde manier, op Ethereum in de Ethereum Virtual Machine, en is het eens over het resultaat. Als aan de voorwaarden is voldaan, verplaatst het contract het geld. Zo niet, dan mislukt de transactie.
Elke stap kost rekenkracht, dus je betaalt voor elke transactie een gas fee aan het netwerk. Bij drukte op het netwerk stijgen die kosten, en dan kan een eenvoudige swap meer kosten dan de transactie waard is.
Waar smart contracts externe data vandaan halen
Een blockchain kan de echte wereld niet uit zichzelf zien. Een contract dat uitbetaalt als de euro een bepaalde koers bereikt, heeft externe data nodig. Die data komt van “oracles”, diensten die gegevens uit de echte wereld, zoals koersen of het weer, naar de blockchain doorgeven. Ze zijn ook een zwakke plek: als een oracle een verkeerde koers doorgeeft, voert het contract uit op basis van verkeerde data.
Een voorbeeld van een smart contract
Stel dat je voor € 500 aan ether wilt ruilen voor een euro-stablecoin op een decentrale exchange. Je verbindt je eigen wallet en bevestigt de swap. Eén smart contract controleert dan je saldo, berekent de prijs op basis van de tokens in zijn liquidity pool, neemt je ether en stuurt de stablecoin terug, allemaal in één transactie. Op geen enkel moment heeft een bedrijf je geld in handen, en als er iets misgaat, wordt de hele transactie teruggedraaid en ben je alleen de gas fee kwijt.
Andere voorbeelden van smart contracts in crypto:
- Tokens. Elke ERC-20-token, ook de meeste stablecoins, is een smart contract dat bijhoudt wie hoeveel bezit.
- Lending. DeFi-apps voor lending bewaren stortingen en geven automatisch leningen vrij als er genoeg onderpand is vastgezet.
- Non-fungible tokens. NFT-contracten leggen eigendomsrechten op een specifiek digitaal item vast.
- Governance. DAO’s gebruiken smart contracts om stemmen te tellen en besluiten uit te voeren.
Buiten crypto hebben bedrijven smart contracts getest voor ketenbeheer, verzekeringsuitkeringen, vastgoedtransacties en documenten voor de wereldhandel. Die ideeën zijn veelbelovend, maar het meeste gebruik in de echte wereld is nog klein vergeleken met het gebruik in DeFi.
De mogelijke voordelen van smart contracts
Smart contracts hebben een aantal voordelen ten opzichte van traditionele contracten als de regels eenvoudig zijn en de activa digitaal:
- Automatisch. Ze worden automatisch uitgevoerd zodra aan de voorwaarden is voldaan, zonder papierwerk of wachten op een bank.
- Transparant. De code en alle blockchaintransacties zijn openbaar, dus iedereen kan zien wat een contract doet.
- Minder tussenpersonen. Zonder tussenpersonen kunnen de administratieve kosten dalen en verdwijnen punten waar één storing alles kan stilleggen.
- Moeilijk te manipuleren. Doordat de gegevens op de blockchain onveranderlijk zijn, kan niemand stilletjes een eerdere transactie wijzigen.
Ontwikkeling van smart contracts
Smart contracts ontwikkelen is een gespecialiseerde vorm van programmeren, omdat fouten openbaar en meestal blijvend zijn. Op Ethereum en compatibele netwerken schrijven ontwikkelaars vooral in Solidity; andere blockchains gebruiken andere talen, zoals Rust op Solana. Voor de lancering test een zorgvuldig team de code, publiceert het die zodat iedereen hem kan lezen, en betaalt het externe auditors om naar fouten te zoeken. Veel projecten hebben ook bugbounty’s die hackers betalen om problemen te melden in plaats van ze te misbruiken.
Voor jou als gebruiker is dat proces iets om te controleren, niet iets om zelf te doen. Een project met openbare, geauditeerde code, een lange staat van dienst en veel gebruikers brengt nog steeds risico mee, maar het is een veel kleinere gok dan een contract dat vorige week door een anoniem team is gelanceerd.
Risico’s en kwetsbaarheden van smart contracts
Het grootste risico van smart contracts is dat de code precies doet wat er staat, fouten inbegrepen. Foute code los je niet op door de klantenservice te bellen, en een gestolen saldo kan meestal niet worden teruggedraaid.
Het bekendste geval is The DAO in 2016, een vroeg investeringsfonds op Ethereum dat door een smart contract werd beheerd. Door een bug kon een aanvaller een groot deel van de ether eruit halen, en de Ethereum-gemeenschap splitste het netwerk met een hard fork om dat terug te draaien. Sindsdien zijn kwetsbaarheden in smart contracts een van de belangrijkste manieren gebleven waarop DeFi-gebruikers geld verliezen.
Let op deze risico’s:
- Bugs. Zelfs geauditeerde contracten zijn gehackt. Een audit verlaagt het risico, maar haalt het niet weg.
- Adminsleutels. Veel contracten kunnen worden geüpgraded of gepauzeerd door het team dat ze bouwde. Dat helpt om bugs op te lossen, maar betekent dat je dat team vertrouwt.
- Onbeperkte goedkeuringen. Als je een DeFi-app gebruikt, vraagt je wallet vaak of je het contract toestemming geeft om je tokens uit te geven. Met een onbeperkte goedkeuring kan een kwaadaardig of gehackt contract die token volledig uit je wallet halen. Keur alleen het bedrag goed dat je nodig hebt, en trek oude goedkeuringen in.
- Nepcontracten. Oplichters kopiëren populaire tokens. Controleer het contractadres op de officiële site van het project voordat je koopt.
Smart contracts en EU-regels
In de EU regelt MiCA bedrijven die cryptodiensten aanbieden, geen code. Diensten die volledig gedecentraliseerd worden verleend, zonder enige tussenpersoon, vallen buiten MiCA. De meeste DeFi-apps hebben dus geen bedrijf met een vergunning erachter en geen toezichthouder waar je kunt klagen.
Dat is voor jou het praktische verschil. Koop je crypto op een exchange met een MiCA-vergunning, dan heb je te maken met een bedrijf onder toezicht en een klachtenprocedure. Gebruik je een smart contract vanuit je eigen wallet, dan heb je meer controle maar geen vangnet, en dat hoort bij de afweging van eigen beheer (self-custody). Ben je hier nieuw in, begin dan met kleine bedragen en lees eerst onze pagina over DeFi.
Conclusie: smart contracts in het kort
Een smart contract is code op een blockchain die vanzelf draait als aan voorwaarden is voldaan. Het maakt tokens, swaps op een DEX en lending in DeFi mogelijk zonder tussenpersoon, maar bugs, foute data en slordige goedkeuringen kunnen je geld kosten dat niemand je kan teruggeven. Gebruik bekende contracten, keur alleen goed wat je nodig hebt, en houd grotere bedragen weg bij experimentele apps.
Veelgestelde vragen
Wat is een smart contract in eenvoudige woorden?
Het is een klein programma op een blockchain dat precies doet wat de code zegt als aan bepaalde voorwaarden is voldaan, zoals tokens versturen zodra een betaling binnenkomt. Niemand kan het halverwege stoppen of wijzigen.
Is Bitcoin een smart contract?
Nee. Bitcoin heeft een eenvoudig scriptsysteem dat basisvoorwaarden ondersteunt, zoals betalingen waarvoor meerdere handtekeningen nodig zijn, maar het is niet ontworpen voor complexe programma's. Ethereum en vergelijkbare netwerken zijn gebouwd voor smart contracts.
Kun je smart contracts vertrouwen?
Je kunt erop vertrouwen dat een smart contract draait zoals het geschreven is, maar niet dat het goed geschreven is. Bugs, adminsleutels en foute prijsdata hebben tot grote verliezen geleid, dus een contract is maar zo betrouwbaar als de code en het team erachter.
Zijn smart contracts juridisch bindend?
Niet automatisch. Een smart contract is code, geen juridisch contract, al kan het worden gebruikt om een overeenkomst uit te voeren die wel juridisch bindend is. Of een rechter het als een contract behandelt, hangt af van het nationale recht.
Hoe schrijf je een smart contract?
Ontwikkelaars schrijven smart contracts in een programmeertaal zoals Solidity, testen ze en zetten ze daarna op een blockchain door een gas fee te betalen. Grote projecten betalen meestal voor een onafhankelijke beveiligingsaudit voor de lancering.