Hva er en smart kontrakt?

Smarte kontrakter har blitt en sentral komponent i blokkjedeteknologien, særlig etter lanseringen av Blockchain 2.0 i 2014, som utvidet anvendelsen av blokkjeder utover sin opprinnelige bruk i Bitcoin. Til tross for deres tekniske natur, kan smarte kontrakter være forholdsvis enkle å forstå.

I denne guiden vil vi utforske det essensielle om smarte kontrakter. Vi vil forklare hva de er, avdekke deres arbeidsmekanismer, utforske deres potensielle bruksområder og tilby en innføring i hvordan man kan lage en.

Smarte Kontrakter Forklart

I den enkleste forstand er smarte kontrakter bare en programmert versjon av vanlige kontrakter.

 Formålet er å automatisk utløse en tidligere oppgjort kontrakt når alle forutsetninger er oppfylt. Siden hver betingelse må programmeres manuelt for å utføres, kan dette redusere mengden av små skrift som er designet for å favorisere en part, selv på bekostning av den andre.

Selv om smarte kontrakter, som de refereres til nå, ble fremtredende med programmerbare blokkjedeimplementeringer, er de mye eldre enn det. Dataforsker, advokat og kryptograf Nick Szabo foreslo først smarte kontrakter som et konsept på 90-tallet. Han beskrev dem som «et sett med løfter, spesifisert i digital form, inkludert protokoller der partene oppfyller disse løftene.» Utenom deres nåværende implementeringer, er smarte kontrakter til stede andre steder: myntautomater anses som en rudimentær versjon av teknologien, da de følger det generelle prinsippet om at med riktig input er et visst utfall garantert.

Til tross for navnet deres, er ikke smarte kontrakter nødvendigvis en gyldig, bindende avtale i lovens øyne, slik tradisjonelle kontrakter pleier å være. I blokkjede-implementering trenger de imidlertid ikke være det. Tolkningen fra US National Institute of Standards and Technology definerer dem som en «samling av kode og data (noen ganger referert til som funksjoner og tilstand) som distribueres ved hjelp av kryptografisk signerte transaksjoner på blokkjedenettverket.» Dette er også definisjonen som Ethereum og lignende blokkjeder opererer etter.

For de som forstår hva blokkjede er, kan det virke åpenbart hvordan smarte kontrakter passer inn i arkitekturen til en blokkjede. I et fullstendig desentralisert rom, hvor ingen har betydelige mengder makt, er det ingen plass for mellommenn og tredjeparter som håndterer samsvar og konsensus. Som vår guide forklarer, oppnås konsensus gjennom forhåndsinnstilte mekanismer som ikke er avhengige av menneskelig innblanding. Det samme gjelder for overholdelse og gjennomføring av programmer: smarte kontrakter er programmerte implementeringer av disse konseptene som fjerner behovet for at folk skal ha den slags makt.

Hvordan fungerer smarte kontrakter?

Enkelt forklart består smarte kontrakter av forskjellige funksjoner som er definert på dem. Brukere samhandler med dem ved å sende en transaksjon som utløser en bestemt funksjon. Hver av disse funksjonene er definert i detalj, slik at brukere kan forstå nøyaktig hva det er de skal gjøre.

Brukerne av nettverket definerer smarte kontrakter. Alle som kan kode på det smarte kontraktsspråket kan skrive sine egne, så lenge de har nok mynter til å distribuere dem. Selve kostnaden avhenger av nettverket du distribuerer på og dets krav.

Et eksempel fra den virkelige verden ville være en handelsavtale. Når begge parter har blitt enige om detaljene (hva hver får til gjengjeld, betingelsene, eventuelle faktorer som kan få dem til å omhandle avtalen etc.), vil de vanligvis finne en nøytral tredjepart for å sikre at alt blir gjort riktig. Nøytrale tredjeparter koster imidlertid penger, og de kan ikke alltid stoles på å forbli nøytrale eller rett og slett ikke prøve å få sin egen fordel av situasjonen. Den enkleste løsningen ville være å fjerne denne tredjeparten fullstendig. Men hvem skal fungere som megler da?

