Pazite na nemogočo pametno pogodbo

Izvorno vozlišče: 1576899

Tri najpogostejše napačne predstave o pametnih pogodbah

Kot razvijalci priljubljene blockchain platforme nas včasih vprašajo, ali obstajajo pametne pogodbe, podobne Ethereumu MultiChain načrt. Odgovor, ki ga vedno dam, je: ne ali vsaj še ne.

Toda v hiper napolnjenem svetu verig blokov so pametne pogodbe v besu, zakaj pa kdaj ne? No, težava je v tem, da medtem ko že poznamo tri močne primere uporabe dovoljenih verig verig Bitcoin (provenienca, evidence med podjetji in lahke finance), še ne najdemo ustreznega za pametne pogodbe v slogu Ethereuma.

Ne gre za to, da ljudem manjka idej, kaj želijo, da pametne pogodbe naredijo. Namesto tega je toliko teh idej so preprosto nemogoče. Veste, ko pametni ljudje slišijo izraz "pametne pogodbe", njihova domišljija ponavadi divja. Pričarajo sanje o avtonomni inteligentni programski opremi, ki odide v svet in s seboj vzame svoje podatke.

Žal je resničnost pametnih pogodb veliko bolj vsakdanja od vsega tega:

Pametna pogodba je del kode, ki je shranjen v verigi blokov, ki jo sprožijo transakcije v verigi blokov, in ki bere in zapisuje podatke v zbirko podatkov te verige blokov.

To je to. Res. Pametna pogodba je le modno ime za kodo, ki deluje na verigi blokov in sodeluje z njenim stanjem. In kaj is Koda? To je Pascal, to je Python, to je PHP. To je Java, to je Fortran, to je C ++. Če govorimo o podatkovnih bazah, je shranjenih postopkov napisano v razširitvi SQL. Vsi ti jeziki so v osnovi enakovredni in na enak način rešujejo enake vrste problemov. Seveda ima vsak svoje prednosti in slabosti - noro bi bilo zgraditi spletno mesto v jeziku C ali stisniti HD video v programu Ruby. Toda načeloma bi lahko, če bi hotel. Plačali bi samo visoko ceno glede udobja, zmogljivosti in zelo verjetno svojih las.

Težava pametnih pogodb ni le v tem, da so pričakovanja ljudi pretirana. Ta pričakovanja vodijo k temu, da mnogi porabijo čas in denar za ideje, ki jih ni mogoče uresničiti. Zdi se, da imajo velika podjetja dovolj sredstev za dolgo pot - od trenutka, ko se vodstvo sreča z novo tehnologijo, do takrat, ko so prednosti in omejitve te tehnologije resnično razumljene. Morda nam lahko lastne izkušnje pomagajo skrajšati ta čas.

V zadnjih devetih mesecih smo predstavili veliko primerov uporabe pametnih pogodb in se vedno znova odzvali, da jih preprosto ni mogoče storiti. Kot rezultat smo ugotovili tri najpogostejše napačne predstave o pametnih pogodbah. Te ideje niso napačne, ker je tehnologija nezrela ali orodja še niso na voljo. Namesto tega napačno razumejo temeljne lastnosti kode, ki živi v bazi podatkov in deluje decentralizirano.

Kontaktiranje zunanjih služb

Pogosto je prvi predlagani primer uporabe pametna pogodba, ki spremeni svoje vedenje kot odziv na nek zunanji dogodek. Na primer kmetijska zavarovalna polica, ki se izplača pogojno glede na količino padavin v določenem mesecu. Zamišljeni postopek gre nekako takole: pametna pogodba počaka do vnaprej določenega časa, od zunanje službe pridobi vremensko poročilo in se na podlagi prejetih podatkov obnaša primerno.

Vse to zveni dovolj preprosto, a tudi nemogoče. Zakaj? Ker je veriga blokov sistem, ki temelji na konsenzu, kar pomeni, da deluje le, če vsako vozlišče doseže enako stanje po obdelavi vsake transakcije in bloka. Vse, kar se dogaja na verigi blokov, mora biti popolnoma deterministično, brez možnosti, da bi se prikradle razlike. V trenutku, ko se dve pošteni vozlišči ne strinjata glede stanja verige, postane celoten sistem ničvreden.

