Smart Contracts – smartontrakter


Smartkontrakter regnes som en av de viktigste nyvinningene som fulgte med blokkjeden. Det er selvutførende avtaler der vilkårene er skrevet direkte inn i koden, og de er en grunnstein i Ethereum og i mange kryptotjenester. En smartkontrakt oppfører seg nøyaktig slik den er programmert – noe som er en styrke, men også en risiko det er verdt å forstå. Denne artikkelen forklarer nøytralt hva smartkontrakter er, hvordan de fungerer, hva de brukes til, og hvilke begrensninger og risikoer som følger med.
Smartkontrakt – kort
| Hva det er | Selvutførende kode på en blokkjede |
| Foreslått av | Nick Szabo (1990-tallet) |
| Kjører på | Ethereum Virtual Machine (EVM) |
| Skrives ofte i | Programmeringsspråket Solidity |
| Avgift | «Gass», betales i ETH |
| Viktig risiko | Feil i koden kan sjelden rettes – kontrakten er uforanderlig |
Innholdsfortegnelse
Hva er en smartkontrakt?
En smartkontrakt er en selvutførende kontrakt der vilkårene i avtalen er skrevet direkte inn i koden. Koden ligger i et distribuert og desentralisert blokkjedenettverk, styrer utførelsen, og transaksjonene er sporbare. Et viktig poeng å presisere med en gang: partene er som regel pseudonyme, ikke anonyme – transaksjonene er offentlige og kan spores på blokkjeden.
Kontraktene kjører på Ethereum Virtual Machine (EVM), en slags desentralisert «verdensmaskin» der beregningene utføres av nettverkets noder. På Ethereum skrives de som oftest i programmeringsspråket Solidity. For å kjøre en kontrakt betaler man en avgift, kalt «gass», i ETH, som kompenserer nettverket for datakraften.

Historien til smartkontrakter
Ideen er eldre enn blokkjeden. Allerede på begynnelsen av 1990-tallet ble smartkontrakter foreslått av den amerikanske dataforskeren Nick Szabo, som beskrev dem som datastyrte protokoller som utfører vilkårene i en avtale. Han ønsket å utvide funksjonaliteten til elektroniske transaksjonsmetoder til den digitale verdenen, og forutså blant annet at komplekse finansielle instrumenter kunne håndteres digitalt.
Det var likevel først med Ethereum, lansert i 2015, at smartkontrakter for alvor kunne programmeres og kjøres i praksis på en åpen blokkjede.
Bruken av Smart Contracts, hvordan de fungerer
Logikken kan enklest forklares som «dersom A, så B». Utvikleren programmerer inn forhåndsbestemte betingelser, og koden utfører dem i sekvens.
Den klassiske metaforen er en brusautomat: du velger et produkt, automaten oppgir prisen, du betaler riktig beløp, og først da utløses produktet. Skjer ikke alle stegene, skjer heller ingenting. På samme måte utfører en smartkontrakt seg selv nøyaktig slik den er programmert – automatisk og likt hver gang.

Automatisk utførelse og forutsigbare utfall
Den automatiske utførelsen er en av de største fordelene sammenlignet med tradisjonelle kontrakter. Det er ingen ventetid, og behovet for å stole på en motpart reduseres. Man kan for eksempel skrive en kontrakt som holder midler i deponering og først frigir dem etter en bestemt dato. Fordi det menneskelige tolkningsrommet fjernes, gir de samme forutsetningene alltid det samme resultatet.
I tillegg kommer noen andre fordeler:
- Sporbarhet: Fordi kontraktene ligger på en offentlig blokkjede, kan overføringer og betingelser etterprøves av alle.
- Åpenhet: Vilkårene er synlige og kan leses før man eventuelt inngår avtalen.
- Redusert behov for mellomledd: Koden håndhever avtalen, uten en sentral tredjepart.
Merk at åpenhet ikke er det samme som anonymitet: alt er synlig på blokkjeden, og adresser kan i mange tilfeller knyttes til personer.
Begrensninger og risiko
Smartkontrakter kan i prinsippet brukes til det samme som andre dataprogrammer, og danner grunnlaget for en rekke tjenester:
Desentralisert finans (DeFi): Automatiske børser der man veksler tokens uten mellommann, samt utlån og andre finanstjenester.
Tokens og NFT-er: Standardene bak kryptovalutaer og digitale eierskapsbevis.
DAO-er: Organisasjoner der regler og stemmegivning styres av kode.
Automatisk deponering (escrow) og parametrisk forsikring som utbetales automatisk når en målbar hendelse inntreffer.

Ansvarsfraskrivelse
Denne artikkelen er kun til informasjon og utgjør ikke finansiell, juridisk eller teknisk rådgivning. Smartkontrakter innebærer reell risiko: feil i koden kan utnyttes og lar seg sjelden rette, transaksjoner er som regel uigjenkallelige, og det å samhandle med desentraliserte applikasjoner kan medføre tap av midler. En smartkontrakt er heller ikke automatisk en juridisk bindende avtale. Sett deg grundig inn i hvordan en konkret tjeneste fungerer før du eventuelt bruker den, og husk at gevinst og tap knyttet til kryptovaluta er skattepliktig i Norge. Offentlige ressurser: Finanstilsynet og Skatteetaten.
Bruksområder
Begrensninger og risiko
Dette er den viktigste delen å ta med seg, og det den opprinnelige framstillingen hoppet over da den kalte smartkontrakter «trygt, godt og enkelt». Smartkontrakter er ikke uten videre trygge:
- Feil i koden kan sjelden rettes. Nettopp fordi en kontrakt er tilnærmet uforanderlig, kan en programmeringsfeil bli permanent – og utnyttes. Det mest kjente eksempelet er DAO-hacket i 2016, der en feil lot en angriper tappe rundt 3,6 millioner ETH, noe som endte med at Ethereum ble delt i to kjeder. Året etter frøs en feil i Parity-lommeboken over 500 000 ETH for godt.
- «Koden er loven» – på godt og vondt. Kontrakten gjør nøyaktig det som står i koden, også når det ikke var det utvikleren mente.
- Orakel-problemet. En smartkontrakt når ikke data utenfor blokkjeden på egen hånd. For informasjon fra den virkelige verden er den avhengig av «orakler», som i seg selv er et tillits- og sårbarhetspunkt.
- Ikke automatisk juridisk bindende. At en kontrakt utføres teknisk, betyr ikke at den uten videre er en juridisk gyldig avtale. Rettstilstanden er fortsatt under utvikling.
Ofte stilte spørsmål
Hva er en smartkontrakt, enkelt forklart?
Hva er en smartkontrakt, enkelt forklart?
Hvem fant opp smartkontrakter?
Konseptet ble beskrevet av dataforskeren Nick Szabo på 1990-tallet, lenge før blokkjeden. Ethereum (2015) gjorde det mulig å kjøre dem i praksis.
Kan en smartkontrakt endres etter at den er publisert?
Som hovedregel nei. Kontrakten er tilnærmet uforanderlig, noe som gir forutsigbarhet, men også betyr at feil i koden sjelden kan rettes.
Er smartkontrakter trygge?
De fjerner behovet for å stole på én motpart, men de er ikke risikofrie. Feil i koden kan utnyttes og bli permanente, slik DAO-hacket (2016) og Parity-frysingen (2017) viste.
Er en smartkontrakt det samme som en juridisk avtale?
Ikke nødvendigvis. Den utfører betingelser teknisk, men er ikke automatisk en juridisk bindende avtale. Ofte vil en juridisk avtale og en smartkontrakt utfylle hverandre.