Dette er grunnen til at folk alltid har foretrukket nøytraliteten som bare maskiner kan gi. Med nåværende teknologiske fremskritt ser det fortsatt ikke ut til at maskiner har sine egne preferanser og interesser, så de blir ofte antatt som den beste løsningen på disse problemene. Med andre ord, lar programmering av en smart kontrakt alle involverte parter bli enige om detaljene om handelen offentlig og transparent (ettersom smarte kontrakter ikke er i stand til å gjøre noe som ikke var eksplisitt kodet inn), og forhindrer dermed potensiell mishandling. Dette reduserer også de totale kostnadene, ettersom distribusjon og senere utløsning av en smart kontrakt er relativt lav sammenlignet med advokatkostnader.

Smarte kontrakter garanterer at alt vil bli gjort på nøyaktig måte som det ble kodet. Siden de ikke er veldig komplekse programmer, kan disse kodene ofte leses og forstås med litt grunnleggende programmeringskunnskap. Dette er viktig for å holde alt transparent og legge til rette for et godt samarbeid med andre deltakere i nettverket.

Hva kan smarte kontrakter brukes til?

En av de største fordelene med smarte kontrakter er at de kan brukes til så å si alt, så lenge det kan programmeres. Selvfølgelig er noen brukstilfeller mer vanlige enn andre. Noen av de beste eksemplene inkluderer:

  • Digital identitet: i en tid med tvilsomt personvern på internett, er det bekymring for hvilke data du deler med selskaper hvis nettsteder du har tilgang til. Dette kan enkelt digitaliseres gjennom smarte kontrakter, der de kan dele dine preferanser for innholdskureringsformål uten faktisk å avsløre din personlige informasjon.
  • Verdipapirer: finanssektoren som helhet lider av mye friksjon mellom ulike parter, spesielt når det gjelder å holde og handle verdipapirer. Ved å automatisere alt gjennom smarte kontrakter kan mellomledd fjernes helt. Programmet vil da ta over, utbetale utbytte og/eller andre automatiske utbetalinger, administrere ansvar og effektivisere arbeidsflyten.
  • Lån: dette er ofte kilden til frustrasjon for mange. Implementering av smarte kontraktsbetalinger vil bety å redusere de totale kostnadene som vanligvis går til tredjeparten, opprettholde en fordelaktig rente og sikre at det ikke er noe i liten skrift som kan utnyttes. I tillegg kan det å sette opp automatiske månedlige betalinger forenkle hele prosessen ytterligere for alle deltakere.
  • Forsyningskjede: som en av de mest kjente brukssakene for blokkjede, er smarte kontrakter også uvurderlige når det gjelder forsyningskjedestyring. Fra lagersporing til automatiske oppdateringer til alle berørte parter, kan implementering av smarte kontrakter  forbedre åpenheten og redusere muligheten for potensiell svindel betydelig.
  • Escrow: som med andre aktiviteter som krever tredjepartsinvolvering, er escrow også en av de som vil ha nytte av automatisering. Med smarte kontrakter holdes midler på et trygt sted inntil alle vilkår for frigjøring er oppfylt. Dette kan nesten eliminere risikoen for tyveri og svindel samtidig som det holder alt fullstendig transparent og kanskje mest av alt rimelig.
  • Helsesystemer: medisinske data er svært sensitive, og de fleste jurisdiksjoner har lover som beskytter dem mot uautorisert tilgang. Bruk av smarte kontrakter kan ikke bare beskytte disse dataene, men lar også enkeltpersoner bestemme hvem som kan få tilgang til dem. Til syvende og sist kan folk gi medisinske forskere tilgang til dataene sine mot en avgift, og eliminere en betydelig mengde etiske bekymringer for alle involverte parter.
  • Lønn: bedrifter som beholder funksjonærer kan spare betydelige summer ved å betale dem ut automatisk. Selv om de må ta hensyn til fridager, kan disse endringene justeres raskt og enkelt. Konseptet kan fungere for timeansatte også.

Listen over brukstilfeller for smarte kontrakter ovenfor er langt fra uttømmende. Imidlertid er eksemplene med på å vise fram det brede spekteret av brukstilfeller utover det mange tenker på når de hører om teknologien. Med riktig infrastruktur kan smarte kontrakter gå langt utover brukstilfellene som er skissert her.