Zdaj se spomnimo, da pametne pogodbe neodvisno izvaja vsako vozlišče v verigi. Če torej pametna pogodba pridobi nekatere informacije iz zunanjega vira, to pridobi vsako vozlišče večkrat in ločeno. Ker pa je ta vir zunaj verige blokov, ni nobenega zagotovila, da bo vsako vozlišče dobilo enak odgovor. Morda bo vir spremenil svoj odziv v času med zahtevami različnih vozlišč ali pa bo začasno nedosegljiv. Kakor koli že, konsenz je prekinjen in celotna veriga blokov umre.

Kaj je torej rešitev? Pravzaprav je precej preprosto. Namesto pametne pogodbe, ki sproži pridobivanje zunanjih podatkov, ena ali več zaupanja vrednih strani (»oracles«) ustvari transakcijo, ki te podatke vgradi v verigo. Vsako vozlišče bo imelo identično kopijo teh podatkov, zato ga je mogoče varno uporabiti pri izračunu pametne pogodbe. Z drugimi besedami, preročišče potiska podatke na blockchain in ne na pametno pogodbo vlečenje v.

Pri pametnih pogodbah, ki povzročajo dogodke v zunanjem svetu, se pojavi podoben problem. Na primer, mnogim je všeč ideja pametne pogodbe, ki kliče API banke za prenos denarja. Če pa vsako vozlišče samostojno izvaja kodo v verigi, kdo je odgovoren za klicanje tega API-ja? Če je odgovor samo eno vozlišče, kaj se zgodi, če določeno vozlišče namerno ali ne deluje? In če je odgovor vsako vozlišče, ali lahko vsakemu vozlišču zaupamo geslo tega API-ja? In ali res želimo, da se API pokliče na stotine krat? Še huje, če mora pametna pogodba vedeti, ali je bil klic API uspešen, se vrnemo k problemu odvisnosti od zunanjih podatkov.

Kot prej je na voljo preprosta rešitev. Namesto pametne pogodbe, ki kliče zunanji API, uporabljamo zaupanja vredno storitev, ki spremlja stanje blokovne verige in v odgovor izvaja določena dejanja. Na primer, banka bi lahko proaktivno gledala verigo blokov in izvajala denarna nakazila, ki odražajo transakcije v verigi. To ne predstavlja tveganja za konsenz blockchaina, ker ima veriga povsem pasivno vlogo.

Če pogledamo ti dve rešitvi, lahko ugotovimo nekaj. Prvič, oba zahtevata zaupanja vreden subjekt za upravljanje interakcij med verigo blokov in zunanjim svetom. Čeprav je to tehnično mogoče, spodkopava cilj decentraliziranega sistema. Drugič, mehanizmi, uporabljeni v teh rešitvah, so preprosti primeri branje in pisanje baze podatkov. Oracle, ki zagotavlja zunanje informacije, te podatke preprosto zapisuje v verigo. In storitev, ki odraža stanje verige blokov v resničnem svetu, ne počne nič drugega kot branje iz te verige. Z drugimi besedami, kakršna koli interakcija med verigo blokov in zunanjim svetom je omejena na redne operacije zbirk podatkov. O tem dejstvu bomo govorili kasneje.

Izvrševanje plačil v verigi

Tu je še en predlog, ki ga pogosto slišimo: uporaba pametne pogodbe za avtomatizacijo plačila kuponov za tako imenovano "pametno obveznico". Zamisel je, da koda pametne pogodbe samodejno izvede plačila ob ustreznem času, pri čemer se izogne ​​ročnim postopkom in zagotovi, da izdajatelj ne more privzeto.

Seveda, da bi to delovalo, morajo sredstva, ki se uporabljajo za plačila, živeti tudi znotraj verige blokov, sicer pametna pogodba nikakor ne more zagotoviti njihovega plačila. Zdaj se spomnimo, da je veriga blokov le baza podatkov, v tem primeru finančna knjiga, ki vsebuje izdano obveznico in nekaj gotovine. Torej, ko govorimo o plačilih s kuponi, dejansko govorimo o operacijah z bazami podatkov, ki potekajo samodejno ob dogovorjenem času.

