Wat is een smart contract?
Smart contracts werden voor het eerst beschreven in de jaren negentig door Nick Szabo. In die tijd definieerde hij een smart contract als een instrument dat computernetwerken formaliseert en beveiligt door het combineren van protocollen met gebruikersinterfaces. Szabo besprak het mogelijke gebruik van smart contracts op verschillende gebieden die verband houden met contractuele afspraken.
Binnen de
cryptocurrency space 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 afgedwongen door een specifieke set van regels. De regels zijn vooraf gedefinieerd in de code, die wordt gedupliceerd en uitgevoerd door alle nodes.
Blockchain smart contracts maken het mogelijk om betrouwbare protocollen te creëren, wat betekent dat twee partijen via een blockchain verplichtingen kunnen aangaan, zonder elkaar te kennen of te vertrouwen. Ze kunnen er zeker van zijn dat als niet aan de voorwaarden wordt voldaan, het contract niet wordt uitgevoerd. Bovendien kan het gebruik van smart contracts de behoefte aan tussenpersonen wegnemen, wat de operationele kosten aanzienlijk kan verminderen. Hoewel het
Bitcoin-protocol al vele jaren smart contracts ondersteunt, zijn ze toegankelijk gemaakt door de maker en mede-oprichter van
Ethereum, Vitalik Buterin. Het is het vermelden waard dat elke blockchain op een andere manier gebruik kan maken van smart contracts.
Voorlopig richten we ons op de smart contracts die draaien op de Ethereum Virtual Machine (EVM), een essentieel onderdeel van de Ethereum-blockchain.
Hoe werken ze?
Een smart contract voert een bepaalde taak uit als en wanneer aan bepaalde voorwaarden wordt voldaan. Een smart contractsysteem volgt daarom vaak het concept van "Als aan voorwaarde X is voldaan, voer dan actie Y uit". Ondanks de terminologie zijn smart contracts echter geen juridische contracts en ook geen smart contracts. Het is slechts code die op blockchain loopt.
Op het Ethereum netwerk zijn smart contracts verantwoordelijk voor het uitvoeren van de handelingen die plaatsvinden wanneer gebruikers (adressen) met elkaar in contact komen. Een adres dat geen smart contract is, wordt een externe account (EOA) genoemd. Met andere woorden, smart contracts worden gecontroleerd door middel van computercodes, en EOA's worden gecontroleerd door gebruikers. Ethereum smart contracts bestaan uit een contractcode en twee publieke sleutels. De maker van het contract levert de eerste publieke sleutel. De andere sleutel vertegenwoordigt het contract zelf en fungeert als een digitale identificatiecode die uniek is voor elk smart contract. De lancering van een smart contract gebeurt via een transactie en kan alleen worden geactiveerd wanneer een EOA of andere smart contracts een beroep doen op een EOA of andere smart contracts. De eerste trigger is echter een EOA (gebruiker).
Belangrijkste kenmerken
Een Ethereum smart contract heeft vaak de volgende kenmerken:
-
Gedistribueerd.
Smart contracts worden gerepliceerd en gedistribueerd over alles nodes in het Ethereum-netwerk. Dit kenmerk is een van de belangrijke verschillen met andere oplossingen die gebaseerd zijn op gecentraliseerde servers.
- Deterministisch.
Smart contracts voeren alleen de acties uit waarvoor ze bedoeld zijn. Bovendien zal het resultaat altijd hetzelfde zijn, ongeacht wie het uitvoert.
- Autonoom.
Smart contracts kunnen allerlei taken automatiseren en werken als een zelfuitvoerend programma. Maar als een smart contract niet wordt getriggerd, blijft het in de meeste gevallen "slapend" en onderneemt het geen actie.
- Onveranderlijk.
Smart contracts kunnen na de implementatie niet meer worden gewijzigd. Ze kunnen alleen worden "verwijderd" als een specifieke functie vooraf is geïmplementeerd. We kunnen bijvoorbeeld zeggen dat smart contracts een fraudebestendige code kunnen opleveren.
- Flexibel.
Voorafgaand aan de implementatie kunnen smart contracts op veel verschillende manieren worden gecodeerd. Ze kunnen dus gebruikt worden om vele soorten decentrale toepassingen (DApps) te creëren.
- Betrouwbaar. Twee of meer partijen kunnen met elkaar communiceren via smart contracts zonder elkaar te kennen of te vertrouwen. Bovendien zorgt de blockchain technologie ervoor dat de gegevens accuraat zijn.
- Transparant.
Omdat smart contracts gebaseerd zijn op een publieke blockchain, is hun broncode niet alleen onveranderlijk, maar ook voor iedereen zichtbaar.