Guide

Smartkontrakter: En nybegynnerguide

Tema
Kryptovaluta
Passer for
Nybegynner
I denne guiden får du en solid innføring i smartkontrakter; hva de er, hvordan de fungerer og hva de egentlig kan brukes til i praksis.
Synne Guldahl

I denne guiden:

Kryptovaluta og blokkjede går hånd i hånd. Men siden 2015 har en annen gren av denne banebrytende desentraliseringsteknologien også fått et solid fotfeste på markedet. Smartkontrakter er fremtidens kontrakter, og kommer i følge entusiastene til å erstatte informasjonsutveksling og avtaler slik vi kjenner dem i dag.

I denne guiden får du en grundig og lettforståelig gjennomgang av hva smartkontrakter egentlig er. Vi kikker på hvordan teknologien fungerer, hvilke områder smartkontrakter kan brukes på, samt fordeler, ulemper og fremtiden til disse digitale avtaleprogrammene.

Hva er smartkontrakter?

La oss begynne med å gå gjennom smartkontraktenes begynnelse og hvordan funksjonaliteten ser ut i praksis.

Nick Szabo, Ethereum og smartkontraktenes begynnelse

Nick Szabo kom med den første kjente definisjonen av en smartkontrakt allerede i 1996. Han argumenterte for at kontrakter, altså avtaler mellom to eller flere parter, var en av de mest solide komponentene i et velfungerende, demokratisk samfunn. Szabo påpekte imidlertid også at ettersom den digitale alderen ble et faktum ville det bli stadig mer utfordrende å vedlikeholde denne tradisjonen.

Derfor foreslo Szabo en digital løsning på et digitalt problem; en videreføring av kontrakter som allikevel ville fungere i informasjonsteknologiens æra. Han spesifiserte smartkontrakter (‘smart’ fordi Szabo anså dem som en hel del smartere enn papirkontrakter) som følger:

«En smartkontrakt er et sett med løfter, spesifisert i digitalt format, som inkluderer protokoller hvori partene handler i henhold til disse løftene.»

Spol 20 år frem i tid. Det er nemlig umulig å skrive om smartkontrakter uten å samtidig nevne Vitalik Buterin og blokkjede-prosjektet Ethereum. Buterin fusjonerte Szabo’s smartkontrakt-idé fra 90-tallet med den banebrytende blokkjede-teknologien lansert av Satoshi Nakamoto seks år tidligere. Og dermed ble smartkontrakter understøttet av blokkjeden født.

Frem til dette tidspunktet hadde blokkjeden vært begrenset til finansielle transaksjoner, direkte mellom privatpersoner. Men med en smartkontrakt ble det mulig å dra nytte av det desentraliserte nettverket til en hvilken som helst transaksjon. I Ethereum-nettverket brukes smartkontrakter i dag primært til å kjøre desentraliserte applikasjoner. Prinsippet kan imidlertid overføres til enhver transaksjon som krever forhåndsbestemte rammer.

Steg for steg: Slik kjøres en smartkontrakt

Så hvordan fungerer egentlig en smartkontrakt? Smartkontrakter baserer seg på såkalt if this, then that-logikk. For å gjøre dette så enkelt som mulig kan man i stedet uttrykke prinsippet som følger: ‘Hvis A, så B’. Her programmeres det altså forhåndsbestemte betingelser inn i en kontrakt, eller et program, som deretter kjøres i sekvens.

Nick Szabo sammenlignet i sin tid denne logikken med en brusautomat. Sekvensen går som følger:

  • Du legger penger på automaten
  • Du velger den brusen du vil ha
  • Automaten sjekker at du har betalt nok penger for brusen
  • Automaten gir deg brusen

Ingen av disse stegene ville ha forekommet uten hverandre, og de ville heller ikke ha forekommet i noen annen rekkefølge. ‘Hvis A, så B’; du må legge på penger (A) for at automaten skal gi deg brusen din (B). En smartkontrakt drar dette prinsippet inn i den digitale verden, og programmerer inn den forhåndsbestemte sekvensen.

