Totuus älykkäistä sopimuksista
Jimmy Songin essee
Aivan kuten sanat ”lohkoketju”, ”tekoäly” ja ”pilvi”, ”älykäs sopimus” on yksi sellaisista sanapareista, joka on saanut aikaan runsaasti pöhinää. [1][2]
Mikä voisi olla sen parempaa kuin se, että voisimme luottaa siihen, että niin tapahtuu kuin on sovittu nojaamatta vakiintuneeseen oikeusjärjestelmään Älykkäät sopimukset lupaavat:
- Sopimusten täytäntöönpano automaattisesti, luottamuksettomasti ja puolueettomasti
- Välikäsien poistaminen sopimusten muotoilusta, toimeenpanosta ja valvonnasta
- (Epäsuorasti) lakimiesten poistaminen kuviosta
Suhtaudun pöhinään myötämielisesti. Kuinka paljon tehokkaammin asiat voisivat olla, jos vain voisimme poistaa tarpeen luottaa siihen, että toinen osapuoli noudattaa sovittua?
Mikä ihme älykäs sopimus edes on? Ja eikö se kuulu Ethereumin alueelle? Eikö tämä ole tie tulevaisuuteen? Miksi vastustaisit edistystä?
Tässä artikkelissa aion tutkia, mitä älykkäät sopimukset ovat ja niihin liittyvää teknistä todellisuutta (spoileri: se ei ole niin yksinkertaista ja ne on erittäin vaikeaa varmistaa).
Mikä on älykäs sopimus?
Perinteinen sopimus on kahden tai useamman osapuolen välinen sopimus, joka sitoo heidät johonkin tulevaisuuden asiantilaan. Aliisa voi maksaa Pekalle rahaa vastineeksi Pekan talon käytöstä (aka vuokra). Kaarle saattaa sopia korjaavansa kaikki Denisen auton vauriot vastaisuudessa kuukausimaksua (eli autovakuutusta) vastaan.
Se, mikä erottaa ”älykkään” sopimuksen perinteisestä sopimuksesta on se, että tietokonekoodi sekä arvioi että toteuttaa sopimusehdot, jonka vuoksi älykäs sopimus on luottamukseton . Siis jos Aliisa suostuu maksamaan Pekalle 500 dollaria sohvasta kolmen kuukauden kuluttua tästä hetkessä (aka sohvafutuuri), jokin koodi selvittää olosuhteiden totuudenmukaisuuden (Onko Aliisa maksanut Pekalle? Onko jo kulunut kolme kuukautta?) ja toinen puolestaan suorittaa sopimuksen (toimittaa sohvan escrow- eli sulkutililtä) antamatta kummallekaan osapuolelle mahdollisuutta perääntyä.
Älykkään sopimuksen keskeinen piirre on, että sen toimeenpano tapahtuu luottamuksettomasti. Eli sinun ei tarvitse luottaa kolmanteen osapuoleen erilaisten ehtojen suorittamiseksi. Sen sijaan, että luottaisit toisen osapuolen sanaan tai vielä pahempaan, turvautuisit lakimiehiin ja oikeusjärjestelmään asioiden korjaamiseksi, jos jotain menee pieleen, älykäs sopimus toteuttaa sen, minkä on tarkoitus tapahtua oikeaan aikaan ja puolueettomasti.
Älykkäät sopimukset ovat melko tyhmiä
Sanan ”älykäs” käyttö merkitsee, että näillä sopimuksilla on jonkinlaista luontaista älykkyyttä. Näin ei ole. Sopimuksen älykäs osa on, että sopimuksen toisen osapuolen ei tarvitse tehdä yhteistyötä sopimuksen toteuttamiseksi. Sen sijaan, että joutuisit potkimaan vuokransa maksamattoman vuokralaisen pois, ”älykäs” sopimus lukitsisi vuokraansa maksamattoman vuokralaisen ulos asunnostaan. Sovittujen seurausten toteuttaminen tekee älykkäistä sopimuksista tehokkaita, ei sopimusten luontainen älykkyys.
Aidosti älykäs sopimus ottaisi huomioon kaikki lieventävät asianhaarat, tarkastelisi sopimuksen henkeä ja tekisi oikeudenmukaisia päätöksiä jopa kaikkein hämärimmissä olosuhteissa. Toisin sanoen aidosti älykäs sopimus toimisi kuin todella hyvä tuomari. Sen sijaan ”älykäs sopimus” tässä yhteydessä ei ole lainkaan älykäs. se on oikeastaan sääntöperusteinen ja seuraa sääntöjä T:hen saakka, eikä se voi ottaa huomioon toissijaisia näkökohtia tai lain ”henkeä”.
Toisin sanoen sopimuksen tekeminen luottamuksettomaksi tarkoittaa sitä, että meillä ei todellakaan voi olla tilaa epäselvyydelle, mikä nostaa esille seuraavan ongelman.
Älykkäät sopimukset ovat todella vaikeita
Ethereumin keskitetyn markkinoinnin vuoksi vallitsee virheellinen uskomus, jonka mukaan älykkäät sopimukset ovat olemassa vain Ethereumilla. Tämä ei pidä paikkaansa. Bitcoinissa on ollut sisäänrakennettuna aina vuoden 2009 alusta alkaen melko laaja Script-niminen älysopimuskieli. Itse asiassa älykkäät sopimukset ovat olleet olemassa jo kauan ennen Bitcoinia jo vuodesta 1995. Bitcoinin ja Ethereumin älysopimuskielen ero on siinä, että Ethereum on Turing-täydellinen. Toisin sanoen Solidity (ETH:n älysopimuskieli) mahdollistaa monimutkaisempien sopimusten kirjoittamisen, mutta tämä tekee niiden analysoinnin vaikeammaksi.
On aivan selvää, että älykkäät sopimukset olivat olemassa ennen Bitcoinia, pidän tästä sarjakuvastripistä
Monimutkaisuudella on joitakin merkittäviä seurauksia. Monimutkaiset sopimukset voivat mahdollistaa monimutkaisempia tilanteita, mutta monimutkaista sopimusta on myös erittäin vaikeaa turvata ja varmistaa. Jopa perinteisissä sopimuksissa, mitä monimutkaisempi sopimus on, sitä vaikeampaa on sen täytäntöönpano, koska mutkistuminen lisää epävarmuutta ja tulkinnanvaraa. Älykkäiden sopimusten turvallisuus tarkoittaa sitä, että käsitellään kaikki ne tavat, joilla sopimus voidaan panna täytäntöön, ja huolehditaan siitä, että sopimus tekee, mitä sen solmijat halusivat tehdä.
Turing-täydellisessä ympäristössä toteuttaminen on äärimmäisen hankalaa ja vaikea analysoida. Turing-täydellisen älykkään sopimuksen varmentaminen vastaa sitä, että todistetaan se, että tietokoneohjelmassa ei ole virheitä. Tiedämme tämän olevan hyvin vaikeaa, koska lähes jokaisessa tietokoneohjelmassa on virheitä.
Ajattele, että perinteisen sopimusten kirjoittaminen vaatii vuosien opintoja ja erittäin vaikeiden tenttien läpäisyn, jotta pystyt kirjoittamaan sopimuksia osaavasti. Älykkäät sopimukset edellyttävät ainakin tällaista pätevyyttä. Tästä huolimatta nykyään monet aloittelijat, jotka eivät ymmärrä, kuinka varmoja ja turvallisia niiden on oltava, kirjoittavat älykkäitä sopimuksia. Tämä käy selvästi ilmi useista sopimuksista, joiden on osoitettu olevan puutteellisia.
Bitcoinin ratkaisu tähän ongelmaan on yksinkertaisesti olla olemassa Turing-täydellinen. Tämä helpottaa sopimusten analysointia, koska ohjelman mahdolliset tilat on helpompi luetella ja tutkia.
Ethereumin ratkaisu on asettaa vastuu älykkäiden sopimusten tekijöiden harteille. Sopimuksen kirjoittajien on varmistettava, että sopimus tekee sen, mitä he haluavat sen tekevän.
Älykkäät sopimukset eivät todellakaan ole sopimuksia (ainakaan ETH:ssa)
Vaikka sopimusten tekemisen ja niiden varmentamisen vastuun sälyttäminen niiden kirjoittajille kuulostaa teoriassa hyvältä, käytännössä tällä on ollut joitakin vakavia keskittämiseen johtaneita seurauksia.
Ethereum keksi ajatuksen, että ”koodi on laki” (engl. Code is law). Toisin sanoen Ethereum-sopimus on perimmäinen auktoriteetti, eikä kukaan voi kumota tai ohittaa sopimusta. Ajatuksena oli tehdä älysopimusten kehittäjille selväksi, että he ovat yksin. Jos sössit älysopimuksesi, tällöin tavallaan saat mitä tilaat.
Vaikka vastuu sopimusten turvaamisesta kirjailijoille kuulostaa hyvältä teoriassa, käytännössä tällä on ollut joitakin vakavia keskittämisen seura uksia. Tämä muuttui, kun DAO-hakkerointi tapahtui.
DAO tarkoittaa ”hajautettua autonomista organisaatiota”, ja Etheruemiin luotiin rahasto tapana osoittaa, mitä alusta voisi tehdä. Käyttäjät kykenivät tallettamaan rahaa DAO:hon ja saada tuottoa DAO:n tekemien sijoitusten perusteella. Itse päätökset joukkoistettiin ja hajautettiin. DAO keräsi 150 miljoonaa Yhdysvaltain dollaria, kun ETH:n hinta oli noin 20 dollaria. Tämä kaikki kuulosti teoriassa hyvältä, mutta oli ongelma. Koodia ei varmistettu kovin hyvin, ja seurauksena oli, että joku keksi tavan tyhjentää DAO:n varat.
Monet kutsuivat DAO:sta rahaa imuroinutta henkilöä ”hakkeriksi”. Tämä henkilö oli siinä mielessä ”hakkeri, että hän löysi keinon siirtää sopimuksesta poletteja tavalla, jota sopimuksen suunnittelijat eivät olleet ennakoineet. Mutta tarkemmassa merkityksessä hän ei ollut hakkeri laisinkaan. Hän oli vain joku, joka oli hyödyntänyt älykkään sopimuksen koukeroita omaksi edukseen. Tämä ei eroa luovasta tilintarkastaja, joka onnistuu selvittämään verotuksen porsaanreiän asiakkaidensa rahojen säästämiseksi.
Seuraavaksi Ethereum päätti, että koodi ei enää ole laki, ja palautti kaikki DAO:hon menneet rahat. Toisin sanoen sopimusten kirjoittajat ja sijoittajat tekivät jotain tyhmää ja Ethereum-kehittäjät päättivät pelastaa heidät.
Tämän tapauksen seuraukset on dokumentoitu kattavasti. Ethereum Classic syntyi säilyttäen DAO:n kirjoitettuna lohkoketjuun ja pitäytymällä ”koodi on laki” -periaatteessa. Lisäksi kehittäjät alkoivat vältellä Ethereumin Turing-täydellisyyttä, koska sen turvaaminen osoittautui vaikeaksi. ERC20- ja ERC721-standardit ovat Ethereumin yleisimmin käytettyjä älysopimusmalleja, ja on tärkeää huomata, että molemmat sopimustyypit voidaan kirjoittaa ilman minkäänlaista Turing-täydellisyyttä.
Älykkään sopimukset toimivat vain digitaalisten haltijainstrumenttien kanssa
Jopa ilman Turing-täydellisyyttä, älykkäät sopimukset kuulostavat todella hyvältä. Loppujen lopuksi, kuka haluaa mennä oikeuteen saadakseen jotain, joka oikeutetusti kuuluu heille luottamuksetta? Eikö älykkään sopimuksen käyttäminen ole paljon vaivattomampaa kuin tavanomaisen sopimuksen?
Eikö esimerkiksi kiinteistöala hyötyisi älykkäistä sopimuksista? Aliisa voi todistaa, että omistaa talon. Pekka voi lähettää rahaa talosta ja saada talon vastineeksi. Ei omistuskysymyksiä, luottamukseton, nopea konetoteutus, ei tarvetta tuomareille, byrokraateille tai kaupanvahvistajille. Kuulostaa uskomattomalta, eikö niin?
Tässä on kaksi ongelmaa. Ensinnäkin se, että keskitetty osapuoli ei laita sopimuksia luottamuksettomasti täytäntöön. Sinun on silti luotettava keskitettyyn osapuoleen sopimuksen toteuttamiseksi. Luottamuksettomuus on tärkein ominaisuus, joten sopimuksen keskitetyssä toteuttamisessa ei ole järkeä. Jotta älykkäät sopimukset olisivat todella luottamuksettomia, tarvitset alustan, joka on todellisuudessa hajautettu.
Tämä johtaa meidät toiseen ongelmaan. Hajautetussa ympäristössä älykkäät sopimukset toimivat vain, jos digitaalisen ja fyysisen välillä on jokin selvä, lopullinen yhteys. Toisin sanoen aina kun talon digitaalinen versio vaihtaa omistajaa, myös fyysisen version omistusoikeuden on muututtava. Digitaalisen maailman on oltava ”tietoinen” fyysisestä todellisuudesta. Tätä kutsutaan ”oraakkeliongelmaksi”.
Kun Aliisa siirtää talon Pekalle, älykkään sopimuksen on tiedettävä, että hän todella siirsi talon Pekalle. Tämä voidaan tehdä monella tavalla, mutta niihin kaikkiin liittyy sama keskeinen ongelma. Pitää olla jonkinlaista luottamusta kolmanteen vastapuoleen, joka todentaa fyysisen maailman tapahtumat.
Esimerkiksi talo voitaisiin esittää Ethereumissa muuntamattomana, vaihdettavana Ethereum-polettina. Aliisa voisi siirtää talon Pekalle atominvaihdoksen (engl. atomic swap) avulla jotain ETH-määrää vastaan. Tässä on ongelma. Pekan pitää luottaa siihen, että poletti todella edustaa taloa. On oltava jokin oraakkeli, joka varmistaa talopoletin siirron hänelle tarkoittavan sitä, että talo on laillisesti hänen.
Lisäksi, vaikka valtion viranomaiset sanovat, että poletti edustaa taloa, mutta mitä sitten tapahtuu, jos poletti varastetaan? Kuuluuko talo nyt varkaalle? Entä jos poletti katoaa? Eikö talo ole enää myytävänä? Voiko talopoletin myöntää uudelleen? Jos voi, kuka sen myöntää?
Digitaalisen ja fyysisen ominaisuuden yhdistämiseen liittyy hankala ongelma siitä riippumatta, onko kyse hedelmistä, autoista tai taloista ainakin hajautetussa maailmassa. Fyysistä omaisuutta sattuu säätelemään se lainkäyttöalue, jossa satut olemaan, ja tämä tarkoittaa sitä, että ihmiset tavallaan luottavat luomasi älykkään sopimuksen lisäksi joihinkin muihinkin asioihin. Tämä tarkoittaa sitä, että älykkään sopimuksen hallussapito ei välttämättä tarkoita hallintaa todellisessa maailmassa ja siihen liittyy samanlainen luottamusongelma kuin perinteisiin sopimuksiin. Älykäs sopimus, joka perustuu kolmannen osapuolen luottamukseen, poistaa älysopimuksille tärkeänä pidetyn luottamuksettomuuden.
Jopa digitaaliset hyödykkeet, kuten e-kirjat, terveystiedot ja elokuvat, kärsivät samasta ongelmasta. Näihin digitaalisiin hyödykkeisiin liittyvistä ”oikeuksista” päättää lopulta jokin muu auktoriteetti ja oraakkeliin pitää voida luottaa.
Tämän valossa oraakkelit ovat vain tuomareiden tyhmennettyjä versioita. Sen sijaan, että saisit sopimuksen puhtaan koneellisen toteutuksen ja yksinkertaistetun täytäntöönpanon, se, mitä todellisuudessa saat, on monimutkaisuuden. Käytännössä joudut koodaamaan kaikki mahdolliset lopputulemat subjektiivisen ja inhimilliseen harkitaan liittyvällä riskillä . Toisin sanoen tekemällä sopimuksesta ”älykkään”, teet sen kirjoittamisesta paljon monimutkaisempaa samalla, kun sinun pitää edelleen luottaa jo johonkuhun toiseen.
Ainoat asiat, jotka voivat toimia ilman oraakkelia, ovat digitaaliset haltijainstrumentit. Pohjimmiltaan kaupan molempien osapuolten ei tarvitse olla vain digitaalisia, vaan vain haltijainstrumenttien tulee olla digitaalisia. Toisin sanoen poletin omistaminen ei voi olla riippuvainen älysopimusalustan ulkopuolisista asianhaaroista. Vain silloin, kun älykkäässä sopimuksessa on digitaalisia haltijainstrumentteja, älysopimus voi olla aidosti luottamukseton.
Johtopäätökset
Toivoisin, että älykkäät sopimukset voisivat olla hyödyllisempiä kuin ne todellisuudessa ovat. Valitettavasti suuri osa siitä, mitä me ihmiset ajattelemme sopimuksina, tuo mukanaan joukon olettamuksia ja vakiintunutta oikeuskäytäntöä, jota ei tarvitse erikseen mainita.
Lisäksi on käynyt ilmi, että Turing-täydellisyyden hyödyntäminen on helppo tapa sössiä älysopimus ja aiheuttaa kaikenlaista tahatonta toimintaa. Meidän pitäisi nimetä haavoittuvat älysopimusalustat Turing-haavoittuviksi, ei Turing-täydellisiksi. DAO:n tapaus osoitti myös sen, että sopimuksessa on ”henki”, johon luotamme epäsuorasti ja joka auttaa ratkaisemaan enemmän riitoja kuin annamme ymmärtää.
Älysopimuksilla on yksinkertaisesti liian helppoa sössiä, liian vaikea varmistaa, liian vaikeita tehdä luottamuksettomasti ja niillä on liian paljon ulkoisia riippuvuussuhteita, jotta ne soveltuisivat valtaosaan asioista. Ainoa todellinen tapaus, jossa älykkäät sopimukset todella lisäävät luottamuksettomuutta, on hajautetun alustan digitaalinen haltijainstrumentti, kuten Bitcoin.
Kiitos Michael Flaxmanille ja Rigaut-Luczak Lolalle.
[1] Suom. huom. — Suomalaisessa keskustelussa käytetään kahta eri termiä eli älykästä sopimusta ja älysopimusta. Tässä yhteydessä olen päätynyt käyttämään useammin käytettyä älykästä sopimusta, mutta tietyissä kohdin olen käyttänyt tyylisyistä myös sanaa älysopimus.
[2] Suom. huom. — Lauslahti, K., Mattila, J. & Seppälä, T. (2016). “Älykäs sopimus — Miten blockchain muuttaa sopimuskäytäntöjä?”. ETLA Raportit No 57; Karhunen, S. (2018). “Lohkoketju ja älykkäät sopimukset”. Opinnäytetyö, Karelia-ammattikorkeakoulu.
[3] Suom. huom. — ks. Hiironen, Al. (2016). “Älysopimukset ja Ethereum-sovellualusta”. Diplomityö, Tampereen teknillinen yliopisto.
—
Jimmy Songin (Twitter) 11.6.2018 julkaiseman kirjoituksen “The Truth about Smart Contracts” on suomentanut Thomas Brand (Twitter).
—
Kirjoittajasta
Jimmy Song on Bitcoin Coren kehittäjä, kouluttaja ja yrittäjä. Aiemmin hän työskenteli Bitcoin-lompakoihin erikoistuneen Armoryn teknologiajohtajana. Hänellä on yli kaksikymmentä vuotta kokemusta ohjelmoinnista. Hän on bitcointechtalk.comin toimittaja ja kirjoittaa artikkeleita medium.comiin. Songin kirja “Programming Bitcoin: Learn How to Program Bitcoin from Scratch” ilmestyi O’Reilly’n kustantamana helmikuussa 2019. Seuraa Songia Twitterissä. Lue Songin haastattelut BREAKERMAGista ja Hackernoonista.