Panimula sa Mga Matalinong Kontrata

Sa artikulong ito, titingnan natin kung ano ang mga matalinong kontrata, kung ano ang mga ito, makikilala natin ang iba't ibang mga platform ng matalinong kontrata, ang kanilang mga tampok, at tatalakayin din kung paano gumagana ang mga ito at kung anong mga pakinabang ang maaari nilang dalhin. Ang materyal na ito ay magiging lubhang kapaki-pakinabang para sa mga mambabasa na hindi lubos na pamilyar sa paksa ng mga matalinong kontrata, ngunit nais na mapalapit sa pag-unawa dito.

Regular na kontrata vs. matalinong kontrata

Bago natin suriin ang mga detalye, kumuha tayo ng isang halimbawa ng mga pagkakaiba sa pagitan ng isang regular na kontrata, na tinukoy sa papel, at isang matalinong kontrata, na kinakatawan sa digital.

Panimula sa Mga Matalinong Kontrata

Paano ito gumana bago ang pagdating ng mga matalinong kontrata? Isipin ang isang grupo ng mga tao na gustong magtatag ng ilang mga tuntunin at kundisyon para sa pamamahagi ng mga halaga, pati na rin ang isang tiyak na mekanismo upang magarantiya ang pagpapatupad ng pamamahagi na ito ayon sa ibinigay na mga tuntunin at kundisyon. Pagkatapos ay magsasama-sama sila, gumuhit ng isang papel kung saan isinulat nila ang mga detalye ng kanilang pagkakakilanlan, ang mga termino, ang mga halagang kasangkot, lagyan ng petsa ang mga ito at pipirmahan ang mga ito. Ang kontratang ito ay pinatunayan din ng isang pinagkakatiwalaang partido, tulad ng isang notaryo. Dagdag pa, ang mga taong ito ay pumunta sa iba't ibang direksyon kasama ang kanilang papel na kopya ng naturang kontrata at nagsimulang magsagawa ng ilang mga aksyon na maaaring hindi tumutugma sa kontrata mismo, iyon ay, gumawa sila ng isang bagay, ngunit sa papel ay pinatunayan na dapat silang gumawa ng isang bagay. ganap na naiiba. At paano makaalis sa sitwasyong ito? Sa katunayan, kailangang kunin ng isa sa mga miyembro ng grupo ang papel na ito, kumuha ng ilang ebidensya, dalhin ito sa korte at makamit ang pagsunod sa pagitan ng kontrata at mga aktwal na aksyon. Kadalasan, mahirap makamit ang patas na pagpapatupad ng kontratang ito, na humahantong sa hindi kasiya-siyang mga kahihinatnan.

Ano ang masasabi tungkol sa mga matalinong kontrata? Pinagsasama nila ang parehong posibilidad ng pagsulat ng mga tuntunin ng kontrata at ang mekanismo para sa kanilang mahigpit na pagpapatupad. Kung naitakda na ang mga kundisyon at nalagdaan na ang kaukulang transaksyon o kahilingan, kapag natanggap na ang kahilingan o transaksyong iyon, hindi na posibleng baguhin ang mga kundisyon o maapektuhan ang pagpapatupad nito.

May isang validator o isang buong network, pati na rin ang isang database na nag-iimbak ng lahat ng matalinong kontrata na isinumite para sa pagpapatupad sa mahigpit na pagkakasunud-sunod ng mga pangyayari. Mahalaga rin na ang database na ito ay dapat maglaman ng lahat ng mga kundisyon sa pag-trigger para sa pagpapatupad ng matalinong kontrata. Bilang karagdagan, dapat itong isaalang-alang ang mismong halaga na ang pamamahagi ay inilarawan sa kontrata. Kung nalalapat ito sa ilang digital na pera, dapat itong isaalang-alang ng database na ito.

Sa madaling salita, ang mga validator ng matalinong kontrata ay dapat magkaroon ng access sa lahat ng data kung saan pinapatakbo ang smart contract. Halimbawa, ang isang database ay dapat gamitin upang sabay na i-account ang mga digital na pera, balanse ng user, transaksyon ng user, at timestamp. Pagkatapos, sa isang matalinong kontrata, ang kundisyon ay maaaring ang balanse ng user sa isang partikular na currency, ang pagdating ng isang partikular na oras, o ang katunayan na ang isang partikular na transaksyon ay naisagawa, ngunit wala nang iba pa.

Kahulugan ng isang matalinong kontrata

Sa pangkalahatan, ang terminolohiya mismo ay nilikha ng mananaliksik na si Nick Szabo at unang ginamit noong 1994, at naitala noong 1997 sa isang artikulo na naglalarawan sa mismong ideya ng mga matalinong kontrata.

Ipinahihiwatig ng mga matalinong kontrata na ang ilang automation ng pamamahagi ng halaga ay isinasagawa, na maaari lamang umasa sa mga kundisyong iyon na natukoy nang maaga. Sa pinakasimpleng anyo nito, mukhang isang kontrata na may mahigpit na tinukoy na mga termino, na nilagdaan ng ilang partikular na partido.

Ang mga matalinong kontrata ay idinisenyo upang mabawasan ang tiwala sa mga ikatlong partido. Minsan ang sentro ng paggawa ng desisyon kung saan nakasalalay ang lahat ay ganap na hindi kasama. Bilang karagdagan, ang mga naturang kontrata ay mas madaling i-audit. Ito ay isang kinahinatnan ng ilang mga tampok ng disenyo ng naturang sistema, ngunit kadalasan ay nauunawaan natin sa pamamagitan ng isang matalinong kontrata ang isang desentralisadong kapaligiran at ang pagkakaroon ng mga pag-andar na nagpapahintulot sa sinuman na suriin ang database at magsagawa ng isang buong pag-audit ng pagpapatupad ng mga kontrata. Tinitiyak nito ang proteksyon laban sa mga pagbabago sa retroactive na data na mangangailangan ng mga pagbabago sa pagganap ng mismong kontrata. Ang pag-digitize ng karamihan sa mga proseso kapag gumagawa at naglulunsad ng isang matalinong kontrata ay kadalasang pinapasimple ang teknolohiya at gastos ng pagpapatupad ng mga ito.

Isang simpleng halimbawa - Escrow service

Tingnan natin ang isang napakasimpleng halimbawa. Makakatulong ito sa iyo na mas mapalapit sa pag-unawa sa functionality ng mga smart contract, pati na rin sa mas mahusay na pag-unawa sa kung aling mga kaso ang mga ito ay dapat gamitin.

Panimula sa Mga Matalinong Kontrata

