Hva er smarte kontrakter?
Table of Contents
Innledning
Hvordan fungerer de?
Viktige trekk
Fordeler og brukstilfeller
Begrensninger
Kritikk
Avsluttende tanker
Hva er smarte kontrakter?
HomeArticles
Hva er smarte kontrakter?

Hva er smarte kontrakter?

Viderekommen
Published Sep 16, 2019Updated Sep 23, 2022
8m

Innledning

Nick Szabo beskrev smarte kontrakter først på 1990-tallet. Den gangen definerte han en smart kontrakt som et verktøy som formaliserer og sikrer datanettverk ved å kombinere protokoller med brukergrensesnitt.

Szabo diskuterte den potensielle bruken av smarte kontrakter på ulike felt som involverer kontraktsmessige avtaler – som kredittsystemer, betalingsprosesser og styring av innholdsrettigheter.

I kryptovalutaverdenen kan vi definere en smart kontrakt som en applikasjon eller et program som kjører på en blokkjede. Vanligvis fungerer de som en digital avtale som håndheves av et bestemt sett med regler. Disse reglene er forhåndsdefinert av datakode, som kopieres og kjøres av alle nettverksnoder.

Smarte kontrakter i blokkjeder gjør det mulig å lage tillitsløse protokoller. Dette betyr at to parter kan forplikte seg via blokkjede, uten å måtte kjenne eller stole på hverandre. De kan være sikre på at hvis betingelsene ikke oppfylles, vil ikke kontrakten bli utført. I tillegg til det kan bruk av smarte kontrakter fjerne behovet for mellommenn, noe som reduserer driftskostnadene betydelig.

Selv om Bitcoin-protokollen har støttet smarte kontrakter i mange år, ble de først gjort populære av skaperen og medgründeren av Ethereum, Vitalik Buterin. Men det er verdt å merke seg at hver blokkjede kan presentere en ulik metode for å implementere smarte kontrakter. 

Denne artikkelen vil fokusere på de smarte kontraktene som kjører på Ethereum Virtual Machine (EVM), som er en viktig del av Ethereum-blokkjeden.


Hvordan fungerer de?

Enkelt sagt fungerer en smart kontrakt som et deterministisk program. Den utfører en bestemt oppgave når og hvis visse betingelser er oppfylt. Derfor følger et system for smarte kontrakter ofte "hvis ... så ..."-setninger. Men til tross for navnet sitt er ikke smarte kontrakter juridiske kontrakter, og heller ikke så smarte. De er bare et stykke kode som kjører på et distribuert system (blokkjede).

På Ethereum-nettverket er smarte kontrakter ansvarlige for å utføre og administrere blokkjedeoperasjonene som finner sted når brukere (adresser) samhandler med hverandre. En adresse som ikke er en smart kontrakt, kalles en eksternt eid konto (EOA). Dermed styres smarte kontrakter av datakode, og EOA-er styres av brukere.

Ethereums smarte kontrakter er kort sagt laget av en kontraktskode og to offentlige nøkler. Den første offentlige nøkkelen er den som leveres av kontraktsoppretteren. Den andre nøkkelen representerer selve kontrakten og fungerer som en digital identifikator som er unik for hver smart kontrakt.

Distribueringen av en hvilken som helst smart kontrakt gjøres gjennom en blokkjedetransaksjon, og de kan bare aktiveres når de påkalles av en EOA (eller andre smarte kontrakter). Men den første utløseren er alltid forårsaket av en EOA (bruker).


Viktige trekk

En Ethereum smart kontrakt presenterer ofte følgende egenskaper:

Distribuerte. Smarte kontrakter kopieres og distribueres i alle noder i Ethereum-nettverket. Dette er en av de store forskjellene fra andre løsninger som er basert på sentraliserte servere.

Deterministiske. Smarte kontrakter utfører bare handlingene de er designet for, gitt at kravene er oppfylt. Dessuten vil resultatet alltid være det samme, uansett hvem som utfører dem.

