Varo mahdotonta älykästä sopimusta

Lähdesolmu: 1576899

Kolme yleisintä älykkäiden sopimusten väärinkäsityksiä

Suositun blockchain-alustan kehittäjinä meiltä toisinaan kysytään, ovatko Ethereumin kaltaiset älykkäät sopimukset moniketjuisille tiekartta. Annan aina vastauksen: ei, tai ainakaan ei vielä.

Mutta hyppy-täynnä blockchains-maailmassa älykkäät sopimukset ovat kaikki raivoissaan, joten miksi et koskaan? No, ongelma on, että vaikka tiedämme nyt kolme vahvaa käyttötapaa luvan saaneille Bitcoin-tyylisille lohkoketjuille (lähtöisyys, yritysten väliset tietueet ja kevyt rahoitus), emme vielä löydä vastaavaa Ethereum-tyylisille älykkäille sopimuksille.

Ei ole niin, että ihmisillä ei ole ideoita siitä, mitä he haluavat älykkäiden sopimusten tekevän. Pikemminkin se, että niin monia näistä ideoista ovat yksinkertaisesti mahdotonta. Kun älykkäät ihmiset kuulevat termin “älykkäät sopimukset”, heidän mielikuvituksensa ovat yleensä villi. He loihtivat unelmia itsenäisestä älykkäästä ohjelmistosta, siirtymisestä maailmaan ottaen sen tiedot matkalle.

Valitettavasti älykkäiden sopimusten todellisuus on paljon arkipäiväisempi kuin kaikki:

Älykäs sopimus on koodinpätkä, joka tallennetaan lohkoketjuun, käynnistyy lohkoketjutransaktiot ja joka lukee ja kirjoittaa tietoja kyseisen lohkoketjun tietokantaan.

Se siitä. Todella. Älykäs sopimus on vain hieno nimi koodille, joka toimii lohkoketjussa ja on vuorovaikutuksessa kyseisen salkun ketjun tilan kanssa. Ja mitä is koodi? Se on Pascal, se on Python, se on PHP. Se on Java, se on Fortran, se on C ++. Jos puhumme tietokannoista, se on tallennetut kirjoitettu SQL-tunnisteena. Kaikki nämä kielet ovat pohjimmiltaan vastaavia, ja ne ratkaisevat samantyyppisiä ongelmia samalla tavalla. Tietysti jokaisella on vahvuutensa ja heikkoutensa - sinun olisi hullu rakentaa verkkosivusto C-tilassa tai pakkaa HD-video Ruby-sivulla. Mutta periaatteessa ainakin voit, jos haluat. Maksat vain kalliin hintaan mukavuuden, suorituskyvyn ja todennäköisesti hiuksesi suhteen.

Älykkäiden sopimusten ongelma ei ole vain se, että ihmisten odotukset ovat ylittyneet. Se, että nämä odotukset johtavat siihen, että monet viettävät aikaa ja rahaa ideoihin, joita ei voida mahdollisesti toteuttaa. Vaikuttaa siltä, ​​että suurilla yrityksillä on tarpeeksi resursseja kulkeaksemme pitkää tietä - hetkestä lukien, kun ylin johto kohtaa uuden tekniikan, siihen saakka, kun tekniikan edut ja rajoitukset todella ymmärretään. Ehkä oma kokemuksemme voi auttaa lyhentämään tätä aikaa.

Viimeisen yhdeksän kuukauden aikana olemme joutuneet lukuisiin älykkäiden sopimusten käyttötapauksiin ja olemme löytäneet itsemme vastaamaan toistuvasti, että niitä ei yksinkertaisesti voida tehdä. Seurauksena on, että olemme tunnistaneet kolme älykästä sopimusta väärinkäsitystä, joita yleisimmin pidetään. Nämä ajatukset eivät ole väärässä, koska tekniikka on epäkypsää tai työkaluja ei ole vielä saatavilla. Pikemminkin he ymmärtävät väärin Koodin perusominaisuudet, joka elää tietokannassa ja toimii hajautetusti.

Yhteyden ottaminen ulkoisiin palveluihin

