Wat zijn Smart Contracts?

Delen
Copied to clipboard!
Wat zijn Smart Contracts?
Luister naar het artikel
00:00 / 00:00

Nick Szabo beschreef smart contracts voor het eerst in de jaren negentig. Destijds definieerde hij een smart contract als een hulpmiddel dat computernetwerken vorm geeft en beveiligt door protocollen te combineren met gebruikersinterfaces. Szabo stelde dat slimme contracten op verschillende gebieden kan worden gebruikt onder andere bij contractuele overeenkomsten - zoals kredietsystemen, betalingsverwerking en beheer van inhoudsrechten.

In de wereld van cryptocurrencies kunnen we een smart contract definiëren als een applicatie of programma dat op een blockchain draait. Meestal werken ze als een digitale overeenkomst die wordt opgelegd door een specifieke set regels. Deze regels zijn vooraf bepaald door een computercode, die wordt gekopieerd en uitgevoerd door alle netwerk knooppunten.

In principe maken smart contracts de creatie van betrouwbare protocollen mogelijk. Dit houdt in dat twee partijen een verplichtingen aangaan via blockchain, zonder elkaar te kennen of te vertrouwen. Ze hebben de zekerheid dat de transactie niet doorgaat als er niet aan alle voorwaarden is voldaan. Daarnaast kunnen smart contracts eventuele tussenpersonen weglaten, waardoor kosten aanzienlijk worden verlaagd.

Hoewel het Bitcoin-protocol al vele jaren smart contracts ondersteunt, werd het gebruik hiervan populair door de maker en mede-oprichter van Ethereum, Vitalik Buterin. Overigens kan elke blockchain een andere methode hanteren voor de implementatie van smart contracts. 

Dit artikel zal zich voornamelijk richten op de smart contracts die draaien op de Ethereum Virtual Machine (EVM), wat een essentieel onderdeel is van de Ethereum-blockchain.


Hoe werken ze?

Simpel gezegd, werkt een smart contract als een deterministisch programma. Het voert een bepaalde taak uit als er aan bepaalde voorwaarden is voldaan. Hierdoor volgen smart contracts vaak "if… then…" argumenten. Ondanks de suggestieve naam zijn smart contracts niet slim en ook geen contracten. Het blijft slechts code dat op een gedistribueerd systeem (blockchain) draait.

Op het Ethereum-netwerk beheren smart contracts de blockchain-activiteiten die plaatsvinden wanneer gebruikers (adressen) met elkaar in contact treden. Elk adres dat geen smart contract is, wordt een externally owned account (EOA) genoemd. Smart contracts worden dus beheerd door computercode en EOA's worden beheerd door gebruikers.

Ethereum-smart contracts bestaan in principe uit een contractcode en twee public keys. De eerste public key is die van de maker van het contract. De andere key vertegenwoordigt het contract zelf en fungeert als een digitale identificatie die uniek is voor elk smart contract.

Smart contracts worden geïnitieerd door blockchain-transacties en worden alleen geactiveerd als ze worden opgeroepen door een EOA (of door andere smart contracts). De eerste trigger wordt altijd gegeven door een EOA (user).


Belangrijkste kenmerken

Ethereum smart contracts hebben doorgaans de volgende kenmerken:

Distributie: Smart contracts worden gekloond en gedistribueerd in alle nodes van het Ethereum-netwerk. Dit is een van de vooraanstaande verschillen met andere oplossingen die gebaseerd zijn op gecentraliseerde servers.

Vastberadenheid: Smart contracts voeren alleen de acties uit waarvoor ze zijn ontworpen, mits deze aan de vereisten voldoen. Ook zal het resultaat altijd hetzelfde zijn, ongeacht wie ze uitvoert.

Autonoom: Smart contracts kunnen allerlei taken automatiseren en opereren als een autonoom programma. In de meeste gevallen blijft een smart contract in rust als deze niet getriggerd wordt en worden er geen acties uitgevoerd.