Čeprav je ta avtomatizacija tehnično izvedljiva, ima finančne težave. Če sredstva, uporabljena za plačilo kuponov, nadzoruje pametna pogodba o obveznici, potem so ta plačila resnično zagotovljena. A to pomeni tudi ta sredstva izdajatelj obveznic ne more uporabiti za kaj drugega. In če ta sredstva ne pod nadzorom pametne pogodbe, torej nikakor ni mogoče zagotoviti plačila.

Z drugimi besedami, pametna obveznica je za izdajatelja nesmiselna ali za vlagatelja nesmiselna. In če pomislite, je to povsem očiten rezultat. Z vidika vlagatelja je bistvo obveznice predvsem privlačna stopnja donosa, za katero obstaja tveganje neplačila. Za izdajatelja je namen obveznice zbiranje sredstev za produktivno, a nekoliko tvegano dejavnost, kot je gradnja nove tovarne. Izdajatelj obveznic nikakor ne more izkoristiti zbranih sredstev, hkrati pa zagotavlja, da bo vlagatelj poplačan. To ne bi smelo biti presenečenje povezava med tveganjem in donosom ni težava, ki bi jo blockchains lahko rešili.

Skrivanje zaupnih podatkov

Kot sem že napisano prej, največji izziv pri uvajanju verig blokov je radikalna preglednost, ki jo zagotavljajo. Če na primer deset bank skupaj vzpostavi verigo blokov in dve izvedeta dvostransko transakcijo, bo to osem takoj vidno. Čeprav obstajajo različne strategije za ublažitev te težave, nobena ne premaga preprostosti in učinkovitosti centralizirane baze podatkov, v kateri zaupanja vreden skrbnik ima popoln nadzor nad tem, kdo lahko kaj vidi.

Nekateri mislijo, da lahko pametne pogodbe rešijo to težavo. Začnejo z dejstvom, da vsaka pametna pogodba vsebuje svojo miniaturno bazo podatkov, nad katero ima popoln nadzor. Vse operacije branja in pisanja v tej bazi podatkov posredujejo kode pogodbe, zaradi česar ena pogodba ne more neposredno brati podatkov druge. (Ta tesna povezava med podatki in kodo se imenuje enkapsulacija in je temelj priljubljenega objektno usmerjeno programiranje paradigma.)

Torej, če ena pametna pogodba ne more dostopati do podatkov druge osebe, smo rešili problem zaupnosti blockchaina? Ali je smiselno govoriti o skrivanju informacij v pametni pogodbi? Žal je odgovor ne. Kajti tudi če ena pametna pogodba ne more prebrati podatkov druge osebe, so ti podatki še vedno shranjeni na vsakem vozlišču v verigi. Za vsakega udeleženca verige blokov je v pomnilniku ali na disku sistem, ki ga ta udeleženec v celoti nadzoruje. In nič jih ne ustavi pri branju informacij iz lastnega sistema, če in kdaj se to odločijo.

Skrivanje podatkov v pametni pogodbi je približno tako varno kot njihovo skrivanje v kodi HTML spletne strani. Seveda ga običajni spletni uporabniki ne bodo videli, ker ni prikazan v oknu njihovega brskalnika. A vse, kar je potrebno, je, da spletni brskalnik doda funkcijo »View Source« (kot vsi imajo) in skrite informacije postanejo splošno vidne. Podobno je za podatke, skrite v pametnih pogodbah, potrebno le, da nekdo spremeni svojo programsko opremo blockchain, da prikaže celotno stanje pogodbe, pri čemer se izgubi vsak videz tajnosti. Na pol spodoben programer bi to lahko storil v kakšni uri.

Za kaj so pametne pogodbe

Ob toliko stvareh, ki jih pametne pogodbe ne zmorejo, se lahko vprašamo, čemu dejansko služijo. Da pa bi lahko odgovorili na to vprašanje, se moramo vrniti k osnovam samih verig blokov. Če povzamemo, veriga blokov omogoča, da zbirko podatkov neposredno in varno delijo subjekti, ki si ne zaupajo, ne da bi za to potrebovali centralnega skrbnika. Blockchains omogočajo razdeljevanje podatkov, kar lahko privede do znatnih prihrankov pri zapletenosti in stroških.