Autonome. Smarte kontrakter kan automatisere alle slags oppgaver og fungerer som et selvutførende program. Men i de fleste tilfeller, hvis en smart kontrakt ikke utløses, vil den forbli "sovende" og ikke utføre noen handling.

Uforanderlige. Smarte kontrakter kan ikke endres etter distribuering. De kan bare "slettes" hvis en bestemt funksjon tidligere ble implementert. Dermed kan vi si at smarte kontrakter kan gi manipulasjonssikre koder.

Tilpassbare. Før distribuering kan smarte kontrakter kodes på mange forskjellige måter. På denne måten kan de brukes til å lage mange typer desentraliserte applikasjoner (DApps). Dette er relatert til det faktum at Ethereum er en Turing-komplett blokkjede.

Tillitsløse. To eller flere parter kan samhandle via smarte kontrakter uten å kjenne eller stole på hverandre. I tillegg sørger blokkjedeteknologien for at dataene er nøyaktige.

Gjennomsiktige. Siden smarte kontrakter er basert på en offentlig blokkjede, er kildekoden ikke bare uforanderlig, men også synlig for alle.


Kan jeg endre eller slette en smart kontrakt?

Det er umulig å legge til nye funksjoner i en Ethereum-smart kontrakt etter distribuering. Men hvis oppretteren inkluderer en funksjon kalt SELFDESTRUCT i koden, kan den smarte kontrakten "slettes" i fremtiden – og erstattes med en ny. Derimot, hvis funksjonen ikke er inkludert i koden på forhånd, kan den ikke slettes.

Merk at de såkalte oppgraderbare smarte kontraktene gjør at utviklere kan ha mer fleksibilitet rundt kontraktenes uforanderlighet. Det er mange måter å lage oppgraderbare smarte kontrakter på, med varierende grad av kompleksitet.

Et enkelt eksempel: Tenk deg at en smart kontrakt deles inn i flere mindre kontrakter. Noen av dem er designet for å være uforanderlige, mens andre har "slett"-funksjonen aktivert. Dette betyr at deler av koden (smarte kontrakter) kan slettes og erstattes, mens andre funksjoner forblir intakte.


Fordeler og brukstilfeller

Som programmerbar kode er smarte kontrakter svært tilpassbare, kan utformes på mange forskjellige måter og tilbyr mange typer tjenester og løsninger.

Som desentraliserte og selvutførende programmer kan smarte kontrakter gi økt åpenhet og reduserte driftskostnader. Avhengig av implementeringen kan de også øke effektiviteten og redusere byråkratiske utgifter.

Smarte kontrakter er spesielt nyttige i situasjoner som involverer overføring eller utveksling av midler mellom to eller flere parter.

Med andre ord kan smarte kontrakter utformes for en lang rekke brukstilfeller. Noen eksempler inkluderer opprettelsen av tokenressurser, stemmesystemer, kryptolommebøker, desentraliserte børser, spill og mobilapplikasjoner. De kan også distribueres sammen med andre blokkjedeløsninger innen helsetjenester, veldedighet, forsyningskjeder, styring og desentralisert finans (DeFi).


ERC-20

Tokener som er utstedt på Ethereum-blokkjeden, følger en standard kjent som ERC-20. Standarden beskriver kjernefunksjonene til alle Ethereum-baserte tokener. Derfor blir disse digitale ressursene ofte referert til som ERC-20-tokener, og de representerer en stor del av de eksisterende kryptovalutaene.
Mange blokkjedeselskaper og oppstartsselskaper har implementert smarte kontrakter for å utstede digitale tokener på Ethereum-nettverket. Etter utstedelsen distribuerte flertallet av disse selskapene sine ERC-20-tokener gjennom Initial Coin Offering (ICO)-arrangementer. I de fleste tilfeller muliggjorde bruken av smarte kontrakter bytting av midler, og distribusjon av tokener, på en tillitsløs og effektiv måte.


Begrensninger