La oss si at du ønsker en smartkontrakt for betaling av leie i en leilighet du eier. I praksis vil dette fungere akkurat som i en vanlig kontrakt, bortsett fra at den digitaliserte versjonen sørger for at begge parter må holde seg til avtalen sin:

  • Du kobler din bankkonto opp til en felles betalingsløsning
  • Leietakeren kobler sin bankkonto opp til en felles betalingsløsning
  • Betalingsløsningen registreres i smartkontrakten
  • Videre registreres dato for betaling av leie, samt månedsbeløpet for leie
  • Smartkontrakten trekker automatisk penger fra leietakers konto og overfører den til din konto på den forhåndsprogrammerte datoen og for det forhåndsprogrammerte beløpet

Man blir altså mindre avhengig av tillit med en smartkontrakt, fordi mer av kontrakten er digital og automatisert. Ved bruk av blokkjede-nettverket blir den i tillegg kjørt opp mot en offentlig transaksjonshovedbok som sørger for at begge parter overholder kontrakten.

Hva er smartkontrakter

Blokkjede-nettverket og bekreftelse av smartkontrakter

En blokkjede er i prinsippet et desentralisert nettverk som drifter en offentlig transaksjonshovedbok. I begynnelsen ble hovedboken i all hovedsak brukt til å holde orden i kryptovalutatransaksjoner. Med smartkontrakter kan den brukes til å holde orden i en hvilken som helst transaksjon, uansett om denne er penge- eller informasjonsbasert.

Ved å kombinere blokkjede med smartkontrakter får man en offentlig oversikt over den forhåndsprogrammerte sekvensen i kontraktene. La oss fortsette med eksempelet over og si at leietaker mente at hun eller han allerede hadde betalt leien sin til tross for at du ikke hadde mottatt pengene. Med en smartkontrakt på blokkjeden ligger sekvensinformasjonen offentlig.

Med andre ord kan hvem som helst sjekke hva som egentlig stemmer. Så snart pengene overføres fra leietaker til deg vil dette nemlig lagres i den offentlige transaksjonshovedboken. Dermed blir det enkelt å opprettholde kontrakter når de programmeres med if this, then that-logikk på toppen av en offentlig og desentralisert blokkjede.

I disse tilfellene er det i tillegg det desentraliserte nettverket som bekrefter alle transaksjonene. Altså må et visst antall aktive noder (brukere) på nettverket bekrefte betalingen av leien for at den skal gå gjennom og registreres i hovedboken. Dette fører til sikkerhet, samt direkte transaksjoner mellom avtalepartene uten behov for noen tredjepart, som en bank eller megler.

Hva kan smartkontrakter brukes til i praksis?

Selv om det er lett å tenke at blokkjede-nettverket utelukkende kan brukes til pengetransaksjoner har smartkontrakter vist at dette ikke er tilfellet. Faktisk kan disse programmene benyttes til en hvilken som helst transaksjon der informasjon eller verdier skal utveksles og man er avhengig av tillit til sekvensen på utvekslingen.

Smartkontrakter som stemmegivningssystem

Å forebygge mot korrupsjon og juks ved politiske valg er en enorm utfordring, spesielt i utviklingsland. Problemet frem til nå har videre vært at det ikke finnes noen gode, digitale løsninger som kan erstatte de eldgamle papirstemmene. Dessverre er denne typen stemmegivning tungvint og treg, og fører sannsynligvis til at mange dropper å stemme.

Med smartkontrakter kan man innføre stemmegivningssystemer som er effektive, vanntette mot hacking, og desentraliserte. Dermed eliminerer man alle de største problemene med digitalisert stemmegivning i én og samme løsning. Dette avhenger selvfølgelig av en form for identitetsverifisering i forbindelse med programvaren, men når dette er løst vil smartkontrakter gjøre korrupsjonsfrie valg mulig.

Husk at blokkjeden er desentralisert og at hele nettverket må bekrefte enhver transaksjon som gjennomføres. Når den først er gjennomført kan den heller ikke redigeres. Det betyr at dersom du avgir din stemme, og denne bekreftes av nettverket, er den som skrevet i sten. Du kan ikke stemme igjen, ei heller kan noen tukle med stemmen du ga.

Stemmeopptelling vil være en enkel sak dersom man kjører stemmegivning via en smartkontraktapplikasjon i og med at dette går automatisk. I tillegg blir det mulig å stemme fra mobiltelefonen eller datamaskinen, som sannsynligvis vil øke valgdeltakelsen betraktelig.