Maaari rin itong ipatupad gamit ang Bitcoin, bagama't sa ngayon ang Bitcoin ay halos hindi pa rin matatawag na isang ganap na platform para sa mga matalinong kontrata. Kaya, mayroon kaming ilang mamimili at mayroon kaming isang online na tindahan. Gusto ng isang customer na bumili ng monitor mula sa tindahang ito. Sa pinakasimpleng kaso, nakumpleto at nagpapadala ng bayad ang mamimili, at tinatanggap ito ng online na tindahan, kinukumpirma ito, at pagkatapos ay ipinapadala ang mga kalakal. Gayunpaman, sa sitwasyong ito ay may pangangailangan para sa malaking tiwala - ang mamimili ay dapat magtiwala sa online na tindahan para sa buong halaga ng monitor. Dahil ang isang online na tindahan ay maaaring magkaroon ng mababang reputasyon sa mga mata ng bumibili, may panganib na sa ilang kadahilanan, pagkatapos tanggapin ang pagbabayad, tatanggihan ng tindahan ang serbisyo at hindi ipapadala ang mga kalakal sa bumibili. Samakatuwid, ang mamimili ay nagtatanong ng tanong (at, nang naaayon, ang online na tindahan ay nagtatanong ng tanong na ito) kung ano ang maaaring ilapat sa kasong ito upang mabawasan ang mga naturang panganib at gawing mas maaasahan ang mga naturang transaksyon.

Sa kaso ng Bitcoin, posibleng payagan ang bumibili at nagbebenta na malayang pumili ng isang tagapamagitan. Maraming tao ang nasasangkot sa pagresolba ng mga kontrobersyal na isyu. At ang aming mga kalahok ay maaaring pumili mula sa isang pangkalahatang listahan ng mga tagapamagitan ang kanilang pagtitiwalaan. Magkasama silang lumikha ng 2 sa 3 multisignature na address kung saan mayroong tatlong susi at dalawang pirma na may anumang dalawang susi ang kinakailangan upang gumastos ng mga barya mula sa address na iyon. Ang isang susi ay pagmamay-ari ng mamimili, ang pangalawa sa online na tindahan, at ang pangatlo sa tagapamagitan. At sa naturang multisignature address ay ipapadala ng mamimili ang halagang kailangan para bayaran ang monitor. Ngayon, kapag nakita ng nagbebenta na ang pera ay naharang nang ilang oras sa isang multisignature address na nakasalalay sa kanya, maaari niyang ligtas na ipadala ang monitor sa pamamagitan ng koreo.

Susunod, tinatanggap ng mamimili ang parsela, sinisiyasat ang mga kalakal at gumawa ng desisyon sa huling pagbili. Maaari siyang ganap na sumang-ayon sa ibinigay na serbisyo at lagdaan ang transaksyon gamit ang kanyang susi, kung saan naglilipat siya ng mga barya mula sa multisignature address patungo sa nagbebenta, o maaaring hindi siya nasisiyahan sa isang bagay. Sa pangalawang kaso, nakipag-ugnayan siya sa isang tagapamagitan upang magsama-sama ng alternatibong transaksyon na ibabahagi ang mga coin na iyon.

Sabihin nating dumating ang monitor na medyo scratched at ang kit ay walang kasamang cable para sa pagkonekta sa computer, bagaman ang website ng online store ay nagsabi na ang cable ay dapat na kasama sa kit. Pagkatapos ay kinokolekta ng mamimili ang katibayan na kinakailangan upang patunayan sa tagapamagitan na siya ay nalinlang sa sitwasyong ito: kumuha siya ng mga screenshot ng site, kumukuha ng larawan ng resibo ng mail, kumuha ng larawan ng mga gasgas sa monitor at ipinapakita na ang selyo ay nasira at nabunot ang cable. Ang online na tindahan, sa turn, ay nangongolekta ng ebidensya nito at inililipat ito sa tagapamagitan.

Interesado ang tagapamagitan sa sabay-sabay na kasiyahan sa galit ng mamimili at sa mga interes ng online na tindahan (magiging malinaw kung bakit sa ibang pagkakataon). Ito ay bumubuo ng isang transaksyon kung saan ang mga barya mula sa isang multisignature na address ay gagastusin sa ilang proporsyon sa pagitan ng mamimili, ang online na tindahan at ang tagapamagitan, dahil kumukuha siya ng isang bahagi para sa kanyang sarili bilang isang gantimpala para sa kanyang trabaho. Sabihin nating 90% ng kabuuang halaga ay napupunta sa nagbebenta, 5% sa tagapamagitan at 5% na kabayaran sa bumibili. Pinirmahan ng tagapamagitan ang transaksyong ito gamit ang kanyang susi, ngunit hindi pa ito mailalapat, dahil nangangailangan ito ng dalawang pirma, ngunit isa lamang ang katumbas ng halaga. Nagpapadala ito ng ganoong transaksyon sa parehong bumibili at nagbebenta. Kung hindi bababa sa isa sa kanila ang nasiyahan sa pagpipiliang ito para sa muling pamamahagi ng mga barya, ang transaksyon ay paunang nilagdaan at ipapamahagi sa network. Upang mapatunayan ito, sapat na ang isa sa mga partido sa transaksyon ay sumang-ayon sa opsyon ng tagapamagitan.

Mahalagang pumili muna ng isang tagapamagitan upang ang parehong kalahok ay magtiwala sa kanya. Sa kasong ito, siya ay kikilos nang nakapag-iisa sa mga interes ng isa o ng iba at layuning masuri ang sitwasyon. Kung ang tagapamagitan ay hindi nagbibigay ng isang opsyon para sa pamamahagi ng mga barya na magbibigay-kasiyahan sa hindi bababa sa isang kalahok, pagkatapos, nang magkasundo, ang parehong mamimili at ang online na tindahan ay maaaring magpadala ng mga barya sa isang bagong multisignature na address sa pamamagitan ng paglalagay ng kanilang dalawang pirma. Ang bagong multisignature na address ay isasama sa ibang tagapamagitan, na maaaring mas may kakayahan sa usapin at magbigay ng mas magandang opsyon.

Halimbawa na may dormitoryo at refrigerator

Tingnan natin ang isang mas kumplikadong halimbawa na nagpapakita ng mga kakayahan ng isang matalinong kontrata nang mas tahasang.

Panimula sa Mga Matalinong Kontrata

Sabihin nating may tatlong lalaki na lumipat kamakailan sa parehong dorm room. Interesado silang tatlo na bumili ng refrigerator para sa kanilang kwarto na magagamit nila nang magkasama. Isa sa kanila ang nagboluntaryong mangolekta ng kinakailangang halaga para makabili ng refrigerator at makipag-ayos sa nagbebenta. Gayunpaman, kamakailan lamang sila nagkakilala at walang sapat na tiwala sa pagitan nila. Malinaw, dalawa sa kanila ang nakipagsapalaran sa pamamagitan ng pagbibigay ng pera sa pangatlo. Bilang karagdagan, kailangan nilang maabot ang isang kasunduan sa pagpili ng isang nagbebenta.

