Decentraal gedistribueerde contracten
De ontwikkeling van blockchaintechnologie heeft het mogelijk gemaakt om decentraal gedistribueerde transacties te verzenden en te ontvangen met cryptocurrency’s. Bitcoin is de bekendste crypto-munt, maar de afgelopen jaren zijn er tal van nieuwe coins bijgekomen. Blockchaintechnologie leent zich echter niet alleen voor het verhandelen van crypto-munten, maar kent ook andere toepassingen zoals bijvoorbeeld slimme contracten (smart contracts) en Non Fungible Tokens.
Juridisch relevante gebeurtenissen
Byzantijnse fouttolerante algoritmen
Betrouwbaarheid van slimme contracten
Mogelijkheden voor het bedrijfsleven
Juridisch relevante gebeurtenissen
De slimme contracten die binnen een blockchainnetwerk worden uitgevoerd, zijn in principe computerprogramma’s of transactieprotocollen, die bedoeld zijn om specifieke juridisch relevante gebeurtenissen en acties uit te voeren, te verifiëren en te registeren. Daarbij worden de voorwaarden uit het digitale slimme contract exact opgevolgd. Deze slimme contracten hebben als voornaamste doel het verminderen van de behoefte aan vertrouwde tussenpersonen, die doorgaans nodig zijn om wettelijke overeenkomsten te bekrachtigen. Ook het terugdringen van arbitrage- en handhavingskosten en het tegengaan van verliezen door fraude of diefstal, zijn belangrijke doelstellingen van smart contracts.
Ethereum
Er moet echter wel onderscheid worden gemaakt tussen ‘wettelijke’ slimme contracten – die juridisch bindend zijn – en andersoortige digitale overeenkomsten die niet per se een geldige wettelijk bindende inhoud bevatten. Juridische slimme contracten bevatten juridische termen, die zijn uitgedrukt en geïmplementeerd in ‘machine-leesbare code’. Een van de eerste blockchain-platformen dat experimenteerde met smart-contract-functionaliteit was Ethereum. Inmiddels bieden ook blockchains zoals Bitcoin, EOS, Cardano en Tezos smart-contract-mogelijkheden.
Byzantijnse fouttolerante algoritmen
Net zoals bij een cryptocurrency-transacties op de blockchain, vindt de implementatie van slimme contracten binnen het netwerk plaats, door transacties vanuit een crypto-wallet te verzenden. Deze transacties omvatten de gecompileerde code voor het smart contract en een speciaal ontvangersadres en moeten worden opgenomen in een blok, dat aan het blockchainnetwerk wordt toegevoegd. Daarna wordt de smart contract-code uitgevoerd, om de beginstatus van het slimme contract vast te stellen. Daarbij wordt gebruik gemaakt van zogenaamde ‘Byzantijnse fouttolerante algoritmen’. Deze algoritmen zorgen ervoor dat de slimme contracten op een gedecentraliseerde manier worden beveiligd, tegen manipulatie van gegevens. Wanneer een smart contract eenmaal binnen de blockchain is geïmplementeerd, dan kan deze niet meer worden gewijzigd.
Consensus-mechanisme
De Byzantijnse fouttolerante algoritmen vormen een belangrijk element van het consensus-mechanisme binnen een blockchain. Consensusmodellen zijn een primair onderdeel van gedistribueerde netwerken. De consensus zorgt ervoor dat de nodes overeenstemming bereiken over alle gebeurtenissen binnen de blockchain en dat de transacties veilig verlopen. Zelfs als ‘kwaadaardige nodes’ binnen de blockchain zich schuldig zouden maken aan het verspreiden van onjuiste informatie, dan zou dit in principe geen gevolgen moeten hebben voor de betrouwbaarheid van het netwerk. Het consensus-mechanisme zorgt ervoor dat ernstige systeemstoringen en andere ongewenste gebeurtenissen binnen de blockchain, geen invloed hebben op ‘de staat van het netwerk’.
Smart contract-code
De transacties worden opgenomen in een blok dat aan de blockchain wordt toegevoegd. Daarna wordt de smart contract-code van de slimme contracten uitgevoerd en de beginstatus vastgesteld. Slimme contracten kunnen willekeurige toestanden opslaan en willekeurige berekeningen uitvoeren. De gebruikers communiceren met de slimme contracten via de transacties. De transacties die worden vergezeld van een smart contract kunnen een beroep doen andere smart contracts. Deze transacties kunnen ertoe leiden dat de status verandert en crypto-coins worden verzonden van het ene slimme contract naar het andere.
Solidity en de EVM
De slimme contracten op de blockchain van Ethereum worden meestal geschreven in de programmeertaal ‘Solidity’. Deze programmeertaal is ‘turingcompleet’. Dat wil zeggen dat iedere berekening of gegevensbewerking die geprogrammeerd kan worden, ook in dit blockchain-protocol kan worden geprogrammeerd. De gecompileerde bytecode wordt vervolgens uitgevoerd door de Ethereum Virtual Machine (EVM). Slimme contracten die binnen de Ethereum blockchain worden uitgevoerd zijn zichtbaar voor alle gebruikers. Dat betekent dat ontstane beveiligingsproblemen of andersoortige bugs in het blockchain-protocol voor iedereen zichtbaar zijn. Echter betekent dat niet dat deze opgemerkte problemen ook direct kunnen worden verholpen.
The DAO
Dat werd duidelijk in de zomer van 2016 toen een aanvaller erin slaagde, om misbruik te maken van een bug in de smart contract-code van ‘The DAO’. Dit was een investeringsplatform op de Ethereum-blockchain, waarbij de financiering werd uitgevoerd met behulp van slimme contracten. De hacker zag kans om ongeveer 3,6 miljoen ETH (de cryptocurrency van Ethereum) weg te sluizen naar een andere locatie. Nadat de hack was ontdekt probeerden de ontwikkelaars binnen de Ethereum-community om een oplossing te bedenken, waarmee consensus kon worden bereikt over de te nemen maatregelen. Doordat er in het slimme contract een clausule was opgenomen – die bepaalde dat er een bewaarperiode gold van 28 dagen – was de ETH nog niet verdwenen. Door deze vertraging kregen de ontwikkelaars wat tijd om zich te buigen over de beste oplossing.
Hard Fork
Er werd uiteindelijk voor gekozen om een zogenaamde ‘hard fork’ uit te voeren, waarbij de hack als het ware werd teruggedraaid. De ETH werd vervolgens teruggestort naar The DAO. De hard fork was echter niet zonder gevolgen. De hard fork zorgde er namelijk voor dat het blockchainnetwerk in tweeën werd gesplitst. De originele blockchain ging verder onder de nieuwe naam Ethereum Classic (ETC) en de ‘ge-hard forkte’ blockchain behield de naam ‘Ethereum’. De problemen in slimme contracten omvatten dubbelzinnigheden en onveilige constructies in de programmeertaal Solidity, compiler-bugs, fouten in de Ethereum Virtual Machine en aanvallen op het blockchainnetwerk. Een ander probleem is dat er geen centrale brondocumentatie voorhanden is, met daarin bekende kwetsbaarheden, aanvallen en problematische constructies.
Betrouwbaarheid van slimme contracten
Daarnaast is het belangrijk om je te realiseren dat er bij slimme contracten op een blockchain, geen centrale autoriteit betrokken is die de transacties beheert. Dat biedt natuurlijk voordelen omdat de kosten voor dure tussenpersonen wegvallen. Maar het houdt ook in dat wanneer iemand het slachtoffer wordt van oplichting of diefstal, er weinig kan worden gedaan om de malafide acties ongedaan te maken. Daarbij komt ook nog eens dat er op dit moment nog geen overheidsregulering is voor slimme contracten, waardoor de overheid in geval van criminele handelingen maar moeilijk kan ingrijpen. Doordat slimme contracten sterk afhankelijk zijn van code, is de betrouwbaarheid ervan grotendeels afhankelijk van de ontwikkelaars. Daardoor kan er een verschil ontstaan tussen wat twee partijen samen overeenkomen en wat de ontwikkelaar daadwerkelijk in het slimme contract codeert.
Mogelijkheden voor het bedrijfsleven
Desondanks biedt blockchaintechnologie tal van mogelijkheden voor het bedrijfsleven. Zo hebben smart contracts de potentie om verkiezingen minder vatbaar te maken voor fraude of manipulatie, de veiligheid van medische patiëntendossiers te vergroten en de processen binnen supply chains beter te stroomlijnen. Daarnaast kunnen slimme contracten worden toegepast binnen de verzekeringssector. Ze kunnen helpen bij verzekeringsclaims, door fouten te controleren en betalingen te doen, op precies de juiste momenten. Door de complexiteit van blockchaintechnologie is het nog maar zeer de vraag of slimme contracten in de toekomst, door een breed publiek zullen worden geaccepteerd. De veiligheid en betrouwbaarheid moeten eerst volledig kunnen worden gegarandeerd, voordat bedrijven en instellingen hun traditionele documenten vervangen voor smart contracts.
Lees ook:
Programmeren van smart contracts
Wat is het verschil tussen decentrale applicaties (dapps) en smart contracts?
Wat is de programmeertaal Vyper? Smart contracts en Ethereum
Wat zijn de voordelen van blockchain smart contracts?
Blockchain en coderen: hoe wordt een smart contract gecodeerd?
Ricardian contracts en de blockchain
Wat zijn de misverstanden over het smart contract?
Waarom noemt men de blockchain een trustmachine?
LegalTech en blockchaintechnologie
Geschillen oplossen met blockchaintechnologie?
Op de hoogte blijven van de ontwikkelingen op het gebied van blockchaintechnologie? Meld je dan nu aan voor de blogpost!
Laat een reactie achter