Många av de begrepp som vi marknadsför igen Ethereum land kan tyckas otroligt futuristisk, och kanske till och med skrämmande, ibland. Vi pratar om så kallade ”smarta kontrakt” som utför sig själva utan något behov, eller någon möjlighet, för mänskligt ingripande eller engagemang, människor som bildar Skynet-liknande ”decentraliserade autonoma organisationer” som lever helt i molnet och ändå styr kraftfulla ekonomiska resurser och kan uppmuntra människor att göra väldigt verkliga saker i den fysiska världen, decentraliserad ”mattebaserad lag” och en till synes utopisk strävan att skapa ett slags helt förtroendefritt samhälle. För den oinformerade användaren, och särskilt för dem som inte ens har hört talas om vanligt gammalt Bitcoin, kan det vara svårt att se hur den här typen av saker är möjliga, och om det är varför de kan vara önskvärda. Syftet med denna serie kommer att vara att dissekera dessa idéer i detalj och visa exakt vad vi menar med var och en, diskutera dess egenskaper, fördelar och begränsningar.
Den första delen av serien kommer att tala om så kallade “smarta kontrakt”. Smarta kontrakt är en idé som har funnits i flera decennier, men som fick sitt nuvarande namn och först väsentligen uppmärksammades av den (kryptografiska) allmänheten av Nick Szabo 2005. I grund och botten är definitionen av ett smart kontrakt enkelt: ett smart kontrakt är ett kontrakt som verkställer sig självt. Det vill säga, medan ett vanligt kontrakt är ett papper (eller mer nyligen PDF-dokument) som innehåller text som implicit ber en domare att beordra en part att skicka pengar (eller annan egendom) till en annan part under vissa förhållanden, en smart kontrakt är ett datorprogram som kan köras på hårdvara som automatiskt utför dessa villkor. Nick Szabo använder exemplet med en varuautomat:
Ett kanoniskt verkligt exempel, som vi kan betrakta som den primitiva förfadern till smarta kontrakt, är den ödmjuka varuautomaten. Inom en begränsad mängd potentiell förlust (mängden i kassan bör vara mindre än kostnaden för att bryta mot mekanismen) tar maskinen in mynt och via en enkel mekanism, vilket gör ett nybörjat datavetenskapligt problem i design med ändliga automatar, dispensera byte och produkt enligt det visade priset. Varuautomaten är ett kontrakt med innehavaren: vem som helst med mynt kan delta i ett utbyte med säljaren. Låsboxen och andra säkerhetsmekanismer skyddar lagrade mynt och innehåll från angripare, tillräckligt för att möjliggöra lönsam användning av varuautomater i en mängd olika områden.
Smarta kontrakt är tillämpningen av detta koncept på, ja, många saker. Vi kan ha smarta finansiella kontrakt som automatiskt släpper pengar baserat på vissa formler och villkor, smarta domännamnsförsäljningsorder som ger domänen till den som först skickar in $ 200, kanske till och med smarta försäkringsavtal som styr bankkonton och automatiskt betalar ut baserat på vissa betrodda källor (eller kombinationer av källor) som tillhandahåller data om verkliga händelser.
Smart egendom
Vid denna tidpunkt uppstår emellertid en uppenbar fråga: hur ska dessa kontrakt genomföras? Precis som traditionella kontrakt, som inte är värda papperet de är skrivna på, såvida det inte finns en verklig domare som stöds av juridisk makt som verkställer dem, måste smarta kontrakt “kopplas in” i något system för att faktiskt ha makt att göra någonting. Den mest uppenbara och äldsta lösningen är hårdvara, en idé som också går under namnet ”smart egendom”. Nick Sabos automat är det kanoniska exemplet här. Inuti automaten finns det ett slags proto-smart-kontrakt som innehåller en uppsättning datorkod som ser ungefär så ut:
om knapp_tryckt == "Coca Cola" och pengar_insatt >= 1,75: släpp ("Coca Cola") return_change (money_inserted – 1.75) annars om button_pressed == "Aquafina Water" och pengar_insatt >= 1,25: släpp ("Aquafina Water") return_change (money_inserted – 1.25) annars om…
Kontraktet har fyra ”krokar” in i omvärlden: variablerna knapp_tryckt och penninginsatt som inmatning, och kommandona release och return_change som output. Alla fyra dessa är beroende av hårdvara, även om vi fokuserar på de tre sista eftersom mänsklig input allmänt anses vara ett trivialt problem. Om kontraktet kördes på en Android-telefon från 2007 skulle det vara värdelöst. Android-telefonen har inget sätt att veta hur mycket pengar som sattes i en kortplats och kan verkligen inte släppa Coca Cola-flaskor eller returnera byte. På en varuautomat, å andra sidan, bär kontraktet en viss “kraft”, uppbackad av varuautomatens interna Coca Cola-innehav och dess fysiska säkerhet som hindrar människor från att bara ta Coca Cola utan att följa reglerna i kontraktet.
En annan, mer futuristisk tillämpning av smart egendom är hyrbilar: föreställ dig en värld där alla har sin egen privata nyckel på en smartphone, och det finns en sådan bil att när du betalar 100 $ till en viss adress börjar bilen automatiskt svara på kommandon undertecknade av din privata nyckel under en dag. Samma princip kan också tillämpas på hus. Om det låter långsökt, kom ihåg att kontorsbyggnader till stor del redan är smarta egendomar: åtkomst styrs av åtkomstkort och frågan om vilka (om några) dörrar varje kort är giltiga för bestäms av en kod kod kopplad till en databas. Och om företaget har ett HR-system som automatiskt behandlar anställningsavtal och aktiverar åtkomstkort för nya anställda, är det anställningsavtalet i viss utsträckning ett smart avtal.
Smart Money and Factum Society
Emellertid är fysisk egendom mycket begränsad vad den kan göra. Fysisk egendom har en begränsad mängd säkerhet, så du kan praktiskt taget inte göra något intressant med mer än några tiotusentals dollar med en smart-fastighetsinstallation. Och i slutändan handlar de mest intressanta kontrakten om att överföra pengar. Men hur kan vi faktiskt få det att fungera? Just nu kan vi i princip inte. Vi kan i teorin ge kontrakten inloggningsuppgifterna till våra bankkonton och sedan få kontraktet att skicka pengar under vissa förhållanden, men problemet är att denna typ av kontrakt inte riktigt är “självförstärkande”. Den part som gör kontraktet kan alltid helt enkelt stänga av kontraktet precis innan betalningen förfaller, eller tömma sitt bankkonto eller till och med helt enkelt ändra lösenordet till kontot. I slutändan, oavsett hur kontraktet är integrerat i systemet, har någon möjlighet att stänga av det.
Hur kan vi lösa problemet? I slutändan är svaret ett som är radikalt i vårt bredare samhälle, men redan mycket gamla nyheter i Bitcoin: vi behöver en ny typ av pengar. Hittills har penningutvecklingen följt tre steg: råvarupengar, råvarustödda pengar och fiatpengar. Råvarupengar är enkla: det är pengar som är värdefulla eftersom de också samtidigt är en vara som har något ”inneboende” användningsvärde. Silver och guld är perfekta exempel, och i mer traditionella samhällen har vi också te, salt (etymologinot: det är här ordet ”lön” kommer från), snäckskal och liknande. Därefter kom råvarubaserade pengar – banker som utfärdade certifikat som är värdefulla eftersom de kan lösas in för guld. Slutligen har vi fiat-pengar. “Fiat” i “fiat money” är precis som i “fiat lux“, Utom i stället för att Gud säger” låt det vara ljus “är det den federala regeringen som säger” låt det finnas pengar “. Pengarna har värde till stor del för att regeringen som utfärdar dem accepterar de pengarna, och bara de pengarna, som betalning för skatter och avgifter, tillsammans med flera andra juridiska privilegier.
Med Bitcoin har vi dock en ny typ av pengar: faktapengar. Skillnaden mellan fiatpengar och faktapengar är denna: medan fiatpengar skapas och upprätthålls av en regering (eller, teoretiskt sett, någon annan form av byrå) som producerar dem, faktum är faktiska pengar. Faktapengar är helt enkelt en balansräkning, med några regler för hur balansräkningen kan uppdateras, och dessa pengar är giltiga bland den uppsättning användare som beslutar att acceptera dem. Bitcoin är det första exemplet, men det finns fler. Till exempel kan man ha en alternativ regel, som säger att endast bitcoins som kommer ut ur en viss “genesstransaktion”, räknas som en del av balansräkningen; detta kallas “färgade mynt”, och är också ett slags faktapengar (såvida inte dessa färgade mynt är fiat- eller råvarubakade).
Det huvudsakliga löftet om faktapengar är faktiskt just det faktum att de passar så bra in i smarta kontrakt. Huvudproblemet med smarta kontrakt är verkställighet: om ett kontrakt säger att skicka $ 200 till Bob om X händer, och X händer, hur kan vi se till att $ 200 faktiskt skickas till Bob. Lösningen med faktapengar är otroligt elegant: definitionen av pengarna, eller mer exakt definitionen av den nuvarande balansräkningen, är resultatet av genomförandet av alla kontrakt. Således, om X händer, kommer alla att komma överens om att Bob har extra $ 200, och om X inte händer kommer alla att komma överens om att Bob har vad Bob hade tidigare.
Detta är faktiskt en mycket mer revolutionerande utveckling än man kanske tror först; med faktapengar har vi skapat ett sätt för kontrakt, och kanske till och med lag i allmänhet, att arbeta och vara effektiva utan att förlita oss på någon form av mekanism alls för att genomdriva dem. Vill du ha $ 100 böter för skräp? Definiera sedan en valuta så att du har 100 enheter mindre om du skräpar och övertyga människor att acceptera den. Det specifika exemplet är väldigt långsökt och sannolikt opraktiskt utan några stora försiktighetsåtgärder som vi kommer att diskutera nedan, men det visar den allmänna principen, och det finns många mer måttliga exempel på denna typ av princip som definitivt kan sättas till arbete.
Hur smart är smarta kontrakt?
Smarta kontrakt är uppenbarligen mycket effektiva för alla typer av finansiella applikationer, eller mer allmänt alla typer av byten mellan två olika faktumtillgångar. Ett exempel är en försäljning av domännamn; en domän, som google.com, är en faktumtillgång, eftersom den stöds av en databas på en server som bara har någon vikt eftersom vi accepterar den, och pengar kan uppenbarligen också vara faktum. Just nu är att sälja en domän en komplicerad process som ofta kräver specialiserade tjänster; i framtiden kanske du kan paketera ett försäljningserbjudande till ett smart kontrakt och lägga det på blockchain, och om någon tar det kommer båda sidor av handeln att ske automatiskt – ingen möjlighet till bedrägeri involverad. Att gå tillbaka till valutavärlden är decentraliserat utbyte ett annat exempel, och vi kan också göra finansiella kontrakt som säkring och hävstångshandel.
Det finns dock platser där smarta kontrakt inte är så bra. Tänk till exempel på fallet med ett anställningsavtal: A går med på att göra en viss uppgift för B i utbyte mot betalning av X-enheter valuta C. Betalningsdelen är lätt att smart-kontrakt-ify. Det finns dock en del som inte är så lätt: att verifiera att arbetet faktiskt ägde rum. Om arbetet är i den fysiska världen är det ganska omöjligt, eftersom blockkedjor inte har något sätt att komma åt den fysiska världen. Även om det är en webbplats finns det fortfarande frågan om kvalitetsbedömning, och även om datorprogram kan använda maskininlärningsalgoritmer för att bedöma sådana egenskaper ganska effektivt i vissa fall är det otroligt svårt att göra det i ett offentligt kontrakt utan att öppna dörren för anställda “spelar systemet”. Ibland är ett samhälle som styrs av algoritmer helt enkelt inte tillräckligt bra.
Lyckligtvis finns det en måttlig lösning som kan fånga det bästa av två världar: domare. En domare i en vanlig domstol har i princip obegränsad befogenhet att göra vad de vill, och dömningsprocessen har inte ett särskilt bra gränssnitt; människor måste väcka talan, vänta betydande tid på rättegången och domaren fattar så småningom ett beslut som verkställs av det rättsliga systemet – i sig inte en bild av blixtsnabb effektivitet. Privat skiljedom lyckas ofta vara billigare och snabbare än domstolar, men även där är problemen fortfarande desamma. Domare i en faktumvärld är å andra sidan väldigt olika. Ett smart anställningsavtal kan se ut så här:
om säger (B,"A gjorde jobbet") eller säger (J,"A gjorde jobbet"): skicka (200, A) annars om säger (A.,"A gjorde inte jobbet") eller säger (J,"A gjorde inte jobbet"): skicka (200, B)
säger är en signaturverifieringsalgoritm; säger (P, T) kontrollerar i princip om någon hade skickat ett meddelande med texten T och en digital signatur som verifierar med hjälp av P: s offentliga nyckel. Så hur fungerar detta kontrakt? Först skulle arbetsgivaren skicka 200 valutaenheter in i kontraktet, där de skulle sitta i deponering. I de flesta fall är arbetsgivaren och arbetstagaren ärliga, så antingen A slutar och frigör pengarna tillbaka till B genom att underteckna ett meddelande som säger “A gjorde inte jobbet” eller A gör jobbet, B verifierar att A gjorde jobbet och Kontraktet frigör medlen till A. Men om A gör jobbet och B håller inte med, är det upp till domaren J att säga att antingen A gjorde jobbet eller A inte gjorde jobbet.
Observera att Js kraft är mycket noggrant avgränsad; allt som J har rätt att göra är att antingen A gjorde jobbet eller A inte gjorde jobbet. Ett mer sofistikerat kontrakt kan också ge J rätten att meddela domar inom intervallet mellan de två ytterligheterna. J har inte rätt att säga att A faktiskt förtjänar 600 valutaenheter, eller att förresten hela förhållandet är olagligt och J skulle få de 200 enheterna eller något annat utanför de klart definierade gränserna. Och J: s makt verkställs av faktum – kontraktet innehåller J: s offentliga nyckel och därmed går medlen automatiskt till A eller B baserat på gränserna. Kontraktet kan till och med kräva meddelanden från 2 av 3 domare, eller så kan det få separata domare att bedöma separata aspekter av arbetet och låta kontraktet automatiskt tilldela B: s arbete en kvalitetspoäng baserat på dessa betyg. Varje kontrakt kan helt enkelt koppla in vilken domare som helst på exakt det sätt de vill ha, oavsett om man ska bedöma sanningen eller falskheten i ett specifikt faktum, tillhandahålla ett mått på någon variabel eller vara en av parterna som underlättar arrangemanget.
Hur kommer det att bli bättre än det nuvarande systemet? Kort sagt, vad detta introducerar är “domare som en tjänst”. För att bli en “domare” måste du nu anställas hos ett privat skiljedomsföretag eller en regeringsdomstol eller starta din egen. I ett kryptografiskt aktiverat faktumsystem kräver det att vara domare helt enkelt ha en offentlig nyckel och en dator med internetåtkomst. Så kontraintuitivt som det låter, behöver inte alla domare känna till lag. Vissa domare kan specialisera sig på att till exempel avgöra om en produkt har skickats korrekt eller inte (helst skulle postsystemet göra det). Andra domare kan kontrollera att anställningsavtalen har slutförts. Andra skulle bedöma skadestånd för försäkringsavtal. Det skulle vara upp till uppdragsgivaren att koppla in domare av varje typ på lämpliga platser i kontraktet, och den del av kontraktet som kan definieras rent i datorkod kommer att vara.
Och det är allt som finns i det.
Nästa del av denna serie kommer att prata om begreppet förtroende, och vad kryptografer och Bitcoin-förespråkare egentligen menar när de pratar om att bygga ett “förtroendfritt” samhälle.