Fordeler med smarte kontrakter

Mange av fordelene smarte kontrakter gir for måten du driver virksomheten din på kan utledes av det vi har vist nå. På den annen side går noen fordeler utover det som kan være åpenbart i begynnelsen. La oss se nærmere på dem.

  • Tillit: eller, kanskje mer nøyaktig, tillitsløshet – som betyr at man ikke implisitt trenger å stole på noen om at betingelsene man har satt vil bli utført. Siden en smart kontrakt ikke har noen egen autonomi, kan du være trygg på at alt vil skje akkurat som det er skrevet.
  • Sikkerhet: kryptografi, konseptet som blokkjeder (og smarte kontrakter, i forlengelsen) er bygget på, holder alt mye sikrere enn mange andre teknologiske løsninger.
  • Hastighet: bruk av smarte kontrakter er et betydelig steg opp fra å håndtere alt som kan automatiseres manuelt. Spesielt når det gjelder mellommenn, som kan ta sin tid avhengig av deres egen praksis, kan det å flytte alt til smarte kontrakter være akkurat den tidsbespareren virksomheten din trenger.
  • Besparelser: ved å følge samme logikk som med hastighetsaspektet, sparer du også pengene du betaler for deres tjenester ved å fjerne forstyrrelser fra tredjeparter.
  • Autonomi: å ikke måtte stole på mellommenn gir deg mer makt til å bestemme, selv eller sammen med en annen interessert part, nøyaktig hva din smarte kontrakt skal gjøre. I tillegg er sjansen for at noen gjør feil (eller til og med manipulerer) betydelig redusert med færre deltakere.
  • Nøyaktighet: med mindre en feil er forhåndsprogrammert i den smarte kontrakten, er den fysisk ute av stand til å gjøre noe annet enn det som er skrevet i koden.
  • Åpenhet: ikke bare vil du kunne lese den smarte kontrakten og se om den er skrevet i henhold til det du ønsket eller trengte, men det at den er lagret på blokkjeden gjør at all relevant data også vil være synlig for ettertiden. For bedrifter kan dette fremskynde revisjonsprosesser.
  • Enkel å forstå (og bruke): det er sant at kode kan skrives på utrolig forvirrende måter. Kode av høy kvalitet vil imidlertid være lett å forstå og bruke, noe som betyr at det vil være mye enklere enn å gå gjennom lange juridiske dokumenter.

Andre fordeler ved å bruke smarte kontrakter vil avhenge av din personlige brukssituasjon. Det viktigste er at alle har én ting til felles: de gjør alt enklere.

Potensielle ulemper

Selvfølgelig er ingen teknologi et universalmiddel. Dette gjelder spesielt for blokkjede og smarte kontrakter. Siden de fortsatt er relativt nye teknologier som løser langvarige problemer i mange bransjer, forventes de ofte å være i stand til å gjøre mye mer enn de realistisk kan. Her er noen utfordringer som smarte kontrakter kan by på:

  • Ikke juridisk bindende: til tross for navnet deres, er ikke smarte kontrakter nødvendigvis faktiske kontrakter. Det kan hende de ikke holder stand i en domstol, men dette kan variere fra sak til sak.
  • Regulatorisk usikkerhet: på samme måte, siden teknologien er så ny, er det ofte ingen myndighetsbestemmelser på plass. Avhengig av typen transaksjon er de kanskje ikke nødvendige – men de kan også være kritiske, så det kan være en oppgave å navigere i disse juridiske spørsmålene.
  • Skattlegging: på samme måte dukker spørsmålet om hvordan skattesmarte kontraktstransaksjoner opp. Mens noen kan ha sin presedens innen tradisjonell finans, har fremgangen av kryptovalutaer brakt noen nye faktorer inn i bildet.
  • Adressering av feil: ingen kode er perfekt, og feil oppstår, selv for de beste kodere. Noen av dem blir kanskje ikke lagt merke til før det er for sent, og transaksjoner på blokkjeden er irreversible. Med andre ord kan feil være kostbare.
  • Heving av kontrakter: ettersom smarte kontrakter er ganske bokstavelige, er det ofte ingen måte å si dem opp på slik du ville gjort med en tradisjonell kontrakt, dvs. i retten.
  • Ikke alle kan lese koder: enkelt forklart, vet ikke alle det grunnleggende om koding. Selv om smarte kontrakter teoretisk sett burde være enklere å forstå enn dokumenter på papir, siden de ikke tillater tillegg i liten skrift, hjelper det ikke om man ikke forstår selve språket. Hvis du ikke kan lese koden, kan hvem som helst skrive hva de vil uten at du blir noe klokere.
  • De kan ikke få informasjon fra den virkelige verden: smarte kontrakter kan ikke få tilgang til informasjon fra utenfor blokkjeden fordi det kan sette konsensus i fare. Såkalte orakler brukes for å overvinne denne hindringen.