Usein ensimmäinen ehdotettu käyttötapa on älykäs sopimus, joka muuttaa sen käyttäytymistä vastauksena johonkin ulkoiseen tapahtumaan. Esimerkiksi maatalouden vakuutussopimus, joka maksaa ehdollisesti tietyn kuukauden sademäärän perusteella. Kuvitteellinen prosessi etenee jotain tällaista: älykäs sopimus odottaa ennalta määrättyyn aikaan, hakee säätiedotuksen ulkoiselta palvelulta ja käyttäytyy asianmukaisesti saatujen tietojen perusteella.

Tämä kaikki kuulostaa riittävän yksinkertaiselta, mutta se on myös mahdotonta. Miksi? Koska lohkoketju on konsensuspohjainen järjestelmä, mikä tarkoittaa, että se toimii vain, jos jokainen solmu saavuttaa samanlaisen tilan jokaisen tapahtuman ja lohkon käsittelyn jälkeen. Kaikkien lohkoketjussa tapahtuvien on oltava täysin deterministisiä, eikä eroja voida hiipiä sisään. Kun kaksi rehellistä solmua ovat eri mieltä ketjun tilasta, koko järjestelmästä tulee arvoton.

Muista nyt, että ketjun kaikki solmut toteuttavat älykkäitä sopimuksia itsenäisesti. Siksi, jos älykäs sopimus hakee joitain tietoja ulkoisesta lähteestä, jokainen solmu suorittaa tämän haun toistuvasti ja erikseen. Mutta koska tämä lähde on lohkon ketjun ulkopuolella, Ei ole mitään takeita siitä, että jokainen solmu saa saman vastauksen. Ehkä lähde muuttaa vastaustaan ​​eri solmujen pyyntöjen välisessä ajassa, tai ehkä siitä tulee väliaikaisesti pois käytöstä. Joka tapauksessa konsensus rikkoutuu ja koko lohkoketju kuolee.

Joten mikä on kiertotapa? Itse asiassa se on melko yksinkertaista. Ulkoisten tietojen hakua aloittavan älykkään sopimuksen sijasta yksi tai useampi luotettu osapuoli (”oraaklit”) luo tapahtuman, joka upottaa kyseiset tiedot ketjuun. Jokaisella solmulla on identtinen kopio näistä tiedoista, joten sitä voidaan turvallisesti käyttää älykkäässä sopimuslaskennassa. Toisin sanoen oraakkeli työntää tiedot lohkoketjuun älykkään sopimuksen sijaan vetämällä se sisään.

Samankaltainen ongelma ilmenee älykkäistä sopimuksista, jotka aiheuttavat tapahtumia ulkomaailmassa. Esimerkiksi monet pitävät älykkäästä sopimuksesta, joka kutsuu pankin sovellusliittymää rahan siirtämiseksi. Mutta jos jokainen solmu suorittaa koodin riippumattomasti ketjussa, kuka vastaa tämän sovellusliittymän kutsusta? Jos vastaus on vain yksi solmu, mitä tapahtuu, jos kyseinen solmu toimii virheellisesti, tarkoituksella vai ei? Ja jos vastaus on jokainen solmu, voimmeko luottaa jokaiseen solmuun kyseisen sovellusliittymän salasanalla? Ja haluammeko todella sovellusliittymän, jota kutsutaan satoja kertoja? Vielä pahempaa, jos älykkäässä sopimuksessa on tiedettävä, onko API-puhelu onnistunut, palaamme takaisin ongelmaan, joka riippuu ulkoisista tiedoista.

Kuten aiemmin, on saatavana yksinkertainen kiertotapa. Ulkoiseen sovellusliittymään kutsuvan älykkään sopimuksen sijasta käytämme luotettavaa palvelua, joka tarkkailee lohkon ketjun tilaa ja suorittaa vastauksena tietyt toimenpiteet. Pankki voisi esimerkiksi proaktiivisesti seurata ryhmäketjua ja suorittaa rahansiirtoja, jotka heijastavat ketjun tapahtumia. Tämä ei aiheuta riskiä ketjun yksimielisyydelle, koska ketjulla on täysin passiivinen rooli.