Smarte kontrakter er laget av datakode skrevet av mennesker. Dette medfører mange risikoer, ettersom koden kan ha sårbarheter og feil. Ideelt sett bør de skrives og distribueres av erfarne programmerere, spesielt når de involverer sensitiv informasjon eller store mengder penger.

I tillegg mener noen at sentraliserte systemer kan tilby de fleste løsningene og funksjonalitetene som tilbys av smarte kontrakter. Hovedforskjellen er at smarte kontrakter kjører på et distribuert P2P-nettverk, i stedet for en sentralisert server. Og fordi de er basert på et blokkjedesystem, har de en tendens til å være enten uforanderlige eller svært vanskelige å endre.

Uforanderlig kan være flott i noen situasjoner, men veldig dårlig i andre. For eksempel, da en desentralisert autonom organisasjon (DAO) kalt "The DAO" ble hacket i 2016, ble millioner av ether (ETH) stjålet på grunn av feil i koden for smarte kontrakter.

Siden den smarte kontrakten deres var uforanderlig, kunne ikke utviklerne fikse koden. Dette førte til slutt til en hard fork og til at en andre Ethereum-kjede oppstod. Enkelt sagt, én kjede "gjenopprettet" hackingen og returnerte midlene til de rettmessige eierne (dette er en del av den nåværende Ethereum-blokkjeden). Den andre kjeden bestemte seg for ikke å forstyrre hackingen med argumentet om at ting som skjer på en blokkjede, aldri skal endres (denne kjeden heter nå Ethereum Classic).

Det er viktig å merke seg at problemet ikke kom fra Ethereum-blokkjeden. I stedet ble det forårsaket av en feilaktig implementering av en smart kontrakt.

En annen begrensning smarte kontrakter har, er knyttet til den usikre juridiske statusen. Ikke bare fordi det er i en gråsone i de fleste land, men også fordi smarte kontrakter ikke passer inn i gjeldende juridiske rammeverk.

For eksempel krever mange kontrakter at begge parter er identifiserer seg og er over 18 år. Pseudonymiteten i blokkjedeteknologien, kombinert med mangelen på mellomledd, kan true disse kravene. Selv om det finnes potensielle løsninger på dette, er rettshåndhevelsen av smarte kontrakter en reell utfordring – spesielt når det gjelder grenseløse, distribuerte nettverk.


Kritikk

Noen blokkjede-entusiaster ser på smarte kontrakter som en løsning som snart vil erstatte og automatisere en stor del av våre kommersielle og byråkratiske systemer. Selv om dette er en mulig realitet, er det sannsynligvis langt fra å bli normen.

Smarte kontrakter er absolutt interessant teknologi. Men det at de er distribuerte, deterministiske, gjennomsiktige og ganske uforanderlige, kan gjøre dem mindre aktuelle i noen situasjoner.

I hovedsak går kritikken på det at smarte kontrakter ikke er en egnet løsning for mange av problemene i den virkelige verden. Faktisk har noen organisasjoner mer nytte av å bruke konvensjonelle serverbaserte alternativer. 

Sammenlignet med smarte kontrakter er sentraliserte servere enklere og billigere å vedlikeholde og har en tendens til å gi høyere effektivitet når det gjelder hastighet og kommunikasjon på tvers av nettverk (interoperabilitet).


Avsluttende tanker

Det er ingen tvil om at smarte kontrakter har hatt stor innvirkning på kryptovalutaverdenen, og de har virkelig revolusjonert blokkjederommet. Selv om sluttbrukerne kanskje ikke samhandler direkte med smarte kontrakter, vil disse sannsynligvis drive et bredt spekter av applikasjoner i fremtiden, alt fra finansielle tjenester til forsyningskjedestyring.

Sammen har smarte kontrakter og blokkjeden potensialet til å påvirke nesten alle områder av samfunnet vårt. Men bare tiden vil vise om disse banebrytende teknologiene vil klare å overvinne de mange barrierene for adopsjon i stor skala.