Smartkontrakter til stemmegivning

Smartkontrakter til eierskapskontrakter

Dersom du noensinne har kjøpt en bolig vet du at eierskapsoverføring tradisjonelt er en forholdsvis omfattende prosess. Og man er så å si alltid avhengig av en tredjepart, i alle fall dersom det er snakk om et hus eller en leilighet. Videre kan det være vanskelig å få tak i all historikken på objektet man skal kjøpe, for eksempel for å sikre seg at alt selger oppgir stemmer.

I følge ‘Hvis A, så B’-logikken som brukes i smartkontrakter vil selve eierskapsoverføringen være en enkel sak. Det blir noe så enkelt som ‘Hvis kjøper overfører pengene for boligen, så blir boligens eierskap overført fra selger.’ Dette går automatisk og bekreftes på den offentlige transaksjonshovedboken, slik at alle kan se hvem som eier boligen.

Videre kan man som del av denne typen eierskapskontrakter lage integrering for historikktransaksjoner. Dette er spesielt hendig når det er snakk om en eldre bolig, som kanskje har gjennomgått flere runder med oppussing. Da vil samtlige utbedringer være inkludert i boligens historikk, og være dokumenterte i transaksjonshovedboken.

Altså blir det en enkel sak for deg som kjøper å både sjekke historikken på huset, samt å gjennomføre selve kjøpet. Når programvaren er designet i henhold til gjeldende lovverk vil det heller ikke være behov for en megler eller annen tredjepart. Det betyr billigere og enklere eierskapsoverføringer og smidigere kjøp og salg av boliger. Programmeringen kan selvfølgelig også brukes til andre typer eierskapskontrakter.

Smartkontrakter som administrasjonssikkerhet

Demokrati er et krevende konsept å vedlikeholde, spesielt innenfor bedriftsverdenen. Det finnes talløse eksempler på administrasjoner som ikke handlet i henhold til arbeidsavtaler og lovverk. I tillegg kan det være krevende å opprettholde en demokratisk organisasjonsstruktur med bare noen få i maktposisjon på toppen.

Smartkontrakter kan brukes til en rekke forskjellige ting i bedrifter. Den mest åpenbare, og kanskje viktigste, er ved å sikre en rettferdig organisasjonsstyrelse. Dersom pengeflyt og organisatoriske beslutninger må gå gjennom en smartkontrakt vil korrupsjon i prinsippet bli en umulighet.

Videre kan smartkontrakter sørge for god arbeidsflyt og kontraktoverholdelse når to eller flere bedrifter skal samarbeide. Så lenge avtalen er digitalisert og sekvensen automatiseres unngår man problemer som utelatt betaling for tjenester, misforståelse av underavtaler eller endringer underveis som ikke alle partene er enige om.

Avslutningsvis kan smartkontrakter også brukes til å sikre sensitiv bedriftsinformasjon og dermed begrense lekkasje i utsatte industrier. Når alt av transaksjoner dokumenteres på en offentlig transaksjonshovedbok av det desentraliserte nettverket blir en hvilken som helst bedrift både sikrere og mer gjennomsiktig.

Smartkontrakter innenfor helsevesenet

Helsevesenet er et svært omfattende system. Det består av en rekke forskjellige komponenter (forskjellige sykehus, forskjellige leger, forskjellige apoteker, også videre) og behandler i tillegg i stor grad sensitiv informasjon. Tradisjonelt har dette ført til et byråkratisk og tregt system, som skaper lange helsekøer og mye frustrasjon.

Selv om deler av helsevesenet er digitalisert i dag har smartkontrakter potensialet til å samkjøre alle disse eksisterende løsningene. Videre kan man med god nok programmering sørge for en solid effektivisering av medisinutlevering, informasjonsutveksling og forsikrings/kostnadsberegning.

Som med stemmegivning vil dette igjen avhenge av en form for identifikasjonsverifisering, altså at du kan bevise at du er du til blokkjede-nettverket. Får man dette på plass ville det imidlertid være mulig å gjennomføre en hel del prosesser som i dag kjøres manuelt på en automatisert måte.