Onveranderlijk: Smart contracts kunnen niet worden gewijzigd als ze gestart zijn. Ze kunnen alleen worden verwijderd als de functie al eerder was uitgevoerd. We kunnen dus stellen dat smart contracts fraudebestendige code kunnen bieden.

Aanpasbaar: Voor de implementatie, kunnen smart contracts op veel verschillende manieren worden herschreven. Op deze wijze kan men ze gebruiken om vele soorten gedecentraliseerde applicaties te maken (DApps). Dit houdt verband met het feit dat Ethereum een Turing complete blockchain is.

Betrouwbaarheid: Twee of meer partijen in contact treden via slimme contracten zonder elkaar te kennen of te vertrouwen. Daarnaast zorgt blockchain-technologie ervoor dat de gegevens nauwkeurig zijn.

Transparant: Aangezien smart contracts gebaseerd zijn op een openbare blockchain, is hun broncode niet alleen onveranderlijk maar ook inzichtelijk voor iedereen.


Kan ik een smart contract veranderen of verwijderen?

Het is onmogelijk om nieuwe functies toe te voegen aan een Ethereum smart-contract na implementatie. Als de maker de functie SELFDESTRUCT in de code opneemt, kunnen ze het smart contract "verwijderen" en vervangen door een nieuwe. Als de functie daarentegen niet vooraf in de code is opgenomen, kunnen ze deze niet verwijderen.

Zogenaamde upgradeable smart contracts geven ontwikkelaars overigens meer flexibiliteit inzake de onveranderlijkheid van de contracten. Er zijn meerdere manieren om upgradeable smart contracts te maken, met verschillende gradaties van complexiteit.

Laten we in een simpel voorbeeld aannemen dat een smart contract is opgedeeld in meerdere kleinere contracten. Sommigen van hen zijn ontworpen om onveranderlijk te zijn, terwijl anderen de verwijderfunctie bevatten. Dit houdt in dat een deel van de code (smart contracts) kan worden verwijderd en vervangen, terwijl andere functies intact blijven.


Voordelen en voorbeelden

Als programmeerbare code zijn smart contracts in hoge mate aanpasbaar en kunnen op veel verschillende manieren worden ontworpen, met vele soorten diensten en oplossingen.

Als gedecentraliseerde en zelfuitvoerende programma's kunnen smart contracts zorgen voor meer transparantie en lagere kosten. Afhankelijk van de implementatie kunnen ze ook de efficiëntie verhogen en de bureaucratie verlagen.

Smart contracts zijn met name bruikbaar in situaties waarbij geldelijke transacties tussen twee of meer partijen plaats vinden.

Met andere woorden, smart contracts kunnen zo worden ontworpen dat ze meer meerdere manieren te implementeren zijn. Enkele voorbeelden zijn het maken van tokens, stemsystemen, crypto wallets, gedecentraliseerde handelsplatformen, games en mobiele applicaties. Ze kunnen ook samen met andere blockchain-oplossingen worden ingezet op het gebied van gezondheidszorg, liefdadigheid, supply chain, beleidsmakers en decentralized finance (DeFi).


ERC-20

Tokens die worden uitgegeven op de Ethereum blockchain volgen een standaard die bekend staat als ERC-20. Deze standaard beschrijft de kernfuncties van alle op Ethereum gebaseerde tokens. Hierdoor worden deze digitale activa vaak ERC-20-tokens genoemd en vertegenwoordigen ze een groot deel van de bestaande cryptocurrencies.

Veel blockchain-bedrijven en startups gebruiken smart contracts om hun digitale tokens op het Ethereum-netwerk uit te geven. Na de uitgifte verdeelde het merendeel van deze bedrijven hun ERC-20 tokens via Initial Coin Offering (ICO) evenementen. In de meeste gevallen maken smart contract de uitwisseling van fondsen en de distributie van tokens mogelijk op een betrouwbare en efficiënte manier.


Beperkingen

Smart contracts zijn computercode geschreven door mensen. Dit brengt talloze risico's met zich mee, aangezien de codes kwetsbaarheden en bugs bevat. Idealiter moeten ze geschreven en geïmplementeerd worden door ervaren programmeurs, vooral als het gaat om gevoelige informatie of grote hoeveelheden geld.

