Ethereum: hvordan fungerer smarte kontrakter?

Smarte kontrakter er den vigtigste funktion, der har gjort Ethereum så vellykket. 

Hvad er smarte kontrakter, og hvad er de til

Bitcoin-protokollen giver ikke mulighed for skabe virkelig komplekse smarte kontrakter, fordi det grundlæggende kun var designet til at muliggøre transaktioner. 

I modsætning hertil var Ethereum, som blev født 6 år efter Bitcoin, fra starten designet til at være et netværk, der er i stand til at hosting og eksekvering af smarte kontrakter

I 2014 var Ethereum medstifter Vitalik Buterin skrev udtrykkeligt i whitepaper at det netværk, han var ved at designe, var et næste generations platform baseret på smarte kontrakter, og at alternative applikationer til Bitcoin baseret på blockchain-teknologi også omfattede brugen af ​​digitale aktiver til at repræsentere tilpassede valutaer og finansielle instrumenter, ikke-fungible aktiver og mere komplekse applikationer. 

Især sidstnævnte, altså smarte kontrakter, blev defineret som applikationer, der involverede direkte kontrol af digitale aktiver ved en kode, der implementerer vilkårlige regler, eller decentraliserede autonome organisationer baseret på blockchain, såkaldte DAOs.  

Vitalik skrev: 

"Det, Ethereum har til hensigt at levere, er en blockchain med et indbygget Turing-komplet programmeringssprog, der kan bruges til at skabe 'kontrakter', der kan bruges til at kode vilkårlige tilstandsovergangsfunktioner, hvilket giver brugerne mulighed for at oprette et hvilket som helst af de systemer, der er beskrevet ovenfor – samt mange andre, som vi endnu ikke har forestillet os – blot ved at skrive logik i et par linjer kode”.

Således er smarte kontrakter på Ethereum kodelinjer, som det er muligt at programmere den automatiske udførelse af instruktioner af netværket, når visse betingelser er opfyldtuden at skulle overlade deres udførelse til en mellemmand.

Faktisk satte Buterin selv udtrykket "kontrakter" i anførselstegn, fordi de snarere end reelle kontrakter mellem parter er computerprogrammer udført af en decentraliseret netværk. 

Fra et generelt synspunkt er deres drift derfor ikke særlig kompliceret. 

smart kontrakt
Smarte kontrakter udføres, når betingelserne deri er blevet verificeret

Implementering af smarte kontrakter på Ethereum blockchain

Først og fremmest skal en eller flere udviklere åbenbart oprette den smarte kontrakt ved at skrive de relevante linjer kode, og derefter skal de send det til Ethereum-netværket. 

Rent teknisk betyder udgivelse af det på Ethereum blockchain at få alle noder i netværket til at modtage og udføre det. Når først de er offentliggjort, vil alle instruktioner i den altid blive udført af alle noder på nøjagtig samme måde. 

Derfor ikke kun dens offentliggørelse, men også udførelsen af ​​instruktioner er irreversibel når det er offentliggjort på blockchain. 

Det, der virkelig betyder noget, er derfor instruktionerne, den indeholder – som kan være de mest forskelligartede – og hvor mange der bruger den. For at instruktionerne fra en smart kontrakt rent faktisk kan udføres, skal der være en eller flere transaktioner, der påberåber sig dem

Det er også værd at huske på, at disse instruktioner generelt involverer brug af ressourcer, såsom data eller tokens, så de rent faktisk kan udføres, alle de nødvendige betingelser skal være opfyldt. 

Nogle gange kommer disse data udefra, takket være såkaldte orakler, mens det nogle gange blot kommer fra transaktioner på blockchain. 

Normalt er transaktionen, der udløser udførelsen af ​​instruktionerne i en smart kontrakt indebærer betaling af en gebyr i ETH, og i mange tilfælde involverer eksekveringen for rent faktisk at udløse betaling eller afsendelse af tokens, der er specifikke for selve den smarte kontrakt eller andre smarte kontrakter. 

Teknisk set er smarte kontrakter en form for konto på Ethereum blockchain, "kontrolleret" af netværket i stedet for en central enhed. De kan gemme ETH eller tokens, og kan også sende transaktioner på netværket selvstændigt.

Hvordan man interagerer med koden og mere generelt med dApps

Brugere kan interagere med smarte kontrakter ved at sende transaktioner, der udløse en af ​​de funktioner, der er defineret i deres kode. 

Derfor er funktionen af ​​smarte kontrakter på Ethereum generelt meget enkel: send bare en transaktion af en bestemt type til en smart kontrakt, og dette vil udløse udførelsen af ​​noderne af alle instruktionerne indeholdt i funktionen af ​​den smarte kontrakt påberåbt af selve transaktionen. 

Afhængigt af hvilke instruktioner der er indeholdt i den påberåbte funktion, kan der naturligvis genereres meget forskellige konsekvenser, varierende ikke kun fra smart kontrakt til smart kontrakt, men også fra funktion til funktion. 

Den enorme kompleksitet af smarte kontrakter stammer derfor netop fra, hvad de enkelte smarte kontrakter gør, og ikke generelt af, at Ethereum-netværket understøtter og eksekverer dem. Desuden er det absolut umuligt at liste, hvordan alle typer smarte kontrakter på netværket rent faktisk fungerer. 


Kilde: https://en.cryptonomist.ch/2022/06/11/ethereum-smart-contracts-3/