Om helsevesenet kunne ha brukt mindre tid på det administrative ved pasientbehandling er sannsynligheten stor for at man ville ha fått både bedre og mer effektiv service. I tillegg ville ansatte i helsevesenet blir mindre belastede med papirarbeid og dermed kunne yte mer innenfor kompetanseområdene sine.

Smartkontrakter i helsevesenet

Fordelene med smartkontrakter

Du har allerede sett at det finnes en rekke områder smartkontrakter kunne ha forbedret. La oss ta en titt på de generelle fordelene, slik at du kan få en enda bedre forståelse av hvorfor smartkontrakter er så smarte.

Selvstyre uten unødvendige mellomledd

Slik kontrakter gjennomføres i dag går de så å si alltid gjennom et mellomledd. Dette er om du skal gjennomføre en betaling, kjøpe medisiner, eller selge en bolig. Du vil i de aller fleste tilfeller være avhengig av en tredjepart som fungerer som tillitsskaperen i kontrakten. Problemet med disse tredjepartene er at de er mellomledd, samt at man må ha tillit til dem.

Med en smartkontrakt blir det mulig å gjennomføre transaksjoner uten disse mellomleddene. Bedrift til bedrift, person til person, eller person til bedrift. Man kan lage kontrakter som er helt vanntette, og forsikrer at begge parter vil overholde sin side av avtalen, uten å bruke en tredjepart. Resultatet blir mer effektive kontrakter, som også koster mindre penger.

Det smartkontrakter i prinsippet gjør er altså å skape selvstyre, eller autonomi. Du og den andre parten kan lage kontrakten akkurat slik det passer for dere. Avtaleretningslinjene programmeres inn i smartkontrakten, og dermed kan ingen bryte den. Dersom det skulle oppstå noen uenigheter kan blokkjede-nettverket bekrefte historikken i kontrakten.

Sikkerhet i smartkontrakter

Solid sikkerhet, uten mulighet for korrupsjon

Blokkjede-nettverket skaper også den solide sikkerheten ved smartkontrakter. Husk at blokkjeden er desentralisert. Brukerne som bekrefter hver enkelt transaksjon sitter over hele verden, og et stort antall av disse må bli enige om at transaksjonen er reell før den bekreftes.

Denne funksjonaliteten får man ved hjelp av transaksjonshovedboken. Smartkontraktene hektes på en hovedbok, som fastsetter sekvenseringen i henhold til avtalevilkårene i kontrakten. Ved hjelp av ‘Hvis A, så B’-logikk kan deretter kontrakten kjøres på den offentlige hovedboken. Nodene som bekrefter de forskjellige stegene i kontrakten vil alltid sjekke hver nye sekvenskomponent opp mot den foregående.

Det sies at blokkjede er umulig å hacke. Det er fordi en eventuell hacker må komme seg inn på hver eneste node i nettverket for å kunne gjennomføre illegitime transaksjoner. Med en solid smartkontrakt eliminerer altså integreringen mot blokkjede-nettverket muligheten for korrupsjon eller tukling med transaksjonene.

100% tillit i samtlige informasjonstransaksjoner

Når så mange selvstendige brukere må bekrefte en transaksjon for at den skal gå gjennom skaper dette en enorm tillit til alt som skjer på blokkjeden. Som egentlig er ironisk, med tanke på at blokkjede-nettverket anses som et tillitløst transaksjonssystem. Det man mener i her er imidlertid at man ikke trenger å stole på en avtalepartner, fordi transaksjonshovedboken og programmeringen gjør denne jobben for deg.

Ved informasjonstransaksjoner, som for eksempel ved overføring av pasientjournaler, stemmeavgivninger eller sensitive dokumenter, skaper smartkontrakter tillit på begge sider av avtalen. Den som har stemt i det politiske valget vet at ingen kan tukle med stemmen deres. Tilsvarende vet de som teller opp stemmene at det ikke er mulig å forfalske dem.

Transaksjonshovedboken til enhver blokkjede er offentlig, og samtlige transaksjoner som noensinne har forekommet kan dermed verifiseres. Historikken i smartkontrakter blir sånn sett skrevet i sten, og kan ikke endres når den først er bekreftet av nettverket.

Tidsbesparelse uten slurv