Sommigen beweren dat gecentraliseerde systemen de meeste oplossingen en functionaliteiten kunnen bieden die worden geboden door slimme contracten. Het belangrijkste verschil is dat slimme contracten worden uitgevoerd op een gedistribueerd P2P-netwerk in plaats van op een gecentraliseerde server. Omdat ze gebaseerd zijn op een blockchain-systeem, zijn ze meestal onveranderlijk of heel moeilijk te veranderen.

Onveranderlijk zijn kan in sommige situaties goed zijn, maar in andere erg nadelig. Toen bijvoorbeeld een gedecentraliseerde autonome organisatie (DAO) genaamd "The DAO" in 2016 werd gehackt, werden miljoenen ether (ETH) gestolen vanwege tekortkomingen in hun smart contractcode.

Omdat hun smart contract onveranderlijk was, konden ontwikkelaars de code niet fixen. Dit leidde uiteindelijk tot een hard fork, waardoor een tweede Ethereum-chain werd geboren. Simpel gezegd, één chain heeft de hack teruggedraaid en het geld teruggebracht bij de rechtmatige eigenaren (dit maakt nu deel uit van de huidige Ethereum-blockchain). De andere chain besloot om zich niet met de hack te bemoeien en stelde dat gebeurtenissen op de blockchain nooit mogen worden gewijzigd (deze keten heet nu Ethereum Classic).

Het is belangrijk op te merken dat het probleem niet afkomstig was van de Ethereum-blockchain. In plaats daarvan werd het juist veroorzaakt door een foutieve implementatie van een smart contract.

Een andere beperking van smart contracts houdt verband met hun onzekere juridische status. Niet alleen omdat het zich in de meeste landen in een grijs gebied bevindt, maar ook omdat smart contracts niet voldoen aan de huidige wettelijke kaders.

Veel contracten vereisen bijvoorbeeld dat beide partijen worden geïdentificeerd en ouder zijn dan 18 jaar. De pseudonimiteit die wordt geboden door blockchain-technologie, in combinatie met het ontbreken van tussenpersonen, kan deze vereisten bedreigen. Hoewel hier oplossingen voor zijn, vormen de juridische waarde van smart contracts een barrière en al helemaal als het gaat om grenzeloze, gedistribueerde netwerken.


Kritiek

Sommige blockchain-enthousiastelingen zien smart contracts als de toekomst die binnenkort een groot deel van onze commerciële en bureaucratische systemen zal vervangen en automatiseren. Hoewel dit goed mogelijk is, zal het waarschijnlijk nog lang niet de norm worden.

Smart contracts zijn zeker een interessante technologie. Gedistribueerd, deterministisch, transparant en enigszins onveranderlijk kan er juist voor zorgen ze in sommige situaties minder aantrekkelijk zijn.

De meeste kritiek wordt gebaseerd op het feit dat smart contracts geen geschikte oplossing zijn voor veel echte problemen in de fysieke wereld. Sommige organisaties zijn zelfs beter af als ze conventionele servergebaseerde alternatieven gebruiken.

In vergelijking met smart contracts zijn gecentraliseerde servers eenvoudiger en goedkoper te onderhouden en kunnen ze een betere efficiëntie bieden op het gebied van snelheid en cross-netwerkcommunicatie (interoperabiliteit).


Slotgedachten

Er mag geen twijfel bestaan over het feit dat smart contracts een grote impact hebben gehad in de wereld van cryptocurrencies, en ze hebben zeker een revolutie verzorgd binnen de blockchain-wereld. Hoewel de eindgebruikers mogelijk niet rechtstreeks te maken krijgen met smart contracts, zullen ze in de toekomst waarschijnlijk een breed scala aan toepassingen kennen, variërend van financiële diensten tot supply chain management.

Smart contracts en blockchain kunnen in potentie bijna alle gebieden van onze samenleving opschudden. Maar de tijd zal het leren of deze baanbrekende technologieën de vele barrières voor grootschalige acceptatie zullen overwinnen.

Loading