Een smart contract is een programma dat op een blockchain draait en automatisch wordt uitgevoerd als aan de voorwaarden is voldaan. Het bewaart eigen gegevens en vaak ook eigen geld, en de regels worden afgedwongen door het netwerk in plaats van door een bedrijf of tussenpersoon. Na publicatie kan iedereen de code bekijken en controleren wat die doet. Smart contracts vormen de basis van tokens, NFT's, DeFi-protocollen, DAO's en veel meer.
Hoe werkt een smart contract?
- Code: op Ethereum en andere EVM-chains worden smart contracts meestal geschreven in Solidity en gecompileerd tot bytecode voor de EVM; op Solana in Rust.
- Publicatie: het gecompileerde contract wordt in een transactie op de blockchain gezet en krijgt een eigen adres.
- Interactie: gebruikers en andere contracten roepen de functies aan met transacties en betalen gas voor de berekening.
- Deterministische uitvoering: elke node voert dezelfde code uit met hetzelfde resultaat, zodat één partij de uitkomst niet kan manipuleren.
- Status: het contract bewaart saldi, eigendom en instellingen op de blockchain.
Voorbeeld: een escrowcontract
Een koper stort geld in een escrowcontract. Het contract geeft het geld pas aan de verkoper als de koper de levering bevestigt, of stort het na een deadline terug als er niets gebeurt. Er is geen escrowbedrijf nodig: de regels staan in de code, en niemand, ook de ontwikkelaar niet, kan buiten die regels om bij het geld.
Beperkingen en risico's
- Fouten zijn duur: contracten beheren vaak grote bedragen, en een kwetsbaarheid kan binnen minuten worden misbruikt. Testen, audits en beproefde libraries zoals OpenZeppelin zijn onmisbaar.
- Onveranderlijk: gepubliceerde code kan niet worden aangepast. Voor upgrades is een proxypatroon nodig, met eigen vragen over beheer en beveiliging.
- Geen directe toegang tot externe gegevens: koersen, weer of leverstatus moeten via een oracle binnenkomen.
- Niet automatisch een juridisch contract: een smart contract is code; of het juridisch bindend is, hangt af van de afspraken eromheen.
Zie onze smart contract ontwikkeling, ondersteuning bij audits en upgradebare contracten.
Veelgestelde vragen over smart contracts
Kan een smart contract worden aangepast?
De gepubliceerde code zelf niet. Contracten met een proxypatroon kunnen naar nieuwe code verwijzen, maar die bevoegdheid moet goed beveiligd zijn, bijvoorbeeld met een multisig en een timelock.
In welke taal worden smart contracts geschreven?
Meestal Solidity voor Ethereum en EVM-chains, soms Vyper. Programma's op Solana worden in Rust geschreven, vaak met het Anchor-framework.
Wat kost het gebruik van een smart contract?
Elke interactie kost gas, te betalen aan het netwerk. Het bedrag hangt af van de complexiteit van de functie en de drukte op het netwerk; op layer 2-netwerken is het meestal veel lager.
Waarom zijn audits van smart contracts belangrijk?
Omdat fouten niet zomaar te herstellen zijn en aanvallers er actief naar zoeken. Een audit door onafhankelijke specialisten, samen met grondige tests, verkleint het risico op verlies van geld sterk.