Vsaka baza podatkov se spremeni s pomočjo "transakcij", ki vsebujejo nabor sprememb te baze podatkov, ki morajo v celoti ali uspešno uspeti. Na primer, v finančni knjigi je plačilo Alice Bobu predstavljeno s transakcijo, ki (a) preveri, ali ima Alice zadostna sredstva, (b) odšteje količino z računa Alice in (c) enako količino doda Bobovemu .

V običajni centralizirani zbirki podatkov te transakcije ustvari en zaupanja vreden organ. Nasprotno pa lahko v skupni podatkovni zbirki, ki jo vodi blockchain, transakcije ustvari kateri koli uporabnik te blockchain. Ker si ti uporabniki ne zaupajo popolnoma, mora baza podatkov vsebovati pravila, ki omejujejo izvedene transakcije. Na primer, v finančni knjigi enakovrednih računov mora vsaka transakcija ohraniti celotno količino sredstev, sicer bi si lahko udeleženci prosto dali toliko denarja, kot so želeli.

Lahko si predstavljamo različne načine izražanja teh pravil, vendar za zdaj obstajata dve prevladujoči paradigmi, ki ju navdihujeta Bitcoin oziroma Ethereum. Bitcoin metoda, ki bi ji lahko rekli "omejitve transakcij", vsako transakcijo ovrednoti glede na: (a) vnose v zbirko podatkov, ki jih je ta transakcija izbrisala, in (b) ustvarjene vnose. V finančni knjigi pravilo pravi, da se mora skupna količina sredstev v izbrisanih vpisih ujemati s skupno v ustvarjenih. (Menimo, da je sprememba obstoječega vnosa enakovredna izbrisu tega vnosa in ustvarjanju novega na njegovem mestu.)

Druga paradigma, ki prihaja iz Ethereuma, so pametne pogodbe. To navaja, da mora vse spremembe podatkov pogodbe izvesti njena koda. (V okviru tradicionalnih zbirk podatkov lahko to razumemo kot prisiljeni shranjeni postopek.) Če želite spremeniti podatke o pogodbi, uporabniki blockchain pošiljajo zahteva k svoji kodi, ki določa, ali in kako izpolniti te zahteve. Kot v ta primer, pametna pogodba za finančno knjigo opravlja enake tri naloge kot skrbnik centralizirane baze podatkov: preverjanje zadostnih sredstev, odštevanje z enega računa in dodajanje na drugega.

Obe paradigmi sta učinkoviti in vsaka ima svoje prednosti in slabosti, kot sem že predhodno poglobljeno razpravljali. Če povzamemo, omejitve transakcij v slogu Bitcoin zagotavljajo vrhunsko sočasnost in zmogljivost, pametne pogodbe v slogu Ethereum pa nudijo večjo prilagodljivost. Torej, da se vrnemo k vprašanju, čemu služijo pametne pogodbe:

Pametne pogodbe so namenjene primerom uporabe verige blokov, ki jih ni mogoče izvajati z omejitvami transakcij.

Glede na to merilo za uporabo pametnih pogodb še nisem videl močnega primera uporabe dovoljenih verig blokov, ki izpolnjuje pogoje. Vse prepričljive blockchain aplikacije, ki jih poznam, je mogoče implementirati s transakcijami v bitcoinskem slogu, ki lahko obravnavajo izdajo dovoljenj in splošno shranjevanje podatkov ter ustvarjanje, prenos, hrambo, izmenjavo in uničenje premoženja. Kljub temu se še vedno pojavljajo novi primeri uporabe in ne bi bil presenečen, če bi se nekateri do zahtevajo moč pametnih pogodb. Ali vsaj razširitev paradigme Bitcoin.

Ne glede na odgovor, ključnega pomena je, da so pametne pogodbe le ena od metod za omejevanje transakcij, izvedenih v zbirki podatkov. To je nedvomno koristno in je bistvenega pomena za zagotavljanje varnosti te baze podatkov za skupno rabo. Toda pametne pogodbe ne morejo storiti ničesar drugega in zagotovo ne morejo uiti mejam baze podatkov, v kateri prebivajo.

Prosimo, pošljite kakršne koli pripombe na LinkedInu.

Časovni žig:

Več od Večnamenska veriga