Ofte er det slik at man må velge enten det ene eller det andre. Enten må man gjøre ting grundig, som tar tid – eller så kan man gjøre ting raskt, men med risikoen for at det blir slurv. Med en smartkontrakt får du i både pose og sekk. Her kan man effektivisere en rekke systemer, uten å være redd for at systemet blir svakere av den grunn.

Som vi så i både stemmeavgivnings- og helsevesenseksempelet over kan smartkontrakter sørge for at de administrative og byråkratiske prosessene automatiseres. Dette frigjør mer tid til oppgavene vi er avhengige av kompetente mennesker til å gjennomføre.

Med bekreftelse fra nettverket og sterk kryptografi i programmeringen er slurv faktisk en umulighet. Programmet kjører bare sekvensen i henhold til avtalevilkårene, og dermed sparer man tid og penger, uten at kvaliteten må vike.

Ulempene med smartkontrakter

Så er det selvfølgelig ikke slik at smartkontrakter bare er fantastiske. Dette er splitter ny teknologi, som fortsatt krever en god del utbedringer for å kunne fungere på stor skala i praksis.

Smartkontrakter i eksisterende, regulerte systemer

Den kanskje største utfordringen med smartkontrakter handler om hvordan de skal fungere i eksisterende systemer, med nasjonale reguleringer og lovverk. Som nevnt gjør smartkontrakter direkteavtaler mulig. Og i og med at blokkjede-nettverkene er både verdensomspennende og desentraliserte går dette helt uavhengig av landegrenser.

Det betyr at du kan selge tjenestene dine fra Norge til en kjøper i Kina – og gjennomføre handelen på bare noen få minutter. Hvordan skattlegger man disse transaksjonene? Hvordan skal forskjellige regjeringer holde styr på dem? Hvor stedfester man blokkjeden når den er helt og holdent desentralisert?

Videre blir det selvfølgelig også rettslige utfordringer med smartkontrakter. Hvilke lovverk skal følges når man programmerer kontraktene? Hvordan forholder man seg til eventuelle brudd på kontrakten, eller uenigheter mellom kontraktspartene? Hvilke domstoler skal ta seg av denne typen saker?

Generelt er det svært vanskelig å konsolidere sentraliserte og desentraliserte systemer. Dette har vi allerede sett i stor grad med kryptovaluta. Smartkontrakter, som omfatter enda flere bruksområder, er hakket mer utfordrende. Man vil være avhengig av et godt samspill mellom nasjonale lovverk og det internasjonale blokkjede-nettverket for at de skal fungere.

Regulering av smartkontrakter

Dårlig programmering og problemer med smartkontrakter

Det svakeste leddet i en smartkontrakt er faktisk personen som programmerer kontrakten. Dersom det blir feil i kodingen vil dette rimeligvis ha store konsekvenser for avtalepartene. Problemet er bare at når et program først er satt i gang på blokkjeden er det nesten umulig å endre på det.

Feil i kodingen blir dermed en annen stor utfordring med smartkontrakter. Det blir kostbart å rette opp i dem, og igjen blir dette et spørsmål om ansvar. Hvem er ansvarlig for feil i en kontrakt dersom feilen handler om kryptografien smartkontrakten er designet med? Og hvordan skal man stille vedkommende til ansvar?

Innen bedriftsverdenen er dette en stor bekymring. Dersom det er snakk om avtaler for mange millioner av kroner må man være 100% sikker på at den går gjennom som den skal. Derfor må det komme på plass systemer som sikrer smartkontraktene og programmeringen deres før de settes ut til live.

Anonymitet på blokkjeden og smartkontrakter

Noe av poenget med blokkjeden, i alle fall opprinnelig, er anonymitet for de som bruker den. De virkelig store kryptovaluta- og blokkjede-entusiastene er i opprør mot de etablerte, sentraliserte finanssystemene vi benytter oss av i dag. Og mye av dette handler om at man ønsker å komme vekk fra en sentralisert informasjonsdatabase med sensitive personopplysninger.

Problemet med dette er at når det er snakk om kontrakter som skal kunne prøves og opprettholdes rent rettslig er man som oftest avhengig av at partene er identifisert. Dersom de forblir anonyme vil det være svært utfordrende å gjøre noe med problematikken, om problemer skulle oppstå.

For at smartkontrakter skal kunne brukes i praksis er det altså viktig at anonymitetsproblematikken løses på en god måte. En digital og automatisert kontrakt fungerer helt fint, men kanskje ikke dersom man ikke vet hvem man skriver den med.