Kun tarkastelemme näitä kahta kiertotapaa, voimme tehdä joitain havaintoja. Ensinnäkin, molemmat vaativat luotettavan kokonaisuuden hallitsemaan vuorovaikutusta lohkon ketjun ja ulkomaailman välillä. Vaikka tämä on teknisesti mahdollista, se heikentää hajautetun järjestelmän tavoitetta. Toiseksi näissä kiertotapoissa käytetyt mekanismit ovat suoraviivaisia ​​esimerkkejä tietokannan lukeminen ja kirjoittaminen. Ulkoista tietoa tarjoava oraakki kirjoittaa sen yksinkertaisesti ketjuun. Ja palvelu, joka heijastaa lohkon ketjun tilaa todellisessa maailmassa, ei tee muuta kuin lukee siitä ketjusta. Toisin sanoen, lohkoketjun ja ulkomaailman välinen vuorovaikutus rajoittuu säännöllisiin tietokantatoimintoihin. Puhumme lisää tästä tosiasiasta myöhemmin.

Ketjujen maksaminen

Tässä on toinen ehdotus, josta meillä on tapana kuulla paljon: älykkään sopimuksen käyttäminen automatisoimaan kuponkien maksamisen ns. Ideana on, että älykäs sopimuskoodi aloittaa maksut automaattisesti sopivina ajankohtina, välttäen manuaalisia prosesseja ja takaamalla, että liikkeeseenlaskija ei voi laiminlyödä maksua.

Tietysti, jotta tämä toimisi, maksujen suorittamiseen käytettyjen varojen on oltava myös elinkeinoketjun sisällä, muuten älykäs sopimus ei pystyisi takaamaan niiden maksua. Muista nyt, että blockchain on vain tietokanta, tässä tapauksessa pääkirja, joka sisältää liikkeeseen lasketun joukkovelkakirjalainan ja rahaa. Joten kun puhumme kuponkimaksuista, puhumme tosiasiallisesti tietokantaoperaatioista, jotka tapahtuvat automaattisesti sovittuun aikaan.

Vaikka tämä automatisointi on teknisesti mahdollista, se kärsii taloudellisista vaikeuksista. Jos kuponkimaksuihin käytettyjä varoja hallitaan joukkovelkakirjalainan älykkäällä sopimuksella, nämä maksut voidaan todella taata. Mutta tämä tarkoittaa myös näitä varoja joukkovelkakirjalainan liikkeeseenlaskija ei voi käyttää muuhun tarkoitukseen. Ja jos nämä varat eivät ole sitten älykkään sopimuksen valvonnassa maksua ei voida taata.

Toisin sanoen älylaina on joko liiketaloudellinen liikkeeseenlaskijalle tai turha sijoittajalle. Ja jos mietit sitä, tämä on täysin ilmeinen tulos. Sijoittajan kannalta joukkovelkakirjalainan koko kohta on sen houkutteleva tuottoaste jonkin laiminlyöntiriskin kustannuksella. Ja liikkeeseenlaskijan kannalta joukkovelkakirjalainan tarkoituksena on kerätä varoja tuottavaan, mutta jonkin verran vaaralliseen toimintaan, kuten uuden tehtaan rakentamiseen. Joukkovelkakirjalainan liikkeeseenlaskija ei voi millään tavoin hyödyntää kerättyjä varoja ja varmistaa samalla, että sijoittajalle maksetaan takaisin. Sen ei pitäisi tulla yllätyksenä yhteys riskin ja tuoton välillä ei ole ongelma, jonka blockchains voi ratkaista.

Luottamuksellisten tietojen piilottaminen

Kuten olen kirjoitettu aiemmin, suurin haaste ryhmäketjujen käyttöönotossa on niiden tarjoama radikaali läpinäkyvyys. Esimerkiksi, jos kymmenen pankkia perustaa ryhmäketjun yhdessä ja kaksi suorittaa kahdenvälisen kaupan, se näkyy heti kahdelle muulle. Vaikka tämän ongelman lievittämiseksi on olemassa useita strategioita, mikään ei ymmärrä keskitetyn tietokannan yksinkertaisuutta ja tehokkuutta, jossa luotetulla järjestelmänvalvojalla on täysi hallinto siitä, kuka näkee mitä.

