Wat zijn smart contracts?
Basisprincipes
In de jaren 1990 introduceerde Nick Szabo het concept smart contracts. Hij definieerde ze als instrumenten die protocollen combineren met gebruikersinterfaces om computernetwerken te beveiligen. Szabo stelde voor smart contracts te gebruiken in verschillende domeinen met contractuele overeenkomsten, waaronder kredietsysteem, betalingsverwerking en beheer van contentrechten.
In de wereld van cryptocurrencies kunnen smart contracts worden gezien als programma's of applicaties die op een blockchain draaien. Meestal functioneren ze als digitale overeenkomsten die worden afgedwongen door vooraf gedefinieerde regels in computercode. Alle knooppunten in het netwerk repliceren en voeren deze code uit.
Smart contracts op een blockchain maken trustless protocollen mogelijk, waarbij twee partijen via de blockchain kunnen vastleggen zonder elkaar te kennen of te vertrouwen. Ze kunnen erop vertrouwen dat de overeenkomst niet wordt uitgevoerd als aan de voorwaarden niet is voldaan. Daarnaast elimineren smart contracts de noodzaak van tussenpersonen, wat operationele kosten aanzienlijk kan verlagen.
Hoewel Bitcoin al jaren smart contracts ondersteunt, maakte de oprichter van Ethereum, Vitalik Buterin, ze echt populair. Verschillende blockchains kunnen echter unieke implementaties van smart contracts hebben.
Dit artikel richt zich op smart contracts die draaien op de Ethereum Virtual Machine (EVM), een cruciaal onderdeel van de Ethereum-blockchain.
Hoe werken smart contracts?
Wanneer aan bepaalde voorwaarden is voldaan, voert een smart contract een specifieke taak uit en werkt het als een deterministisch programma. Een smart contract-systeem volgt "als… dan…"-logica. Ondanks hun naam zijn smart contracts echter noch slim, noch juridische contracten; het is stuk code dat draait op een gedistribueerd systeem zoals een blockchain.
Smart contracts op het Ethereum-netwerk voeren en beheren blockchain-operaties wanneer gebruikers (adressen) interactie hebben. Adressen die geen smart contracts zijn, zijn extern beheerde accounts (EOA) die door gebruikers worden gecontroleerd, terwijl smart contracts worden aangestuurd door computercode.
Ethereum-smart contracts bestaan uit twee componenten: de contractcode en twee openbare sleutels. De eerste sleutel wordt geleverd door de maker van het contract en de andere sleutel vertegenwoordigt het contract zelf en dient als unieke digitale identifier.
Smart contracts worden gedeployed via een blockchain-transactie en worden alleen geactiveerd wanneer ze worden aangeroepen door een EOA of andere smart contracts. De eerste activatie wordt echter altijd door een EOA gestart.
Belangrijkste kenmerken van smart contracts
Smart contracts op het Ethereum-netwerk hebben de volgende kernkenmerken:
- Ze zijn gedistribueerd en worden gerepliceerd op alle knooppunten van het netwerk, in tegenstelling tot oplossingen die op gecentraliseerde servers draaien.
- Ze zijn deterministisch en zullen alleen hun aangewezen acties uitvoeren wanneer de vereisten zijn vervuld. Het resultaat is voor iedereen hetzelfde ongeacht wie ze uitvoert.
- Ze zijn autonoom en kunnen taken automatiseren als zelfuitvoerend programma. Als ze niet worden geactiveerd, blijven ze echter inactief.
- Ze zijn onveranderlijk, wat betekent dat ze niet gewijzigd kunnen worden na deployment, maar ze kunnen worden "verwijderd" als er tijdens het schrijven van de code een specifieke functie daarvoor is ingebouwd. Dit zorgt voor metingbestendige code.
- Ze zijn aanpasbaar en kunnen op verschillende manieren gecodeerd worden vóór deployment, waardoor ze nuttig zijn bij het creëren van verschillende soorten gedecentraliseerde applicaties (DApps). Dit komt doordat Ethereum een Turing-complete blockchain is.
- Ze zijn trustless, wat twee of meer partijen in staat stelt te interacteren zonder voorafgaande kennis of vertrouwen. Blockchaintechnologie waarborgt de juistheid van de data.
- Ze zijn transparant omdat ze op een publieke blockchain zijn gebaseerd, wat betekent dat hun broncode zichtbaar is voor iedereen.
Is het mogelijk een smart contract te wijzigen of te verwijderen?
Het wijzigen of verwijderen van een Ethereum-smart contract na deployment is niet mogelijk. De SELFDESTRUCT-functie is de enige manier om een contract te "verwijderen", maar deze moet in de code zijn opgenomen tijdens het aanmaken. Als die functie ontbreekt, is het contract immutabel en kan het niet worden verwijderd. Ontwikkelaars kunnen echter upgradebare smart contracts maken die meer flexibiliteit bieden door de code op te splitsen in kleinere contracts. Sommige van deze contracts kunnen verwijderd en vervangen worden, terwijl andere onveranderlijk blijven. Het proces om upgradeable smart contracts te creëren kan in complexiteit variëren.
Gebruikscases en voordelen van smart contracts
Smart contracts bieden diverse voordelen en gebruiksmogelijkheden dankzij hun programmeerbare aard. Ze kunnen op meerdere manieren ontworpen worden om verschillende diensten en oplossingen te bieden. Als gedecentraliseerde en zelfuitvoerende programma's bieden smart contracts meer transparantie en lagere operationele kosten, terwijl ze de efficiëntie verhogen en bureaucratische lasten verminderen.
Smart contracts zijn bijzonder nuttig in scenario's waarbij overdracht of uitwisseling van fondsen tussen meerdere partijen betrokken is. Ze kunnen worden gebruikt voor uiteenlopende use cases, zoals het creëren van getokeniseerde activa, stemsystemen, crypto-wallets, gedecentraliseerde beurzen, spellen en mobiele applicaties. Bovendien kunnen ze samen met andere blockchainoplossingen worden ingezet in sectoren als gezondheidszorg, liefdadigheid, supply chain, governance en Decentralized Finance (DeFi). Samengevat zijn smart contracts zeer aanpasbaar en kunnen ze zo worden ontworpen dat ze veel verschillende diensten en oplossingen bieden.
ERC-20-tokens
De Ethereum-blockchain vormt de basis voor veel tokens die zijn gestandaardiseerd volgens de ERC-20-specificatie. Dergelijke tokens worden vaak ERC-20-tokens genoemd en vormen een aanzienlijk deel van de huidige cryptomarkt.
Tal van startups en blockchainbedrijven hebben smart contracts gebruikt om hun eigen tokens op het Ethereum-netwerk te creëren, waarbij Initial Coin Offering (ICO)-evenementen vaak de gebruikelijke distributiemethode waren. Door smart contracts in het ICO-proces op te nemen, kunnen bedrijven de uitwisseling van fondsen en de distributie van tokens op een efficiënte en veilige manier afhandelen zonder te moeten vertrouwen op derden.
Beperkingen
De gedecentraliseerde en programmeerbare aard van smart contracts biedt veel voordelen, zoals meer transparantie en efficiëntie, lagere kosten en een breed scala aan use cases. Toch zijn er ook enkele beperkingen waar rekening mee moet worden gehouden.
Een beperking is het risico op kwetsbaarheden en bugs door door mensen geschreven code. Om deze risico's te minimaliseren is het aan te raden ervaren programmeurs in te schakelen voor het schrijven en deployen van smart contracts, vooral wanneer gevoelige informatie of grote geldbedragen betrokken zijn.
Bovendien kunnen gecentraliseerde systemen vergelijkbare functionaliteiten bieden als smart contracts. Het belangrijkste verschil is dat smart contracts draaien op een gedistribueerd P2P-netwerk, waardoor ze onveranderlijk zijn of op zijn minst moeilijk aan te passen. Hoewel onveranderlijkheid in bepaalde situaties wenselijk kan zijn, kan het in andere situaties nadelig zijn. Toen The DAO in 2016 bijvoorbeeld werd gehackt door fouten in zijn smart contract-code, werden miljoenen ETH gestolen. De onveranderlijkheid van het contract verhinderde dat ontwikkelaars het konden repareren, wat leidde tot een hard fork en de creatie van een tweede Ethereum-keten.
Een andere beperking is de onzekere juridische status van smart contracts, die niet altijd stroken met bestaande wettelijke kaders. Sommige contracten vereisen bijvoorbeeld correcte identificatie en leeftijdsverificatie van beide partijen, wat bedreigd kan worden door de pseudonimiteit en het ontbreken van tussenpersonen bij blockchaintechnologie. Deze uitdaging rondom juridische afdwingbaarheid is vooral relevant voor grensoverschrijdende en gedistribueerde netwerken.
Een kritische blik op smart contracts
Het idee dat smart contracts commerciële en bureaucratische systemen kunnen vervangen en automatiseren is populair onder blockchainliefhebbers. In de praktijk blijkt dit echter voor veel reële problemen niet haalbaar vanwege de beperkingen van smart contracts.
Hoewel smart contracts een fascinerende technologie zijn, kunnen hun gedistribueerde, deterministische, transparante en onveranderlijke eigenschappen ze in sommige situaties minder aantrekkelijk maken. Daardoor kiezen sommige organisaties er wellicht voor conventionele servergebaseerde alternatieven te gebruiken in plaats van smart contracts.
Een van de voornaamste kritieken op smart contracts is dat ze voor bepaalde use cases ongeschikt zijn. Gecentraliseerde servers zijn in vergelijking eenvoudiger en kosteneffectiever te onderhouden en bieden vaak meer efficiëntie qua snelheid en communicatie tussen netwerken.
Conclusie
Smart contracts hebben de blockchainindustrie veranderd en een significante invloed gehad op cryptocurrencies. Hoewel gebruikers doorgaans niet direct met smart contracts interageren, hebben ze het potentieel om een breed scala aan applicaties aan te drijven, van financiële diensten tot supply chainmanagement.
Smart contracts en blockchain hebben het potentieel de maatschappij te veranderen, maar het blijft onzeker of deze baanbrekende technologieën de obstakels naar brede adoptie kunnen overwinnen.