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.
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.
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.
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.
ERC-20
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.
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.