Betydningen av hver av disse ulempene, akkurat som fordelene vi listet over, avhenger av hva du faktisk bruker smarte kontrakter til. Likevel vil det å være klar over disse fordelene og ulempene kunne hjelpe deg med å ta en informert beslutning hvis du vurderer å bruke smarte kontrakter.

Hva er et orakel?

Mens vi snakket om blokkjeder og smarte kontrakter, uttalte vi flere ganger at målet med begge, blant annet, er å eliminere avhengigheten av tredjeparter. Det er imidlertid noen situasjoner der dette ikke kan unngås. En av disse situasjonene er når du trenger informasjon fra den virkelige verden for å inngå i smarte kontrakter uten å konstant lete etter det manuelt.

Blokkjede-orakler er slike tredjeparter. De fungerer som bindeleddet mellom data på kjeden, som er blokkjeden, og av kjeden, eller det vi kaller den virkelige verden. Dette bidrar til å utvide omfanget av smarte kontrakter. Uten orakler ville smarte kontrakter bare kunne fungere med informasjonen de kan få fra selve blokkjeden, noe som ikke er mye.

For å forhindre at dataene blir manipulert, er orakler også ofte desentralisert. Dette betyr at de alle sender de samme dataene, og dataene som flertallet sendte blir tatt som riktig. Hvis et orakel blir funnet å være svært inkonsistent med resten for ofte, kan det antas å være ondsinnet og straffes. Det finnes mange forskjellige typer orakler, og typen som implementeres vil avhenge av hva nettverket og dets brukere trenger.

Hvordan skrive smarte kontrakter

For å skrive en smart kontrakt, må du være kjent med minst ett programmeringsspråk som brukes til dette formålet. På Ethereum blokkjeden har du valget mellom to utviklervennlige språk: Solidity og Vyper. Du vil også trenge gass: jo mer kompleks en transaksjon i den smarte kontrakten, jo mer gass trenger den. Hver transaksjon spesifiserer mengden gass den trenger til å betale for å kjøre en eller annen kode, så den totale avgiften som betales kommer opp til den totale gassen som brukes ganger gassprisen.

Hvordan du skriver en smart kontrakt vil mest avhenge av hva du vil at den skal gjøre. Jo enklere det er, jo raskere kan du gjøre det, selv om programmeringskunnskapen din er ganske grunnleggende. Det finnes myriader av opplæringsprogrammer på nettet for å hjelpe deg i gang.

Kontrakten må kompileres før den distribueres på blokkjeden. Kompilering vil også hjelpe med å finne ut om du har skrevet alt riktig og om det fungerer slik det skal.

Konklusjon

Som denne guiden viser, er smarte kontrakter en måte å automatisere ting som ellers måtte gjøres manuelt, med all sikkerheten, åpenheten og uforanderligheten som alltid tilbys med blokkjedeteknologi. Selv om de har noen ulemper, løser smarte kontrakter fortsatt ekte problemer. Dette betyr at det å vite hvordan du bruker en (eller til og med skriver en selv!) kan være en uvurderlig ferdighet. Imidlertid er bare det å forstå hvordan de fungerer et utmerket utgangspunkt.

Har vi gått glipp av noe du ville vite? Har du andre forslag til denne oppføringen? Gi oss beskjed.


Other Blokkjede Guider Guider