Maaari nilang gamitin ang serbisyo ng escrow, iyon ay, pumili ng isang tagapamagitan na susubaybay sa pagpapatupad ng transaksyon at lutasin ang mga kontrobersyal na isyu kung mayroon man. Pagkatapos, nang sumang-ayon, gumuhit sila ng isang matalinong kontrata at inireseta ang ilang mga kundisyon dito.

Ang unang kundisyon ay na bago ang isang tiyak na oras, sabihin sa loob ng isang linggo, ang kaukulang smart contract account ay dapat makatanggap ng tatlong mga pagbabayad mula sa ilang mga address para sa isang tiyak na halaga. Kung hindi ito mangyayari, ang matalinong kontrata ay hihinto sa pagpapatupad at ibabalik ang mga barya sa lahat ng kalahok. Kung ang kundisyon ay natugunan, pagkatapos ay ang mga halaga ng nagbebenta at tagapamagitan identifier ay nakatakda, at ang kundisyon ay nasuri na ang lahat ng mga kalahok ay sumasang-ayon sa pagpili ng nagbebenta at tagapamagitan. Kapag natugunan ang lahat ng kundisyon, ililipat ang mga pondo sa mga tinukoy na address. Ang pamamaraang ito ay maaaring maprotektahan ang mga kalahok mula sa pandaraya mula sa anumang panig at sa pangkalahatan ay inaalis ang pangangailangan na magtiwala.

Nakikita namin sa halimbawang ito ang mismong prinsipyo na ang kakayahang ito na sunud-sunod na magtakda ng mga parameter para sa pagtupad sa bawat kundisyon ay nagbibigay-daan sa iyo na lumikha ng mga system ng anumang kumplikado at lalim ng mga nested na antas. Bilang karagdagan, maaari mo munang tukuyin ang unang kundisyon sa matalinong kontrata, at pagkatapos lamang nito matupad maaari kang magtakda ng mga parameter para sa susunod na kundisyon. Sa madaling salita, ang kundisyon ay pormal na nakasulat, at ang mga parameter para dito ay maaaring itakda na sa panahon ng operasyon nito.

Pag-uuri ng mga matalinong kontrata

Para sa pag-uuri, maaari kang magtakda ng iba't ibang pangkat ng pamantayan. Gayunpaman, sa sandali ng pag-unlad ng teknolohiya, apat sa kanila ay may kaugnayan.

Ang mga matalinong kontrata ay maaaring makilala sa pamamagitan ng kanilang kapaligiran sa pagpapatupad, na maaaring maging sentralisado o desentralisado. Sa kaso ng desentralisasyon, mayroon tayong higit na higit na kalayaan at pagpapahintulot sa kasalanan kapag nagsasagawa ng mga matalinong kontrata.

Maaari din silang makilala sa pamamagitan ng proseso ng pagtatakda at pagtupad sa mga kundisyon: maaari silang malayang ma-program, limitado o paunang natukoy, ibig sabihin, mahigpit na nai-type. Kapag mayroon lang 4 na partikular na smart contract sa smart contract platform, maaaring itakda ang mga parameter para sa mga ito sa anumang paraan. Alinsunod dito, ang pagtatakda ng mga ito ay mas simple: pumili kami ng isang kontrata mula sa listahan at ipasa ang mga parameter.

Ayon sa pamamaraan ng pagsisimula, mayroong mga awtomatikong matalinong kontrata, iyon ay, kapag nangyari ang ilang mga kundisyon, sila ay nagpapatupad ng sarili, at may mga kontrata kung saan tinukoy ang mga kundisyon, ngunit hindi awtomatikong sinusuri ng platform ang kanilang katuparan; para dito sila kailangang simulan nang hiwalay.

Bilang karagdagan, ang mga matalinong kontrata ay nag-iiba sa kanilang antas ng privacy. Maaari silang maging ganap na bukas, bahagyang o ganap na kumpidensyal. Nangangahulugan ang huli na hindi nakikita ng mga tagamasid ng third-party ang mga tuntunin ng mga matalinong kontrata. Gayunpaman, ang paksa ng privacy ay napakalawak at mas mahusay na isaalang-alang ito nang hiwalay mula sa kasalukuyang artikulo.

Sa ibaba ay susuriin natin ang unang tatlong pamantayan upang magkaroon ng higit na kalinawan sa pag-unawa sa kasalukuyang paksa.

Mga matalinong kontrata ayon sa runtime

Panimula sa Mga Matalinong Kontrata

Batay sa kapaligiran ng pagpapatupad, isang pagkakaiba ang ginawa sa pagitan ng sentralisado at desentralisadong mga platform ng smart contract. Sa kaso ng mga sentralisadong digital na kontrata, isang solong serbisyo ang ginagamit, kung saan mayroon lamang isang validator at maaaring mayroong backup at recovery service, na kung saan ay sentral din na pinamamahalaan. May isang database na nag-iimbak ng lahat ng kinakailangang impormasyon upang itakda ang mga tuntunin ng matalinong kontrata at ipamahagi ang halaga na isinasaalang-alang sa mismong database ng serbisyong ito. Ang nasabing sentralisadong serbisyo ay may kliyente na nagtatakda ng mga kundisyon sa ilang partikular na kahilingan at gumagamit ng mga naturang kontrata. Dahil sa sentralisadong katangian ng platform, ang mga mekanismo ng pagpapatunay ay maaaring hindi gaanong ligtas kaysa sa mga cryptocurrencies.