Jotkut ihmiset ajattelevat, että älykkäät sopimukset voivat ratkaista tämän ongelman. Ne alkavat siitä, että jokaisella älykkäällä sopimuksella on oma miniatyyri tietokanta, jota sillä on täysi hallinta. Kaikkia tämän tietokannan luku- ja kirjoitustoimenpiteitä välitetään sopimuksen koodilla, mikä tekee mahdottomaksi yhden sopimuksen lukea toisen tietoja suoraan. (Tätä tiukkaa tiedon ja koodin kytkemistä kutsutaan kapseloinniksi, ja se on suositun perusta olio-ohjelmointi paradigma.)

Joten jos yksi älykäs sopimus ei pääse toisen käyttäjän tietoihin, olemmeko ratkaisseet blockchain-luottamuksellisuuden ongelman? Onko järkevää puhua tietojen piilottamisesta älykkääseen sopimukseen? Valitettavasti vastaus on kieltävä. Koska vaikka yksi älykäs sopimus ei pysty lukemaan toisen tietoja, se tallennetaan silti jokaiselle ketjun solmulle. Jokaisella blockchain-osallistujalla se on a: n muistissa tai levyllä järjestelmä, jota kyseinen osallistuja hallitsee täysin. Ja mikään ei estä heitä lukemasta tietoja omasta järjestelmästään, jos ja milloin he haluavat tehdä niin.

Tietojen piilottaminen älykkääseen sopimukseen on suunnilleen yhtä turvallinen kuin niiden piilottaminen verkkosivun HTML-koodiin. Varmasti tavalliset verkkokäyttäjät eivät näe sitä, koska sitä ei näytetä heidän selainikkunassaan. Mutta tarvitaan vain selaimeen 'Näytä lähde' -toiminnon lisääminen (sellaisena kuin heillä kaikilla on), ja piilotetut tiedot tulevat yleisesti näkyviksi. Samoin älykkäisiin sopimuksiin piilotettujen tietojen suhteen joku vie vain muutoksen blockchain-ohjelmistoonsa näyttääkseen sopimuksen täyden tilan, ja kaikki salassapitovelvollisuus katoaa. Puoli-kunnollinen ohjelmoija voisi tehdä sen noin tunnissa.

Mihin älykkäät sopimukset ovat?

Niin monien asioiden takia, että älykkäät sopimukset eivät ole mahdollisia, voidaan kysyä, mistä he oikeasti ovat. Mutta voidaksemme vastata tähän kysymykseen, meidän on palattava takaisin itse blockchains-perusteisiin. Yhteenvetona sanottuna, lohkoketju mahdollistaa tietokannan jakamisen suoraan ja turvallisesti entiteille, jotka eivät luota toisiinsa, ilman keskushallintoa. Lohkoketjut mahdollistavat tiedon hajottamisen, ja tämä voi johtaa merkittäviin säästöihin monimutkaisuudessa ja kustannuksissa.

Kaikkia tietokantoja muokataan ”tapahtumilla”, jotka sisältävät joukon muutoksia tietokantaan, joiden on onnistuttava tai epäonnistuttava kokonaisuutena. Esimerkiksi pääkirjassa maksu Alice: lta Bob: lle edustaa tapahtumaa, joka (a) tarkistaa, onko Alicella riittävästi varoja, (b) vähentää määrän Alice-tililtä ja (c) lisää saman määrän Bobin .

Tavallisessa keskitetyssä tietokannassa nämä tapahtumat luovat yksi luotettava viranomainen. Sitä vastoin, blockchain-ohjatussa jaetussa tietokannassa, tapahtumia voi luoda mikä tahansa kyseisen blockchain-käyttäjän käyttäjistä. Ja koska nämä käyttäjät eivät luota täysin toisiinsa, tietokantaan on sisällytettävä säännöt, jotka rajoittavat suoritettuja tapahtumia. Esimerkiksi vertaisverkkorahoituskirjassa jokaisessa tapahtumassa on säilytettävä varojen kokonaismäärä, muuten osallistujat voivat antaa itselleen vapaasti niin paljon rahaa kuin halusivat.