Anonymitet på blokkjeden og smartkontrakter

Smartkontraktmarkedet og fremtiden for smartkontrakter

Hvordan ser egentlig smartkontraktmarkedet ut i dag? Og hvordan kommer det til å utvikle seg i fremtiden? 

Hvem satser på smartkontrakter i dag?

Ethereum er et åpenbart svar på dette spørsmålet. Det finnes tusenvis av desentraliserte applikasjoner som kjører på Ethereum-blokkjeden, og som benytter seg av smartkontrakter for å gjøre nettopp dette. Mer generelt kan vi altså si at både innen kryptovaluta og blokkjede-teknologi for øvrig foregår det en storsatsning på smartkontrakter.

Men det er ikke bare innen dette banebrytende feltet at smartkontrakter har fått et fotfeste. Stadig flere bedrifter velger å kjøre løsningene sine på toppen av blokkjeden, ved hjelp av smartkontrakter. Det franske flyselskapet AXA har eksempelvis laget en applikasjon for umiddelbar kompensasjon ved forsinkede flyvninger. Så snart flyvningen din er over 2 timer forsinket får du opp valgalternativer for kompensasjon i applikasjonen din.

Eiendomsmeglerne Propy har implementert smartkontraktløsningen for kjøp og salg av eiendommer internasjonalt. Dette gjør det eksempelvis mulig for en kjøper i Europa å skaffe seg en investeringseiendom i Asia. Ved hjelp av Propys smartkontrakt gjennomføres kjøpet på rekordtid, og verken kjøper eller selger trenger å uroe seg for mislighold av avtalen.

Hva må til for at smartkontrakter erstatter tradisjonelle avtaler?

Det ser ut til at smartkontrakter er kommet for å bli. Stadig flere bedrifter kjører tester med teknologien, og visse selskaper har gått helt og holdent over til løsninger som baserer seg på smartkontrakter. Allikevel er det et stykke igjen før smartkontraktene erstatter tradisjonelle avtaler.

En del av dette handler om ulempene vi allerede har sett på over. Anonymitetsproblematikken, samt regulering av avtalevilkårene er begge utfordringer som må løses for at smartkontrakter skal kunne implementeres på en stor skala.

I tillegg til dette må også blokkjede-teknologien bli mer akseptert på generell basis. Inntil videre vil sannsynligvis en stor del av befolkningen ha problemer med å stole på en smartkontraktløsning. Bedrifter må også være villige til å implementere systemer for smartkontrakter, slik at forbrukere kan benytte seg av dem.

Som med alle nye systemer vil folk være skeptiske i begynnelsen. Derfor må smartkontrakter få løsninger for feilaktig koding og eventuelle feil, samt implementeres på verdensbasis, for at de etter hvert skal kunne erstatte tradisjonelle kontrakter slik vi kjenner dem i dag. Det er imidlertid ingen tvil om at dette allerede er underveis. Sannsynligheten er stor for at vi vil se mer og mer bruk av smartkontrakter i den nærmeste fremtiden.

Kilder

CMS Wire. The Problems With Blockchain’s Smart Contracts. https://www.cmswire.com/information-management/the-problems-with-blockchains-smart-contracts/

Andrew Stepanov. What Smart Contracts Mean for the Future of Business.https://medium.com/polyswarm/what-smart-contracts-mean-for-the-future-of-business-bee84dc629a3

Mike Orcutt. Ethereum’s smart contracts are full of holes.https://www.technologyreview.com/s/610392/ethereums-smart-contracts-are-full-of-holes/

Ethereum. Vitalik Buterin explains Ethereum. https://www.youtube.com/watch?v=TDGq4aeevgY

Nick Szabo.Smart Contracts: Building Blocks for Digital Markets. http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html

Spire Protocol. Blockchain “Smart Contracts” Will Revolutionize Voting in Elections. https://medium.com/@spireProtocol/blockchain-smart-contracts-will-revolutionize-voting-in-elections-acb5abc7beb6

Polyswarm. 5 Companies Already Brilliantly Using Smart Contracts. https://medium.com/polyswarm/5-companies-already-brilliantly-using-smart-contracts-ac49f3d5c431