Mange av konseptene som vi promoterer over i Ethereum land kan til tider virke utrolig futuristisk, og kanskje til og med skremmende. Vi snakker om såkalte “smarte kontrakter” som utfører seg selv uten behov, eller noen mulighet for menneskelig inngripen eller involvering, mennesker som danner Skynet-lignende “desentraliserte autonome organisasjoner” som lever helt på skyen og som likevel kontrollerer kraftige økonomiske ressurser og kan stimulere folk til å gjøre veldig virkelige ting i den fysiske verden, desentralisert “matematisk basert lov”, og en tilsynelatende utopisk søken etter å skape et slags fullt tillitsfritt samfunn. For den uinformerte brukeren, og spesielt for de som ikke engang har hørt om vanlig gammel Bitcoin, kan det være vanskelig å se hvordan slike ting er mulig, og om det er grunnen til at de muligens kan være ønskelige. Formålet med denne serien vil være å dissekere disse ideene i detalj, og vise nøyaktig hva vi mener med hver enkelt, diskutere dens egenskaper, fordeler og begrensninger.
Den første delen av serien vil snakke om såkalte “smarte kontrakter”. Smarte kontrakter er en ide som har eksistert i flere tiår, men som ble gitt sitt nåværende navn og først i stor grad gjort oppmerksom på (kryptografisk tilbøyelig) publikum av Nick Szabo i 2005. Definisjonen av en smart kontrakt er egentlig enkel: en smart kontrakt er en kontrakt som håndhever seg selv. Det vil si, mens en vanlig kontrakt er et papir (eller nylig PDF-dokument) som inneholder tekst som implisitt ber om at en dommer skal beordre en part til å sende penger (eller annen eiendom) til en annen part under visse betingelser, en smart contract er et dataprogram som kan kjøres på maskinvare som automatisk utfører disse forholdene. Nick Szabo bruker eksemplet på en salgsautomat:
Et kanonisk eksempel fra virkeligheten, som vi kan betrakte som den primitive forfaren til smarte kontrakter, er den ydmyke automaten. Innenfor en begrenset mengde potensielt tap (beløpet i kassaskuffen skal være mindre enn kostnadene ved å bryte mekanismen) tar maskinen inn mynter, og via en enkel mekanisme, noe som gjør et førsteårs datavitenskapsproblem i design med endelige automater, dispensere endring og produkt i henhold til den viste prisen. Salgsautomaten er en kontrakt med bærer: Alle med mynter kan delta i en bytte med selgeren. Låsekassen og andre sikkerhetsmekanismer beskytter lagrede mynter og innhold mot angripere, tilstrekkelig til å tillate lønnsom distribusjon av salgsautomater i et bredt utvalg av områder.
Smarte kontrakter er anvendelsen av dette konseptet på, vel, mange ting. Vi kan ha smarte økonomiske kontrakter som automatisk stokker penger basert på bestemte formler og betingelser, smarte domenenavns salgsordrer som gir domenet til den som først sender inn $ 200, kanskje til og med smarte forsikringskontrakter som styrer bankkontoer og automatisk utbetaler basert på klarert kilde (eller kombinasjon av kilder) som leverer data om hendelser i den virkelige verden.
Smart eiendom
På dette tidspunktet oppstår imidlertid et åpenbart spørsmål: hvordan skal disse avtalene håndheves? Akkurat som tradisjonelle kontrakter, som ikke er verdt papiret de er skrevet på, med mindre det er en faktisk dommer støttet av juridisk makt som håndhever dem, må smarte kontrakter “plugges inn” i noe system for å faktisk ha makt til å gjøre noe. Den mest åpenbare og eldste løsningen er maskinvare, en idé som også går under navnet “smart eiendom”. Nick Szabos salgsautomat er det kanoniske eksemplet her. Inne i automaten er det en slags proto-smart-kontrakt, som inneholder et sett med datakode som ser omtrent slik ut:
hvis knapp_trykket == "Coca Cola" og innsatt penger >= 1,75: frigjøring ("Coca Cola") return_change (money_inserted – 1.75) ellers hvis button_pressed == "Aquafina Water" og innsatt penger >= 1,25: utgivelse ("Aquafina Water") return_change (money_inserted – 1.25) annet hvis…
Kontrakten har fire “kroker” til omverdenen: knappene som er trykket inn og pengene er satt inn som input, og kommandoene release og return_change som output. Alle disse fire er avhengige av maskinvare, selv om vi fokuserer på de tre siste fordi menneskelig input generelt blir ansett som et trivielt problem. Hvis kontrakten kjørte på en Android-telefon fra 2007, ville den være ubrukelig; Android-telefonen har ingen måte å vite hvor mye penger som ble satt inn i et spor, og kan absolutt ikke frigjøre Coca Cola-flasker eller returnere bytte. På en salgsautomat, derimot, har kontrakten en viss “styrke”, støttet av salgsautomatens interne Coca Cola-beholdninger og dens fysiske sikkerhet som hindrer folk i å bare ta Coca Cola uten å følge kontraktens regler.
En annen, mer futuristisk, anvendelse av smart eiendom er leiebiler: forestill deg en verden der alle har sin egen private nøkkel på en smarttelefon, og det er en bil slik at når du betaler $ 100 til en bestemt adresse, begynner bilen automatisk å svare på kommandoer signert av din private nøkkel i en dag. Det samme prinsippet kan også brukes på hus. Hvis det høres fjernt ut, må du huske at kontorbygg allerede i stor grad er smart eiendom: tilgang styres av tilgangskort, og spørsmålet om hvilke (om noen) dører hvert kort er gyldig for bestemmes av et stykke kode knyttet til en database. Og hvis selskapet har et HR-system som automatisk behandler ansettelseskontrakter og aktiverer tilgangskort for nye ansatte, er den ansettelseskontrakten i liten grad en smart kontrakt..
Smart Money and Factum Society
Imidlertid er fysisk eiendom svært begrenset i hva den kan gjøre. Fysisk eiendom har en begrenset sikkerhet, så du kan praktisk talt ikke gjøre noe interessant med mer enn noen titusenvis av dollar med et smart-eiendomsoppsett. Og til slutt innebærer de mest interessante kontraktene å overføre penger. Men hvordan kan vi faktisk få det til å fungere? Akkurat nå kan vi i utgangspunktet ikke. Vi kan teoretisk sett gi kontraktene innloggingsopplysningene til bankkontiene våre, og deretter få kontrakten til å sende penger under noen betingelser, men problemet er at denne typen kontrakter ikke egentlig er “selvhåndhevende”. Kontraktsparten kan alltid bare slå av kontrakten rett før betaling forfaller, eller tømme bankkontoen, eller til og med endre passordet til kontoen. Til slutt, uansett hvordan kontrakten er integrert i systemet, har noen muligheten til å slå den av.
Hvordan kan vi løse problemet? Til syvende og sist er svaret et som er radikalt i sammenheng med vårt bredere samfunn, men allerede veldig mange gamle nyheter i Bitcoin-verdenen: vi trenger en ny type penger. Så langt har utviklingen av penger fulgt tre trinn: varepenger, varestøttede penger og fiatpenger. Varepenger er enkle: det er penger som er verdifulle fordi de også samtidig er en vare som har en viss “egenverdi” bruksverdi. Sølv og gull er perfekte eksempler, og i mer tradisjonelle samfunn har vi også te, salt (etymologinote: det er her ordet “lønn” kommer fra), skjell og lignende. Deretter kom varestøttede penger – banker som utsteder sertifikater som er verdifulle fordi de kan innløses for gull. Endelig har vi fiat-penger. “Fiat” i “fiat money” er akkurat som i “fiat lux“, Bortsett fra i stedet for at Gud sier” la det være lys “, er det den føderale regjeringen som sier” la det være penger “. Pengene har verdi i stor grad fordi regjeringen som utsteder dem godtar de pengene, og bare de pengene, som betaling for skatter og avgifter, sammen med flere andre juridiske privilegier.
Med Bitcoin har vi imidlertid en ny type penger: faktapenger. Forskjellen mellom fiatpenger og faktapenger er denne: mens fiatpenger blir til og opprettholdt av en regjering (eller, teoretisk sett, en annen form for byrå) som produserer dem, er faktumpenger bare. Faktapenger er ganske enkelt en balanse, med noen få regler for hvordan balansen kan oppdateres, og at pengene er gyldige blant det settet med brukere som bestemmer seg for å godta dem. Bitcoin er det første eksemplet, men det er flere. For eksempel kan man ha en alternativ regel, som sier at bare bitcoins som kommer ut av en viss “genese-transaksjon”, teller som en del av balansen; dette kalles “fargede mynter”, og er også en slags faktapenger (med mindre de fargede myntene er fiat- eller varestøttede).
Hovedløftet om faktapenger er faktisk nettopp det at de passer så godt sammen med smarte kontrakter. Hovedproblemet med smarte kontrakter er håndhevelse: hvis en kontrakt sier å sende $ 200 til Bob hvis X skjer, og X skjer, hvordan kan vi sikre at $ 200 faktisk blir sendt til Bob. Løsningen med faktapenger er utrolig elegant: definisjonen av pengene, eller nærmere bestemt definisjonen av gjeldende balanse, er resultatet av gjennomføring av alle kontraktene. Således, hvis X skjer, vil alle være enige om at Bob har de ekstra $ 200, og hvis X ikke skjer, vil alle være enige om at Bob har hva Bob hadde før.
Dette er faktisk en mye mer revolusjonerende utvikling enn du kanskje tror først; med faktapenger har vi skapt en måte for kontrakter, og kanskje til og med lov generelt, å jobbe og være effektive, uten å stole på noen form for mekanisme for å håndheve dem. Vil du ha en bot på $ 100 for forsøpling? Definer deretter en valuta slik at du har 100 enheter mindre hvis du søppel, og overbevise folk om å godta den. Det spesifikke eksemplet er veldig langt hentet og sannsynligvis upraktisk uten noen få store forbehold som vi vil diskutere nedenfor, men det viser det generelle prinsippet, og det er mange mer moderate eksempler på denne typen prinsipp som definitivt kan settes til arbeid.
Akkurat hvor smart er smarte kontrakter?
Smarte kontrakter er åpenbart veldig effektive for alle slags økonomiske applikasjoner, eller mer generelt for alle typer bytter mellom to forskjellige faktumaktiva. Et eksempel er et salg av domenenavn; et domene, som google.com, er et faktum aktivum, siden det støttes av en database på en server som bare har noen vekt fordi vi aksepterer det, og penger kan selvsagt også være faktum. Akkurat nå er salg av et domene en komplisert prosess som ofte krever spesialiserte tjenester; i fremtiden vil du kanskje kunne pakke et salgstilbud inn i en smart kontrakt og legge det på blockchain, og hvis noen tar det, vil begge sider av handelen skje automatisk – ingen mulighet for svindel involvert. Å gå tilbake til verden av valutaer er desentralisert utveksling et annet eksempel, og vi kan også gjøre finansielle kontrakter som sikring og gearing.
Imidlertid er det steder der smarte kontrakter ikke er så gode. Tenk for eksempel på tilfellet med en ansettelseskontrakt: A godtar å gjøre en bestemt oppgave for B i bytte mot betaling av X-enheter valuta C. Betalingsdelen er lett å smart-kontrakt-ify. Imidlertid er det en del som ikke er så lett: å verifisere at arbeidet faktisk fant sted. Hvis arbeidet er i den fysiske verden, er dette ganske mye umulig, siden blokkjeder ikke har noen måte å få tilgang til den fysiske verdenen. Selv om det er et nettsted, er det fortsatt spørsmålet om å vurdere kvalitet, og selv om dataprogrammer kan bruke maskinlæringsalgoritmer til å bedømme slike egenskaper ganske effektivt i visse tilfeller, er det utrolig vanskelig å gjøre det i en offentlig kontrakt uten å åpne døren for ansatte “spiller systemet”. Noen ganger er et samfunn styrt av algoritmer bare ikke helt bra nok.
Heldigvis er det en moderat løsning som kan fange det beste fra begge verdener: dommere. En dommer i en vanlig domstol har i det vesentlige ubegrenset makt til å gjøre det de vil, og dømmeprosessen har ikke et spesielt godt grensesnitt; folk trenger å inngi sak, vente betydelig tid på en rettssak, og dommeren tar til slutt en avgjørelse som håndheves av rettssystemet – i seg selv ikke et forbilde av lynrask effektivitet. Privat voldgift klarer ofte å være billigere og raskere enn domstoler, men også der er problemene fortsatt de samme. Dommere i en faktumverden er derimot veldig forskjellige. En smart ansettelseskontrakt kan se slik ut:
hvis sier (B,"A gjorde jobben") eller sier (J,"A gjorde jobben"): send (200, A) annet hvis sier (A,"A gjorde ikke jobben") eller sier (J,"A gjorde ikke jobben"): send (200, B)
sier er en algoritme for bekreftelse av signaturer; sier (P, T) sjekker i utgangspunktet om noen hadde sendt inn en melding med teksten T og en digital signatur som verifiserer ved bruk av Ps offentlige nøkkel. Så hvordan fungerer denne kontrakten? Først ville arbeidsgiveren sende 200 valutaenheter inn i kontrakten, der de satt i sperret. I de fleste tilfeller er arbeidsgiver og arbeidstaker ærlige, så enten A slutter og frigjør midlene tilbake til B ved å signere en melding som sier “A gjorde ikke jobben” eller A gjør jobben, B verifiserer at A gjorde jobben, og kontrakten frigjør midlene til A. Men hvis A gjør jobben, og B er uenig, er det opp til å dømme J å si at enten A gjorde jobben eller A ikke gjorde jobben.
Merk at Js makt er veldig nøye avgrenset; alt som J har rett til å gjøre er å si at enten A gjorde jobben eller A ikke gjorde jobben. En mer sofistikert kontrakt kan også gi J rett til å gi dommer innenfor området mellom de to ytterpunktene. J har ikke rett til å si at A faktisk fortjener 600 valutaenheter, eller at for øvrig hele forholdet er ulovlig og J skulle få de 200 enhetene, eller noe annet utenfor de klart definerte grensene. Og Js makt håndheves av faktum – kontrakten inneholder Js offentlige nøkkel, og dermed går midlene automatisk til A eller B basert på grensene. Kontrakten kan til og med kreve meldinger fra 2 av 3 dommere, eller den kan få separate dommere til å dømme separate aspekter av arbeidet og få kontrakten automatisk til å gi Bs arbeid en kvalitetspoeng basert på disse rangeringene. Enhver kontrakt kan rett og slett plugge inn en hvilken som helst dommer på nøyaktig den måten de vil, enten det er å bedømme sannheten eller løgnen til et bestemt faktum, gi en måling av en variabel, eller være en av partene som legger til rette for arrangementet.
Hvordan vil dette være bedre enn dagens system? Kort sagt, hva dette introduserer er “dommere som en tjeneste”. Nå, for å bli en “dommer”, må du ansettes hos et privat voldgiftsfirma eller en offentlig domstol eller starte din egen. I et kryptografisk aktivert faktumrettssystem krever det å være dommer å ha en offentlig nøkkel og en datamaskin med internettilgang. Så kontraintuitivt som det høres ut, trenger ikke alle dommere å være kjent med loven. Noen dommere kan spesialisere seg i for eksempel å avgjøre om et produkt ble sendt riktig eller ikke (ideelt sett ville postsystemet gjøre dette). Andre dommere kan verifisere fullføringen av arbeidskontrakter. Andre vil vurdere skader for forsikringskontrakter. Det vil være opp til kontraktsforfatteren å plugge inn dommere av hver type på de aktuelle stedene i kontrakten, og den delen av kontrakten som kan defineres rent i datakode vil være.
Og det er alt det er.
Den neste delen av denne serien vil snakke om begrepet tillit, og hva kryptografer og Bitcoin-talsmenn egentlig mener når de snakker om å bygge et “tillitsfritt” samfunn..