Voidaan kuvitella erilaisia ​​tapoja ilmaista nämä säännöt, mutta nyt on olemassa kaksi hallitsevaa paradigmaa, jotka ovat saaneet inspiraatiota Bitcoinista ja Ethereumista. Bitcoin-menetelmä, jota voimme kutsua ”tapahtumarajoituksiksi”, arvioi kutakin tapahtumaa seuraavin osin: (a) kyseisen tapahtuman poistamat tietokantatiedot ja (b) luodut merkinnät. Rahoituskirjassa säännön mukaan poistettujen merkintöjen kokonaismäärän on vastattava luotujen varojen kokonaismäärää. (Katsomme olemassa olevan merkinnän muokkaamisen vastaavan merkinnän poistamista ja uuden luomista sen tilalle.)

Toinen paradigma, joka tulee Ethereumista, on älykkäät sopimukset. Tämän mukaan kaikki muutokset sopimuksen tietoihin on suoritettava sen koodilla. (Perinteisten tietokantojen yhteydessä voimme ajatella tätä tietokannana) tahdonvastaiselta tallennettu menettely.) Jos haluat muokata sopimuksen tietoja, blockchain-käyttäjät lähettävät pyynnöt koodiinsa, joka määrittelee, täyttääkö nämä pyynnöt ja miten. Kuten tämä esimerkki, kirjanpidon älykkäässä sopimuksessa suoritetaan samat kolme tehtävää kuin keskitetyn tietokannan ylläpitäjällä: tarkistetaan riittävästi varoja, vähennetään yhdestä tilistä ja lisätään toiseen.

Molemmat näistä paradigmoista ovat tehokkaita, ja jokaisella on omat etunsa ja haittansa, kuten minäkin olen keskusteltu perusteellisesti aiemmin. Yhteenvetona voidaan todeta, että Bitcoin-tyyliset transaktiorajoitukset tarjoavat erinomaisen samanaikaisuuden ja suorituskyvyn, kun taas Ethereum-tyyliset älykkäät sopimukset tarjoavat suuremman joustavuuden. Joten palataan kysymykseen, mitä älykkäät sopimukset ovat:

Älykkäät sopimukset ovat blockchain -käyttötapauksia, joita ei voida toteuttaa tapahtumarajoitteilla.

Kun otetaan huomioon tämä älykkäiden sopimusten käyttökriteeri, en ole vielä nähnyt vahvaa käyttötapaa luvallisille lohkoketjuille, joka täyttää vaatimukset. Kaikki tuntemasi pakottavat blockchain-sovellukset voidaan toteuttaa Bitcoin-tyylisillä tapahtumilla, jotka voivat käsitellä lupamenettelyjä ja yleistä tietojen tallennusta, samoin kuin omaisuuden luomista, siirtoa, escrowia, vaihtoa ja tuhoamista. Siitä huolimatta uusia käyttötapoja esiintyy edelleen, en olisi yllättynyt, jos jotkut niistä ilmenevät do vaativat älykkäiden sopimusten voimaa. Tai ainakin laajennus Bitcoin-paradigmaan.

Riippumatta siitä, mikä vastaus osoittautuu, on muistettava, että älykkäät sopimukset ovat yksinkertaisesti yksi tapa rajoittaa tietokannassa suoritettuja tapahtumia. Tämä on epäilemättä hyödyllinen asia, ja on välttämätöntä, jotta tietokannasta voidaan tehdä turvallista jakamista varten. Älykkäät sopimukset eivät kuitenkaan voi tehdä mitään muuta, ja ne eivät varmasti pääse myöskään tietokannan rajoista, jossa he asuvat.

Ole hyvä ja lähetä kommentit LinkedInissä.

Aikaleima:

Lisää aiheesta moniketjuisille