Ethereum: hvordan fungerer smarte kontrakter?

Smarte kontrakter er hovedfunksjonen som har gjort Ethereum så vellykket. 

Hva er smarte kontrakter og hva er de for

Bitcoin-protokollen gir ikke mulighet for lage virkelig komplekse smarte kontrakter, fordi den i utgangspunktet kun var designet for å muliggjøre transaksjoner. 

I motsetning til dette ble Ethereum, som ble født 6 år etter Bitcoin, fra begynnelsen designet for å være i utgangspunktet et nettverk som kan hoste og utføre smarte kontrakter

I 2014 ble Ethereum medgründer Vitalik Buterin skrev eksplisitt i whitepaper at nettverket han utformet var et neste generasjons plattform basert på smarte kontrakter, og at alternative applikasjoner til Bitcoin basert på blockchain-teknologi også inkluderte bruk av digitale eiendeler for å representere tilpassede valutaer og finansielle instrumenter, ikke-fungible eiendeler og mer komplekse applikasjoner. 

Spesielt sistnevnte, altså smarte kontrakter, ble definert som applikasjoner som involverer direkte kontroll av digitale eiendeler ved en kode som implementerer vilkårlige regler, eller desentraliserte autonome organisasjoner basert på blokkjede, s.k. DAOS.  

Vitalik skrev: 

"Det Ethereum har til hensikt å tilby er en blokkjede med et innebygd Turing-komplett programmeringsspråk som kan brukes til å lage 'kontrakter' som kan brukes til å kode vilkårlige tilstandsovergangsfunksjoner, slik at brukere kan lage hvilke som helst av systemene beskrevet ovenfor – så vel som mange andre som vi ennå ikke har forestilt oss – ganske enkelt ved å skrive logikk i noen få linjer med kode”.

Dermed er smarte kontrakter på Ethereum linjer med kode som det er mulig å programmere automatisk utførelse av instruksjoner av nettverket, når visse vilkår er oppfylt, uten å måtte overlate utførelsen av dem til en mellommann.

Faktisk satte Buterin selv begrepet "kontrakter" i anførselstegn, fordi snarere enn reelle kontrakter mellom parter, er de dataprogrammer utført av en desentralisert nettverk. 

Fra et generelt synspunkt er operasjonen deres ikke veldig komplisert. 

smart kontrakt
Smarte kontrakter utføres når betingelsene i dem er verifisert

Utplassering av smarte kontrakter på Ethereum-blokkjeden

Først av alt må en eller flere utviklere åpenbart lage den smarte kontrakten ved å skrive de riktige kodelinjene, og deretter må de send den til Ethereum-nettverket. 

I tekniske termer betyr å publisere det på Ethereum-blokkjeden å få alle nodene i nettverket til å motta og utføre det. Når den er publisert, vil alle instruksjoner i den alltid bli utført av alle noder på nøyaktig samme måte. 

Derfor ikke bare publiseringen, men også utførelse av instruksjoner er irreversibel når den er publisert på blokkjeden. 

Derfor er det som virkelig betyr noe instruksjonene den inneholder – som kan være de mest varierte – og hvor mange som bruker den. Faktisk, for at instruksjonene til en smart kontrakt faktisk skal utføres, må det være det en eller flere transaksjoner som påkaller dem

Det er også verdt å huske at disse instruksjonene generelt involverer bruk av ressurser, for eksempel data eller tokens, slik at de faktisk skal utføres, alle nødvendige vilkår må være oppfylt. 

Noen ganger kommer disse dataene utenfra, takket være såkalte orakler, mens noen ganger kommer de rett og slett fra transaksjoner på blokkjeden. 

Vanligvis transaksjonen som utløser utførelsen av instruksjonene i en smart kontrakt innebærer betaling av en gebyr i ETH, og for å faktisk utløse utførelsen involverer i mange tilfeller også betaling eller sending av tokens som er spesifikke for selve smartkontrakten, eller andre smarte kontrakter. 

Teknisk sett er smarte kontrakter en type konto på Ethereum blockchain, "kontrollert" av nettverket i stedet for en sentral enhet. De kan lagre ETH eller tokens, og kan også sende transaksjoner på nettverket autonomt.

Hvordan samhandle med koden og mer generelt med dApps

Brukere kan samhandle med smarte kontrakter ved å sende transaksjoner som utløse en av funksjonene som er definert i koden deres. 

Derfor er funksjonen til smarte kontrakter på Ethereum generelt veldig enkel: bare send en transaksjon av en bestemt type til en smart kontrakt, og dette vil utløse utførelsen av nodene av alle instruksjonene i funksjonen til den smarte kontrakten påberopt av selve transaksjonen. 

Åpenbart, avhengig av hvilke instruksjoner som finnes i funksjonen som påberopes, kan det genereres svært forskjellige konsekvenser, som varierer ikke bare fra smart kontrakt til smart kontrakt, men også fra funksjon til funksjon. 

Den enorme kompleksiteten til smarte kontrakter stammer derfor nettopp fra hva de enkelte smarte kontraktene gjør, og ikke generelt fra det faktum at Ethereum-nettverket støtter og utfører dem. Dessuten er det helt umulig å liste opp hvordan alle typer smarte kontrakter på nettverket faktisk fungerer. 


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