Bilang halimbawa, maaari kaming kumuha ng mga mobile communication provider (iba't ibang mobile operator). Sabihin nating ang isang tiyak na operator ay nagpapanatili ng isang sentralisadong talaan ng trapiko sa mga server nito, na maaaring mailipat sa iba't ibang mga format, halimbawa: sa anyo ng mga voice call, pagpapadala ng SMS, trapiko sa mobile Internet, at ayon sa iba't ibang mga pamantayan, at nagpapanatili din ng mga talaan ng mga pondo sa mga balanse ng gumagamit. Alinsunod dito, ang provider ng mga mobile na komunikasyon ay maaaring gumuhit ng mga kontrata para sa accounting para sa mga serbisyong ibinigay at ang kanilang pagbabayad sa iba't ibang mga kondisyon. Sa kasong ito, madaling magtakda ng mga kundisyon tulad ng "magpadala ng SMS na may ganito at ganoong code sa ganito at ganoong numero at makakatanggap ka ng ganito at ganoong mga kundisyon para sa pamamahagi ng trapiko."

Ang isa pang halimbawa ay maaaring ibigay: tradisyonal na mga bangko na may pinalawak na pag-andar ng Internet banking at napakasimpleng mga kontrata tulad ng mga regular na pagbabayad, awtomatikong pag-convert ng mga papasok na pagbabayad, awtomatikong pagbabawas ng interes sa isang tinukoy na account, atbp.

Kung pinag-uusapan natin ang tungkol sa mga matalinong kontrata na may desentralisadong kapaligiran sa pagpapatupad, kung gayon mayroon tayong grupo ng mga validator. Sa isip, kahit sino ay maaaring maging validator. Dahil sa protocol ng pag-synchronize ng database at pag-abot sa pinagkasunduan, mayroon kaming ilang karaniwang database na mag-iimbak na ngayon ng lahat ng mga transaksyon na may mahigpit na inilarawang mga kontrata, at hindi ilang mga kondisyonal na query, ang mga format na kadalasang nagbabago, at walang bukas na detalye. Dito, ang mga transaksyon ay maglalaman ng mga tagubilin upang maisagawa ang kontrata ayon sa isang mahigpit na detalye. Bukas ang detalyeng ito at, samakatuwid, ang mga gumagamit ng platform mismo ay maaaring mag-audit at mag-validate ng mga matalinong kontrata. Dito makikita natin na ang mga desentralisadong platform ay higit na nakahihigit sa mga sentralisadong platform sa mga tuntunin ng pagsasarili at pagpapahintulot sa kasalanan, ngunit ang kanilang disenyo at pagpapanatili ay mas kumplikado.

Mga matalinong kontrata sa pamamagitan ng paraan ng pagtatakda at pagtupad ng mga kundisyon

Ngayon tingnan natin nang mabuti kung paano maaaring mag-iba ang mga matalinong kontrata sa paraan ng pagtatakda at pagtupad ng mga ito sa mga kundisyon. Dito ay ibinaling namin ang aming pansin sa mga matalinong kontrata na random na na-program at kumpleto ang Turing. Ang isang Turing-complete smart contract ay nagbibigay-daan sa iyo na magtakda ng halos anumang algorithm bilang mga kundisyon para sa pagpapatupad ng kontrata: write cycles, ilang function para sa pagkalkula ng mga probabilities, at mga katulad nito - hanggang sa sarili mong mga electronic signature algorithm. Sa kasong ito, ang ibig nating sabihin ay tunay na arbitraryong pagsulat ng lohika.

Mayroon ding mga arbitrary na smart na kontrata, ngunit hindi ang mga kumpletong Turing. Kabilang dito ang Bitcoin at Litecoin na may sariling script. Nangangahulugan ito na maaari mo lamang gamitin ang ilang partikular na operasyon sa anumang pagkakasunud-sunod, ngunit hindi ka na makakasulat ng mga loop at sarili mong mga algorithm.

Bilang karagdagan, may mga smart contract platform na nagpapatupad ng mga paunang natukoy na smart contract. Kabilang dito ang Bitshares at Steemit. Ang Bitshares ay may hanay ng mga matalinong kontrata para sa pangangalakal, pamamahala ng account, pamamahala ng mismong platform at mga parameter nito. Ang Steemit ay isang katulad na platform, ngunit hindi na ito nakatutok sa pagbibigay ng mga token at pangangalakal, tulad ng Bitshares, ngunit sa pag-blog, ibig sabihin, ito ay nag-iimbak at nagpoproseso ng nilalaman sa isang desentralisadong paraan.

Kasama sa mga arbitraryong kontrata na kumpleto sa Turing ang Ethereum platform at RootStock, na nasa ilalim pa rin ng pag-unlad. Samakatuwid, sa ibaba ay tatalakayin natin ang kaunti pang detalye sa Ethereum smart contract platform.

Mga matalinong kontrata sa pamamagitan ng paraan ng pagsisimula

Batay sa paraan ng pagsisimula, ang mga smart contract ay maaari ding hatiin sa hindi bababa sa dalawang grupo: automated at manual (hindi automated). Ang mga automated ay nailalarawan sa pamamagitan ng katotohanan na, dahil sa lahat ng kilalang mga parameter at kundisyon, ang matalinong kontrata ay ganap na awtomatikong naisakatuparan, iyon ay, hindi ito nangangailangan ng pagpapadala ng anumang karagdagang mga transaksyon at paggastos ng karagdagang komisyon sa bawat kasunod na pagpapatupad. Nasa platform mismo ang lahat ng data para kalkulahin kung paano makukumpleto ang smart contract. Ang lohika doon ay hindi arbitrary, ngunit paunang natukoy at lahat ng ito ay mahuhulaan. Iyon ay, maaari mong matantya nang maaga ang pagiging kumplikado ng pagpapatupad ng isang matalinong kontrata, gumamit ng ilang uri ng patuloy na komisyon para dito, at ang lahat ng mga proseso para sa pagpapatupad nito ay mas mahusay.

Para sa mga matalinong kontrata na malayang nakaprograma, hindi awtomatiko ang pagpapatupad. Upang simulan ang gayong matalinong kontrata, sa halos bawat hakbang na kailangan mong lumikha ng bagong transaksyon, na tatawag sa susunod na yugto ng pagpapatupad o sa susunod na paraan ng matalinong kontrata, bayaran ang naaangkop na komisyon at hintaying makumpirma ang transaksyon. Maaaring matagumpay na makumpleto o hindi ang pagpapatupad, dahil ang code ng matalinong kontrata ay arbitrary at maaaring lumitaw ang ilang hindi inaasahang sandali, tulad ng isang walang hanggang loop, kakulangan ng ilang parameter at argumento, hindi nahawakang mga pagbubukod, atbp.

Mga Ethereum Account

Mga Uri ng Ethereum Account

Tingnan natin kung anong mga uri ng mga account ang maaaring nasa platform ng Ethereum. Mayroon lamang dalawang uri ng mga account dito at walang iba pang mga pagpipilian. Ang unang uri ay tinatawag na user account, ang pangalawa ay isang contract account. Alamin natin kung paano sila naiiba.

Ang user account ay kinokontrol lamang ng personal na susi ng electronic signature. Bumubuo ang may-ari ng account ng sarili niyang key pair para sa electronic signature gamit ang ECDSA (Elliptic Curve Digital Signature Algorithm) algorithm. Ang mga transaksyon lang na nilagdaan gamit ang key na ito ang makakapagpabago sa estado ng account na ito.

Isang hiwalay na lohika ang ibinigay para sa smart contract account. Makokontrol lang ito ng paunang natukoy na software code na ganap na tumutukoy sa gawi ng matalinong kontrata: kung paano nito pamamahalaan ang mga coin nito sa ilalim ng ilang partikular na sitwasyon, sa inisyatiba ng kung sinong user at sa ilalim ng kung anong mga karagdagang kundisyon ang ipapamahagi ang mga coin na ito. Kung ang ilang mga punto ay hindi ibinigay ng mga developer sa code ng programa, maaaring lumitaw ang mga problema. Halimbawa, ang isang matalinong kontrata ay maaaring makatanggap ng isang partikular na estado kung saan hindi nito tinatanggap ang pagsisimula ng karagdagang pagpapatupad mula sa alinman sa mga user. Sa kasong ito, ang mga barya ay talagang mapi-freeze, dahil ang matalinong kontrata ay hindi nagbibigay para sa pag-alis sa estadong ito.

Paano nilikha ang mga account sa Ethereum

Sa kaso ng isang user account, ang may-ari ay hiwalay na bumubuo ng isang key pair gamit ang ECDSA. Mahalagang tandaan na ang Ethereum ay gumagamit ng eksaktong parehong algorithm at eksaktong parehong elliptic curve para sa mga electronic signature bilang Bitcoin, ngunit ang address ay kinakalkula sa isang bahagyang naiibang paraan. Dito, hindi na ginagamit ang resulta ng double hashing, tulad ng sa Bitcoin, ngunit ang solong hashing ay ibinibigay kasama ang Keccak function sa haba na 256 bits. Ang hindi bababa sa makabuluhang mga bit ay pinutol mula sa resultang halaga, lalo na ang hindi bababa sa makabuluhang 160 bit ng output hash value. Bilang resulta, nakakakuha kami ng address sa Ethereum. Sa katunayan, ito ay tumatagal ng hanggang 20 bytes.

Pakitandaan na ang account identifier sa Ethereum ay naka-encode sa hex nang hindi nag-aaplay ng checksum, hindi katulad ng Bitcoin at marami pang ibang system, kung saan ang address ay naka-encode sa isang base 58 na sistema ng numero na may pagdaragdag ng checksum. Nangangahulugan ito na kailangan mong maging maingat kapag nagtatrabaho sa mga identifier ng account sa Ethereum: kahit isang pagkakamali sa identifier ay garantisadong hahantong sa pagkawala ng mga barya.

Mayroong mahalagang tampok at ito ay ang isang user account sa pangkalahatang antas ng database ay nilikha sa sandaling tinanggap niya ang unang papasok na pagbabayad.

Ang paglikha ng isang matalinong account sa kontrata ay nangangailangan ng ganap na naiibang diskarte. Sa una, isinulat ng isa sa mga gumagamit ang source code ng matalinong kontrata, pagkatapos nito ay ipinasa ang code sa isang espesyal na compiler para sa platform ng Ethereum, pagkuha ng bytecode para sa sarili nitong Ethereum virtual machine. Ang resultang bytecode ay inilalagay sa isang espesyal na larangan ng transaksyon. Ito ay na-certify sa ngalan ng account ng nagpasimula. Susunod, ipinapalaganap ang transaksyong ito sa buong network at inilalagay ang smart contract code. Ang komisyon para sa transaksyon at, nang naaayon, para sa pagpapatupad ng kontrata ay binawi mula sa balanse ng account ng nagpasimula.

Ang bawat matalinong kontrata ay kinakailangang naglalaman ng sarili nitong constructor (ng kontratang ito). Maaaring ito ay walang laman o maaaring may nilalaman. Pagkatapos maisagawa ang constructor, isang smart contract account identifier ang gagawin, kung saan maaari kang magpadala ng mga barya, tumawag sa ilang mga pamamaraan ng smart contract, atbp.

Istruktura ng Transaksyon ng Ethereum

Upang gawing mas malinaw, sisimulan nating tingnan ang istruktura ng isang transaksyon sa Ethereum at isang halimbawa ng smart contract code.

Panimula sa Mga Matalinong Kontrata

Ang isang transaksyon sa Ethereum ay binubuo ng ilang mga field. Ang una sa mga ito, nonce, ay isang tiyak na serial number ng transaksyon na nauugnay sa account mismo na namamahagi nito at ang may-akda nito. Ito ay kinakailangan upang makilala ang mga dobleng transaksyon, iyon ay, upang ibukod ang kaso kapag ang parehong transaksyon ay tinanggap nang dalawang beses. Sa pamamagitan ng paggamit ng identifier, ang bawat transaksyon ay may natatanging hash value.

Susunod ay isang patlang tulad ng presyo ng gas. Ito ay nagpapahiwatig ng presyo kung saan ang Ethereum base currency ay na-convert sa gas, na ginagamit upang magbayad para sa pagpapatupad ng smart contract at ang paglalaan ng virtual machine resource. Ano ang ibig sabihin nito?

Sa Bitcoin, ang mga bayarin ay direktang binabayaran ng base currencyβ€”Bitcoin mismo. Posible ito salamat sa isang simpleng mekanismo para sa pagkalkula ng mga ito: mahigpit kaming nagbabayad para sa dami ng data na nilalaman sa transaksyon. Sa Ethereum ang sitwasyon ay mas kumplikado, dahil napakahirap umasa sa dami ng data ng transaksyon. Dito, ang transaksyon ay maaari ring maglaman ng program code na isasagawa sa virtual machine, at ang bawat operasyon ng virtual machine ay maaaring magkaroon ng ibang kumplikado. Mayroon ding mga operasyon na naglalaan ng memorya para sa mga variable. Magkakaroon sila ng kanilang sariling kumplikado, kung saan ang pagbabayad para sa bawat operasyon ay nakasalalay.

Ang halaga ng bawat operasyon sa katumbas ng gas ay magiging pare-pareho. Ito ay partikular na ipinakilala upang matukoy ang patuloy na gastos ng bawat operasyon. Depende sa pag-load sa network, magbabago ang presyo ng gas, iyon ay, ang koepisyent ayon sa kung saan ang batayang pera ay mako-convert sa pantulong na yunit na ito upang bayaran ang komisyon.

May isa pang tampok ng isang transaksyon sa Ethereum: ang bytecode na nilalaman nito para sa pagpapatupad sa isang virtual machine ay isasagawa hanggang sa ito ay makumpleto na may ilang resulta (tagumpay o kabiguan) o hanggang sa maubos ang isang tiyak na halaga ng mga barya na inilaan upang bayaran ang komisyon . Ito ay upang maiwasan ang isang sitwasyon kung saan, sa kaganapan ng ilang pagkakamali, ang lahat ng mga barya mula sa account ng nagpadala ay ginugol sa komisyon (halimbawa, ilang uri ng walang hanggang cycle na nagsimula sa isang virtual machine), ang sumusunod na field ay umiiral - simulan ang gas (madalas na tinatawag na limitasyon ng gas) - tinutukoy nito ang maximum na halaga ng mga barya na gustong gastusin ng nagpadala upang makumpleto ang isang partikular na transaksyon.

Ang susunod na patlang ay tinatawag address ng patutunguhan. Kabilang dito ang address ng tatanggap ng mga barya o ang address ng isang partikular na smart contract na ang mga pamamaraan ay tatawagin. Pagkatapos nito ay dumating ang field halaga, kung saan ang halaga ng mga barya na ipinadala sa patutunguhang address ay ipinasok.

Susunod ay isang kawili-wiling larangan na tinatawag data, kung saan magkasya ang buong istraktura. Ito ay hindi isang hiwalay na field, ngunit isang buong istraktura kung saan tinukoy ang code para sa virtual machine. Maaari kang maglagay ng arbitrary na data dito - may mga hiwalay na panuntunan para dito.

At ang huling field ay tinatawag lagda. Sabay-sabay itong naglalaman ng parehong electronic na lagda ng may-akda ng transaksyong ito at ang pampublikong susi kung saan mabe-verify ang lagdang ito. Mula sa pampublikong key maaari mong makuha ang account identifier ng nagpadala ng transaksyong ito, iyon ay, natatanging kilalanin ang account ng nagpadala sa system mismo. Nalaman namin ang pangunahing bagay tungkol sa istraktura ng transaksyon.

Halimbawa ng smart contract code para sa Solidity

Tingnan natin ngayon ang pinakasimpleng smart contract gamit ang isang halimbawa.

contract Bank {
    address owner;
    mapping(address => uint) balances;
    
    function Bank() {
        owner = msg.sender;
    }

    function deposit() public payable {
        balances[msg.sender] += msg.value;
    }

    function withdraw(uint amount) public {
        if (balances[msg.sender] >= amount) {
            balances[msg.sender] -= amount;
            msg.sender.transfer(amount);
        }
    }

    function getMyBalance() public view returns(uint) {
        return balances[msg.sender];
    }

    function kill() public {
        if (msg.sender == owner)
            selfdestruct(owner);
    }
}

Sa itaas ay isang pinasimple na source code na maaaring maghawak ng mga barya ng mga user at ibalik ang mga ito kapag hinihiling.

Kaya, mayroong isang Bank smart contract na gumaganap ng mga sumusunod na function: ito ay nag-iipon ng mga barya sa balanse nito, iyon ay, kapag ang isang transaksyon ay nakumpirma at tulad ng isang matalinong kontrata ay inilagay, isang bagong account ay nilikha na maaaring maglaman ng mga barya sa balanse nito; naaalala nito ang mga gumagamit at ang pamamahagi ng mga barya sa pagitan nila; ay may ilang mga pamamaraan para sa pamamahala ng mga balanse, iyon ay, posible na maglagay muli, mag-withdraw at suriin ang balanse ng gumagamit.

Tingnan natin ang bawat linya ng source code. Ang kontratang ito ay may pare-parehong larangan. Ang isa sa kanila, na may uri ng address, ay tinatawag na may-ari. Dito naaalala ng kontrata ang address ng user na lumikha ng smart contract na ito. Dagdag pa, mayroong isang dynamic na istraktura na nagpapanatili ng pagsusulatan sa pagitan ng mga address at balanse ng user.

Sinusundan ito ng paraan ng Bangko - pareho ang pangalan nito sa kontrata. Alinsunod dito, ito ang tagabuo nito. Dito itinalaga sa variable ng may-ari ang address ng taong naglagay ng smart contract na ito sa network. Ito lang ang nangyayari sa constructor na ito. Ibig sabihin, ang msg sa kasong ito ay eksaktong data na inilipat sa virtual machine kasama ang transaksyon na naglalaman ng buong code ng kontratang ito. Alinsunod dito, ang msg.sender ang may-akda ng transaksyong ito na nagho-host ng code na ito. Siya ang magiging may-ari ng smart contract.

Ang paraan ng pagdedeposito ay nagpapahintulot sa iyo na maglipat ng isang tiyak na bilang ng mga barya sa account ng kontrata sa pamamagitan ng transaksyon. Sa kasong ito, ang matalinong kontrata, na tumatanggap ng mga baryang ito, ay iniiwan ang mga ito sa balanse nito, ngunit itinatala sa istruktura ng mga balanse kung sino talaga ang nagpadala ng mga baryang ito upang malaman kung sino ang mga ito.

Ang susunod na paraan ay tinatawag na withdraw at nangangailangan ito ng isang parameter - ang halaga ng mga barya na gustong i-withdraw ng isang tao mula sa bangkong ito. Tinitingnan nito kung may sapat na mga barya sa balanse ng user na tumatawag sa paraang ito para ipadala ang mga ito. Kung sapat ang mga ito, ibinabalik mismo ng matalinong kontrata ang bilang ng mga barya sa tumatawag.

Susunod ay ang paraan para sa pagsuri sa kasalukuyang balanse ng user. Gagamitin ang sinumang tumawag sa paraang ito para makuha ang balanseng ito sa smart contract. Ito ay nagkakahalaga ng noting na ang modifier ng paraang ito ay view. Nangangahulugan ito na ang pamamaraan mismo ay hindi nagbabago sa mga variable ng klase nito sa anumang paraan at ito ay talagang isang read method lamang. Walang hiwalay na transaksyon ang nilikha upang tawagan ang paraang ito, walang bayad na binabayaran, at lahat ng mga kalkulasyon ay isinasagawa nang lokal, pagkatapos nito ay natatanggap ng user ang resulta.

Ang paraan ng pagpatay ay kailangan upang sirain ang estado ng matalinong kontrata. At dito mayroong karagdagang pagsusuri kung ang tumatawag ng pamamaraang ito ay ang may-ari ng kontratang ito. Kung gayon, ang kontrata ay masisira sa sarili, at ang pag-andar ng pagkawasak ay tumatagal ng isang parameter - ang pagkakakilanlan ng account kung saan ipapadala ng kontrata ang lahat ng mga barya na natitira sa balanse nito. Sa kasong ito, ang natitirang mga barya ay awtomatikong mapupunta sa address ng may-ari ng kontrata.

Paano gumagana ang isang buong node sa Ethereum network?

Tingnan natin ang eskematiko kung paano isinasagawa ang mga matalinong kontrata sa Ethereum platform at kung paano gumagana ang isang buong network node.

Panimula sa Mga Matalinong Kontrata

Ang isang buong node sa Ethereum network ay dapat na may hindi bababa sa apat na mga module.
Ang una, tulad ng para sa anumang desentralisadong protocol, ay ang P2P networking module - isang module para sa koneksyon sa network at gumagana sa iba pang mga node, kung saan ang mga bloke, transaksyon, at impormasyon tungkol sa iba pang mga node ay ipinagpapalit. Ito ay isang tradisyonal na bahagi para sa lahat ng desentralisadong cryptocurrencies.

Susunod, mayroon kaming isang module para sa pag-iimbak ng data ng blockchain, pagproseso, pagpili ng isang priority na sangay, pagdaragdag ng mga bloke, pag-unlink ng mga bloke, pagpapatunay sa mga bloke na ito, atbp.

Ang ikatlong module ay tinatawag na EVM (Ethereum virtual machine) - ito ay isang virtual machine na tumatanggap ng bytecode mula sa mga transaksyon sa Ethereum. Kinukuha ng module na ito ang kasalukuyang estado ng isang partikular na account at gumagawa ng mga pagbabago sa estado nito batay sa natanggap na bytecode. Ang bersyon ng virtual machine sa bawat network node ay dapat na pareho. Ang mga kalkulasyon na nagaganap sa bawat node ng Ethereum ay eksaktong pareho, ngunit nangyayari ang mga ito sa isang asynchronous na paraan: isang tao ang sumusuri at tumatanggap ng transaksyong ito nang mas maaga, iyon ay, nagpapatupad ng lahat ng code na nakapaloob dito, at isang tao sa ibang pagkakataon. Alinsunod dito, kapag ang isang transaksyon ay nilikha, ito ay ibinahagi sa network, tinatanggap ito ng mga node, at sa oras ng pag-verify, sa parehong paraan na ang Bitcoin Script ay naisakatuparan sa Bitcoin, ang bytecode ng virtual machine ay isinasagawa dito.

Ang isang transaksyon ay itinuturing na na-verify kung ang lahat ng code na nakapaloob dito ay naisakatuparan, isang bagong estado ng isang partikular na account ay nabuo at nai-save hanggang sa ito ay malinaw kung ang transaksyong ito ay nailapat o hindi. Kung ang transaksyon ay inilapat, kung gayon ang estado na ito ay itinuturing na hindi lamang nakumpleto, kundi pati na rin sa kasalukuyan. Mayroong isang database na nag-iimbak ng estado ng bawat account para sa bawat network node. Dahil sa katotohanan na ang lahat ng mga kalkulasyon ay nangyayari sa parehong paraan at ang estado ng blockchain ay pareho, ang database na naglalaman ng mga estado ng lahat ng mga account ay magiging pareho para sa bawat node.

Mga alamat at limitasyon ng mga matalinong kontrata

Tulad ng para sa mga paghihigpit na umiiral para sa mga platform ng matalinong kontrata na katulad ng Ethereum, ang mga sumusunod ay maaaring banggitin:

  • pagpapatupad ng code;
  • maglaan ng memorya;
  • data ng blockchain;
  • magpadala ng mga pagbabayad;
  • lumikha ng bagong kontrata;
  • tumawag sa ibang mga kontrata.

Tingnan natin ang mga paghihigpit na ipinapataw sa isang virtual machine, at, nang naaayon, iwaksi ang ilang mga alamat tungkol sa mga matalinong kontrata. Sa isang virtual machine, na maaaring hindi lamang sa Ethereum, kundi pati na rin sa mga katulad na platform, maaari kang magsagawa ng tunay na di-makatwirang lohikal na mga operasyon, iyon ay, magsulat ng code at ito ay isasagawa doon, maaari ka ring maglaan ng memorya. Gayunpaman, ang bayad ay binabayaran nang hiwalay para sa bawat operasyon at para sa bawat karagdagang yunit ng memorya na inilalaan.

Susunod, ang virtual machine ay maaaring magbasa ng data mula sa blockchain database upang magamit ang data na ito bilang isang trigger upang maisagawa ang isa o isa pang matalinong lohika ng kontrata. Ang virtual machine ay maaaring lumikha at magpadala ng mga transaksyon, maaari itong lumikha ng mga bagong kontrata at mga paraan ng pagtawag ng iba pang mga matalinong kontrata na nai-publish na sa network: umiiral na, magagamit, atbp.

Ang pinakakaraniwang mito ay ang Ethereum smart contracts ay maaaring gumamit ng impormasyon mula sa anumang mapagkukunan ng Internet sa kanilang mga termino. Ang katotohanan ay ang isang virtual machine ay hindi maaaring magpadala ng isang kahilingan sa network sa ilang panlabas na mapagkukunan ng impormasyon sa Internet, iyon ay, imposibleng magsulat ng isang matalinong kontrata na mamamahagi ng halaga sa pagitan ng mga gumagamit depende sa, sabihin, kung ano ang lagay ng panahon sa labas, o kung sino ang nanalo ng ilang kampeonato, o batay sa kung ano pang insidente ang nangyari sa labas ng mundo, dahil ang impormasyon tungkol sa mga insidenteng ito ay wala lang sa database ng mismong platform. Iyon ay, walang anuman sa blockchain tungkol dito. Kung hindi ito lalabas doon, hindi magagamit ng virtual machine ang data na ito bilang mga trigger.

Mga disadvantages ng Ethereum

Ilista natin ang mga pangunahing. Ang unang disbentaha ay mayroong ilang mga kahirapan sa pagdidisenyo, pagbuo at pagsubok ng mga matalinong kontrata sa Ethereum (Ginagamit ng Ethereum ang wikang Solidity upang magsulat ng mga matalinong kontrata). Sa katunayan, ipinapakita ng pagsasanay na ang napakalaking porsyento ng lahat ng mga pagkakamali ay nabibilang sa kadahilanan ng tao. Talagang totoo ito para sa mga nakasulat nang Ethereum smart contract na may average o mas mataas na kumplikado. Kung para sa mga simpleng matalinong kontrata ang posibilidad ng isang pagkakamali ay maliit, kung gayon sa mga kumplikadong matalinong kontrata ay madalas na mayroong mga pagkakamali na humahantong sa pagnanakaw ng mga pondo, ang kanilang pagyeyelo, pagkasira ng mga matalinong kontrata sa hindi inaasahang paraan, atbp. Marami na ang mga ganitong kaso. kilala.

Ang pangalawang kawalan ay ang virtual machine mismo ay hindi perpekto, dahil ito ay isinulat din ng mga tao. Maaari itong magsagawa ng mga di-makatwirang utos, at doon nakasalalay ang kahinaan: ang isang bilang ng mga utos ay maaaring i-configure sa isang tiyak na paraan na hahantong sa mga kahihinatnan na hindi inaasahan nang maaga. Ito ay isang napakakomplikadong lugar, ngunit mayroon nang ilang mga pag-aaral na nagpapakita na ang mga kahinaan na ito ay umiiral sa kasalukuyang bersyon ng Ethereum network at maaari silang humantong sa pagkabigo ng maraming mga matalinong kontrata.

Isa pang malaking kahirapan, maaari itong ituring na isang kawalan. Ito ay nakasalalay sa katotohanan na maaari mong praktikal o teknikal na makarating sa konklusyon na kung isasama mo ang bytecode ng isang kontrata na isasagawa sa isang virtual machine, maaari mong matukoy ang ilang partikular na pagkakasunud-sunod ng mga operasyon. Kapag isinagawa nang magkasama, ang mga operasyong ito ay lubos na maglo-load sa virtual machine at magpapabagal nito nang hindi katumbas ng bayad na binayaran para sa pagsasagawa ng mga operasyong ito.

Noong nakaraan, mayroon nang panahon sa pag-unlad ng Ethereum, nang maraming mga lalaki na nakauunawa nang detalyado sa pagpapatakbo ng isang virtual machine ay nakahanap ng gayong mga kahinaan. Sa katunayan, ang mga transaksyon ay nagbayad ng napakaliit na bayad, ngunit halos nagpabagal sa buong network. Ang mga problemang ito ay napakahirap lutasin, dahil kinakailangan, una, upang matukoy ang mga ito, pangalawa, upang ayusin ang presyo para sa pagsasagawa ng mga operasyong ito at, pangatlo, upang magsagawa ng isang hard fork, na nangangahulugang pag-update ng lahat ng mga node ng network sa isang bagong bersyon ng software, at pagkatapos ay sabay-sabay na pag-activate ng mga pagbabagong ito.

Tulad ng para sa Ethereum, maraming pananaliksik ang isinagawa, maraming praktikal na karanasan ang natamo: parehong positibo at negatibo, ngunit gayunpaman, may nananatiling mga paghihirap at kahinaan na kailangan pa ring harapin kahit papaano.

Kaya, ang pampakay na bahagi ng artikulo ay nakumpleto, lumipat tayo sa mga tanong na madalas na lumitaw.

FAQ

β€” Kung gusto ng lahat ng partido sa isang kasalukuyang smart contract na baguhin ang mga tuntunin, maaari ba nilang kanselahin ang smart contract na ito gamit ang multisig, at pagkatapos ay gumawa ng bagong smart contract na may mga na-update na tuntunin ng pagpapatupad nito?

Ang sagot dito ay magiging doble. Bakit? Dahil sa isang banda, ang isang matalinong kontrata ay tinukoy nang isang beses at hindi na ito nagpapahiwatig ng anumang mga pagbabago, at sa kabilang banda, maaari itong magkaroon ng paunang nakasulat na lohika na nagbibigay ng kumpleto o bahagyang pagbabago ng ilang kundisyon. Ibig sabihin, kung gusto mong baguhin ang isang bagay sa iyong smart contract, dapat kang magreseta ng mga kundisyon kung saan maaari mong i-update ang mga kundisyong ito. Alinsunod dito, sa gayong masinop na paraan lamang maisasaayos ang pag-renew ng kontrata. Ngunit dito, maaari ka ring magkaroon ng problema: magkamali at makakuha ng kaukulang kahinaan. Samakatuwid, ang mga naturang bagay ay kailangang maging napaka-detalyado at maingat na idinisenyo at masuri.

β€” Paano kung ang tagapamagitan ay pumasok sa isang kasunduan sa isa sa mga kalahok na partido: escrow o smart contract? Kinakailangan ba ang isang tagapamagitan sa isang matalinong kontrata?

Ang isang tagapamagitan ay hindi kinakailangan sa isang matalinong kontrata. Maaaring wala ito. Kung, sa kaso ng escrow, ang tagapamagitan ay pumasok sa isang pagsasabwatan sa isa sa mga partido, kung gayon, oo, ang pamamaraang ito ay biglang mawawala ang lahat ng halaga nito. Samakatuwid, ang mga tagapamagitan ay pinipili sa paraang pinagkakatiwalaan sila ng lahat ng partidong kasangkot sa prosesong ito nang sabay-sabay. Alinsunod dito, hindi mo lang ililipat ang mga barya sa isang multisignature na address na may isang tagapamagitan na hindi mo pinagkakatiwalaan.

β€” Posible ba sa isang transaksyon sa Ethereum na maglipat ng maraming iba't ibang token mula sa iyong address patungo sa iba't ibang target na address, halimbawa, mga exchange address kung saan ipinagpalit ang mga token na ito?

Ito ay isang magandang tanong at may kinalaman ito sa modelo ng transaksyon ng Ethereum at kung paano ito naiiba sa modelo ng Bitcoin. At ang pagkakaiba ay radikal. Kung sa modelo ng transaksyon ng Ethereum ay naglilipat ka lamang ng mga barya, pagkatapos ay ililipat lamang ang mga ito mula sa isang address patungo sa isa pa, walang pagbabago, tanging ang tiyak na halaga na iyong tinukoy. Sa madaling salita, hindi ito isang modelo ng mga hindi nagastos na output (UTXO), ngunit isang modelo ng mga account at kaukulang balanse. Posibleng magpadala ng maraming magkakaibang token sa isang transaksyon nang sabay-sabay kung sumulat ka ng tusong matalinong kontrata, ngunit kailangan mo pa ring gumawa ng maraming transaksyon, lumikha ng kontrata, pagkatapos ay maglipat ng mga token at barya dito, at pagkatapos ay tawagan ang naaangkop na paraan . Nangangailangan ito ng pagsisikap at oras, kaya sa pagsasagawa ay hindi ito gumagana nang ganoon at lahat ng mga pagbabayad sa Ethereum ay ginawa sa magkahiwalay na mga transaksyon.

β€” Ang isa sa mga alamat tungkol sa platform ng Ethereum ay imposibleng ilarawan ang mga kundisyon na magdedepende sa data ng isang panlabas na mapagkukunan ng Internet, kaya ano ang gagawin pagkatapos?

Ang solusyon ay ang mismong matalinong kontrata ay maaaring magbigay ng isa o higit pang mga tinatawag na pinagkakatiwalaang orakulo, na kumukolekta ng data tungkol sa estado ng mga bagay sa labas ng mundo at ipinapadala ito sa mga matalinong kontrata sa pamamagitan ng mga espesyal na pamamaraan. Itinuturing mismo ng kontrata na totoo ang data na natanggap nito mula sa mga pinagkakatiwalaang partido. Para sa higit na pagiging maaasahan, pumili lamang ng isang malaking grupo ng mga orakulo at bawasan ang panganib ng kanilang pagsasabwatan. Ang kontrata mismo ay maaaring hindi isinasaalang-alang ang data mula sa mga orakulo na sumasalungat sa karamihan.

Ang isa sa mga lektura ng online na kurso sa Blockchain ay nakatuon sa paksang ito - "Panimula sa Mga Matalinong Kontrata".

Pinagmulan: www.habr.com

Magdagdag ng komento