Pambuka kanggo Smart Contracts

Ing artikel iki, kita bakal ndeleng apa kontrak cerdas, apa iku, kita bakal kenal karo platform kontrak cerdas sing beda-beda, fitur-fiture, lan uga ngrembug babagan cara kerjane lan apa keuntungan sing bisa ditindakake. Materi iki bakal migunani banget kanggo para pamaca sing ora ngerti babagan topik kontrak cerdas, nanging pengin nyedhaki ngerti.

Kontrak reguler vs. kontrak pinter

Sadurunge kita nliti rincian, ayo njupuk conto beda antarane kontrak biasa, sing ditemtokake ing kertas, lan kontrak cerdas, sing dituduhake kanthi digital.

Pambuka kanggo Smart Contracts

Kepiye carane iki bisa ditindakake sadurunge tekane kontrak cerdas? Mbayangno sekelompok wong sing pengin netepake aturan lan kondisi tartamtu kanggo distribusi nilai, uga mekanisme tartamtu kanggo njamin implementasine distribusi iki miturut aturan lan kondisi sing diwenehake. Banjur padha ngumpul, nggawe kertas sing ditulis rincian identifikasi, istilah, nilai sing ana gandhengane, tanggal lan ditandatangani. Kontrak iki uga disertifikasi dening pihak sing dipercaya, kayata notaris. Salajengipun, wong-wong iki pindhah menyang arah sing beda-beda karo salinan kertas kontrak kasebut lan wiwit nindakake sawetara tumindak sing bisa uga ora cocog karo kontrak kasebut, yaiku, dheweke nindakake siji perkara, nanging ing kertas kasebut disertifikasi manawa kudu nindakake apa wae. temen beda. Lan carane metu saka kahanan iki? Nyatane, salah sawijining anggota klompok kudu njupuk makalah iki, njupuk sawetara bukti, nggawa menyang pengadilan lan entuk kepatuhan antarane kontrak lan tumindak nyata. Cukup asring, angel kanggo entuk implementasine sing adil saka kontrak iki, sing nyebabake akibat sing ora nyenengake.

Apa sing bisa dikandhakake babagan kontrak cerdas? Dheweke nggabungake kemungkinan nulis syarat kontrak lan mekanisme kanggo implementasine sing ketat. Yen kahanan wis disetel lan transaksi utawa panjalukan sing cocog wis ditandatangani, banjur yen panjaluk utawa transaksi kasebut wis ditampa, ora bisa ngganti kahanan utawa pengaruhe implementasine.

Ana siji validator utawa kabeh jaringan, uga database sing nyimpen kabeh kontrak pinter sing dikirim kanggo eksekusi kanthi urutan kronologis sing ketat. Sampeyan uga penting yen database iki kudu ngemot kabeh kondisi pemicu kanggo nglakokake kontrak cerdas. Kajaba iku, kudu nimbang regane sing distribusi kasebut diterangake ing kontrak kasebut. Yen iki ditrapake kanggo sawetara mata uang digital, mula database iki kudu dianggep.

Ing tembung liya, validator kontrak cerdas kudu nduweni akses menyang kabeh data sing dioperasikake kontrak cerdas. Contone, database siji kudu digunakake kanggo akun mata uang digital, saldo pangguna, transaksi pangguna, lan cap wektu. Banjur, ing kontrak cerdas, kondisi kasebut bisa dadi imbangan pangguna ing mata uang tartamtu, tekane wektu tartamtu, utawa nyatane yen transaksi tartamtu wis ditindakake, nanging ora ana liyane.

Definisi kontrak pinter

Umumé, terminologi kasebut diciptakaké déning peneliti Nick Szabo lan pisanan dipigunakaké ing taun 1994, lan didokumentasikan ing taun 1997 ing sawijining artikel sing njlèntrèhaké gagasan babagan kontrak cerdas.

Kontrak cerdas nyatakake yen sawetara otomatisasi distribusi nilai ditindakake, sing mung bisa gumantung ing kahanan sing wis ditemtokake sadurunge. Ing wangun sing paling gampang, katon kaya kontrak kanthi syarat sing ditetepake kanthi ketat, sing ditandatangani dening pihak tartamtu.

Kontrak cerdas dirancang kanggo nyuda kapercayan ing pihak katelu. Kadhangkala pusat nggawe keputusan sing kabeh gumantung ora kalebu. Kajaba iku, kontrak kasebut luwih gampang diaudit. Iki minangka akibat saka sawetara fitur desain sistem kasebut, nanging paling asring kita ngerti kanthi kontrak cerdas lingkungan desentralisasi lan anané fungsi sing ngidini sapa waé bisa nganalisa database lan nganakake audit lengkap babagan eksekusi kontrak. Iki njamin pangayoman marang owah-owahan data retroaktif sing bakal mbutuhake owah-owahan ing kinerja kontrak kasebut. Digitalisasi paling akeh proses nalika nggawe lan ngluncurake kontrak cerdas asring nyederhanakake teknologi lan biaya implementasine.

Conto prasaja - layanan Escrow

Ayo goleki conto sing gampang banget. Iki bakal mbantu sampeyan nyedhaki ngerteni fungsi kontrak cerdas, uga luwih ngerti babagan apa sing kudu digunakake.

Pambuka kanggo Smart Contracts

Uga bisa dileksanakake nggunakake Bitcoin, sanajan saiki Bitcoin isih meh ora bisa disebut platform lengkap kanggo kontrak pinter. Dadi, kita duwe sawetara panuku lan duwe toko online. Pelanggan pengin tuku monitor saka toko iki. Ing kasus sing paling gampang, panuku ngrampungake lan ngirim pembayaran, lan toko online nampa, konfirmasi, lan banjur ngirim barang. Nanging, ing kahanan iki, perlu kanggo kapercayan gedhe - panuku kudu dipercaya toko online kanggo kabeh biaya monitor. Wiwit toko online bisa uga duwe reputasi sing kurang ing mripate panuku, ana risiko yen sakperangan alesan, sawise nampa pembayaran, toko bakal nolak layanan lan ora ngirim barang menyang panuku. Mulane, panuku nyuwun pitakonan (lan, kanthi mangkono, toko online takon pitakonan iki) apa sing bisa ditrapake ing kasus iki kanggo nyilikake risiko kasebut lan nggawe transaksi kasebut luwih dipercaya.

Ing kasus Bitcoin, bisa ngidini panuku lan bakul milih mediator kanthi mandiri. Ana akeh wong sing melu ngrampungake masalah sing kontroversial. Lan peserta bisa milih saka dhaptar umum mediator sing bakal dipercaya. Bareng padha nggawe 2 saka 3 alamat multisignature ngendi ana telung tombol lan loro teken karo loro tombol dibutuhake kanggo nglampahi dhuwit recehan saka alamat kasebut. Siji kunci bakal dadi panuku, nomer loro kanggo toko online, lan nomer telu kanggo mediator. Lan menyang alamat multisignature kasebut, panuku bakal ngirim jumlah sing perlu kanggo mbayar monitor. Saiki, nalika bakul weruh yen dhuwit diblokir kanggo sawetara wektu ing alamat multisignature sing gumantung ing wong, kang bisa aman ngirim monitor dening mail.

Sabanjure, panuku nampa bingkisan kasebut, mriksa barang kasebut lan nggawe keputusan babagan tuku pungkasan. Dheweke bisa uga setuju karo layanan sing diwenehake lan mlebu transaksi karo kuncine, ing ngendi dheweke nransfer dhuwit recehan saka alamat multisignature menyang bakul, utawa dheweke ora puas karo apa wae. Ing kasus kapindho, dheweke ngubungi mediator kanggo nggabungake transaksi alternatif sing bakal nyebarake dhuwit recehan kasebut kanthi cara sing beda.

Ayo dadi ngomong monitor teka sethitik kegores lan kit ora kalebu kabel kanggo nyambungake menyang komputer, sanajan situs web nyimpen online ngandika kabel kudu klebu ing kit. Banjur panuku ngumpulake bukti sing dibutuhake kanggo mbuktekake marang mediator yen dheweke diapusi ing kahanan iki: njupuk gambar situs kasebut, njupuk foto resi mail, njupuk foto goresan ing monitor lan nuduhake yen segel kasebut rusak lan kabel ditarik metu. Toko online, ing siji, ngumpulake bukti lan transfer menyang mediator.

Mediator kasengsem ing bebarengan marem loro nesu panuku lan kapentingan toko online (bakal dadi cetha kok mengko). Iku dadi transaksi kang dhuwit recehan saka alamat multisignature bakal ngginakaken ing sawetara babagan antarane panuku, toko online lan mediator, wiwit njupuk bagean kanggo awake dhewe minangka ganjaran kanggo karya. Ayo dadi 90% saka jumlah total menyang bakul, 5% kanggo mediator lan 5% ganti rugi kanggo panuku. Mediator mlebu transaksi iki karo tombol, nanging durung bisa Applied, amarga mbutuhake loro teken, nanging mung siji worth iku. Iki ngirim transaksi kasebut menyang panuku lan bakul. Yen paling ora siji saka wong-wong mau wareg karo pilihan iki kanggo redistributing dhuwit recehan, banjur transaksi bakal wis mlebu lan mbagekke menyang jaringan. Kanggo validasi, cukup yen salah sawijining pihak ing transaksi setuju karo pilihan mediator.

Penting kanggo pisanan milih mediator supaya loro peserta dipercaya. Ing kasus iki, dheweke bakal tumindak kanthi bebas saka kapentingan siji utawa liyane lan kanthi objektif netepake kahanan kasebut. Yen mediator ora menehi pilihan kanggo nyebarke dhuwit recehan sing bakal gawe marem ing paling siji peserta, banjur, sawise sarujuk bebarengan, loro panuku lan toko online bisa ngirim dhuwit recehan menyang alamat multisignature anyar dening sijine loro teken. Alamat multisignature anyar bakal dikompilasi karo mediator sing beda, sing bisa uga luwih kompeten ing perkara kasebut lan menehi pilihan sing luwih apik.

Contone karo asrama lan kulkas

Ayo goleki conto sing luwih rumit sing nuduhake kemampuan kontrak cerdas kanthi luwih jelas.

Pambuka kanggo Smart Contracts

Ayo padha ngomong yen ana wong telu sing bubar pindhah menyang kamar asrama sing padha. Wong telu mau kasengsem tuku kulkas kanggo kamare sing bisa dienggo bareng. Salah sijine kanthi sukarela ngumpulake jumlah sing dibutuhake kanggo tuku kulkas lan rembugan karo bakul. Nanging, dheweke mung bubar ketemu lan ora ana kepercayaan sing cukup ing antarane. Temenan, wong loro njupuk risiko kanthi menehi dhuwit kanggo katelu. Kajaba iku, padha kudu tekan persetujuan ing milih bakul.

Dheweke bisa nggunakake layanan escrow, yaiku, milih mediator sing bakal ngawasi eksekusi transaksi lan ngrampungake masalah kontroversial yen ana. Banjur, sawise setuju, dheweke nggawe kontrak cerdas lan menehi syarat tartamtu.

Kahanan pisanan yaiku sadurunge wektu tartamtu, ujare sajrone seminggu, akun kontrak cerdas sing cocog kudu nampa telung pembayaran saka alamat tartamtu kanggo jumlah tartamtu. Yen iki ora kelakon, kontrak pinter mandheg nglakokaké lan ngasilake dhuwit recehan kanggo kabeh peserta. Yen kondhisi kasebut ditemoni, nilai-nilai penjual lan pengenal mediator disetel, lan syarat kasebut dicenthang yen kabeh peserta setuju karo pilihan penjual lan mediator. Yen kabeh kondisi wis ketemu, banjur dana bakal ditransfer menyang alamat tartamtu. Pendekatan iki bisa nglindhungi peserta saka penipuan saka sisih endi wae lan umume ngilangi kabutuhan kanggo dipercaya.

Ing conto iki, prinsip banget yen kemampuan kanggo nyetel parameter langkah-langkah kanggo ngrampungake saben kondisi ngidini sampeyan nggawe sistem kanthi kerumitan lan ambane level nested. Kajaba iku, sampeyan bisa nemtokake kondisi pisanan ing kontrak pinter, lan mung sawise kasenengan sampeyan bisa nyetel paramèter kanggo kondisi sabanjure. Ing tembung liya, kondisi kasebut ditulis kanthi resmi, lan paramèter kasebut bisa disetel sajrone operasi kasebut.

Klasifikasi kontrak pinter

Kanggo klasifikasi, sampeyan bisa nyetel macem-macem klompok kritéria. Nanging, ing wayahe pangembangan teknologi, papat kasebut relevan.

Kontrak cerdas bisa dibedakake kanthi lingkungan eksekusi, sing bisa dadi terpusat utawa desentralisasi. Ing kasus desentralisasi, kita duwe kamardikan lan toleransi kesalahan sing luwih gedhe nalika nindakake kontrak cerdas.

Dheweke uga bisa dibedakake kanthi proses nyetel lan ngrampungake kahanan: bisa diprogram kanthi bebas, diwatesi utawa wis ditemtokake, yaiku diketik kanthi ketat. Nalika mung ana 4 kontrak cerdas khusus ing platform kontrak cerdas, paramèter kasebut bisa disetel kanthi cara apa wae. Mulane, nyetel iku luwih prasaja: kita milih kontrak saka dhaftar lan pass paramèter.

Miturut cara wiwitan, ana kontrak cerdas otomatis, yaiku, nalika ana kahanan tartamtu, dheweke nindakake dhewe, lan ana kontrak sing ditemtokake, nanging platform kasebut ora kanthi otomatis mriksa kasenengane; kudu diwiwiti kanthi kapisah.

Kajaba iku, kontrak pinter beda-beda ing tingkat privasi. Padha bisa dadi salah siji rampung mbukak, sebagian utawa rampung rahasia. Sing terakhir tegese pengamat pihak katelu ora ndeleng syarat kontrak cerdas. Nanging, topik privasi amba banget lan luwih becik nimbang kanthi kapisah saka artikel saiki.

Ing ngisor iki kita bakal nliti telung kritéria pisanan supaya luwih jelas babagan pemahaman topik saiki.

Kontrak cerdas kanthi runtime

Pambuka kanggo Smart Contracts

Adhedhasar lingkungan eksekusi, bedane digawe ing antarane platform kontrak cerdas terpusat lan desentralisasi. Ing kasus kontrak digital terpusat, layanan siji digunakake, ing ngendi mung ana siji validator lan bisa uga ana layanan serep lan pemulihan, sing uga dikelola kanthi pusat. Ana siji basis data sing nyimpen kabeh informasi sing dibutuhake kanggo nyetel syarat kontrak pinter lan nyebarake nilai sing dianggep ing basis data layanan iki. Layanan terpusat kasebut duwe klien sing nyetel kahanan kanthi panjaluk tartamtu lan nggunakake kontrak kasebut. Amarga sifat terpusat saka platform, mekanisme otentikasi bisa uga kurang aman tinimbang ing cryptocurrencies.

Minangka conto, kita bisa njupuk panyedhiya komunikasi seluler (operator seluler beda). Contone, operator tartamtu nyimpen rekaman lalu lintas terpusat ing server, sing bisa ditularake ing macem-macem format, contone: ing wangun telpon swara, transmisi SMS, lalu lintas Internet seluler, lan miturut standar sing beda-beda, lan uga nyimpen rekaman. saka dana ing saldo pangguna. Mulane, panyedhiya komunikasi seluler bisa nggawe kontrak kanggo akuntansi kanggo layanan sing diwenehake lan pambayaran kanthi kahanan sing beda-beda. Ing kasus iki, gampang nyetel kahanan kaya "kirim SMS nganggo kode kasebut lan nomer kasebut lan sampeyan bakal nampa kahanan kasebut kanggo distribusi lalu lintas."

Conto liyane bisa diwenehake: bank-bank tradisional kanthi fungsi perbankan Internet sing ditambahi lan kontrak sing gampang banget kayata pembayaran reguler, konversi otomatis pembayaran sing mlebu, potongan otomatis kapentingan menyang akun tartamtu, lsp.

Yen kita ngomong babagan kontrak cerdas karo lingkungan eksekusi desentralisasi, mula kita duwe klompok validator. Saenipun, sapa wae bisa dadi validator. Amarga protokol sinkronisasi database lan tekan konsensus, kita duwe sawetara database umum sing saiki bakal nyimpen kabeh transaksi karo kontrak strictly diterangake, lan ora sawetara pitakonan kondisional, format kang asring ngganti, lan ora ana specification mbukak. Ing kene, transaksi bakal ngemot instruksi kanggo nglakokake kontrak miturut spesifikasi sing ketat. Spesifikasi iki mbukak lan mulane, pangguna platform dhewe bisa audit lan validasi kontrak cerdas. Ing kene kita bisa ndeleng manawa platform desentralisasi luwih unggul tinimbang platform terpusat babagan kamardikan lan toleransi kesalahan, nanging desain lan pangopènan luwih rumit.

Kontrak cerdas kanthi cara nyetel lan ngrampungake kahanan

Saiki ayo goleki kanthi luwih rinci babagan carane kontrak cerdas bisa beda-beda ing cara nyetel lan nepaki kahanan. Ing kene kita ngalihake perhatian menyang kontrak cerdas sing bisa diprogram kanthi acak lan Turing lengkap. Kontrak cerdas lengkap Turing ngidini sampeyan nyetel meh kabeh algoritma minangka syarat kanggo eksekusi kontrak: siklus nulis, sawetara fungsi kanggo ngitung kemungkinan, lan liya-liyane - mudhun menyang algoritma tandha elektronik dhewe. Ing kasus iki, kita tegese nulis logika sing sewenang-wenang.

Ana uga kontrak pinter sewenang-wenang, nanging ora Turing lengkap. Iki kalebu Bitcoin lan Litecoin kanthi skrip dhewe. Iki tegese sampeyan mung bisa nggunakake operasi tartamtu ing sembarang urutan, nanging sampeyan ora bisa maneh nulis puteran lan algoritma dhewe.

Kajaba iku, ana platform kontrak cerdas sing ngetrapake kontrak cerdas sing wis ditemtokake. Iki kalebu Bitshares lan Steemit. Bitshares duwe sawetara kontrak cerdas kanggo dagang, manajemen akun, manajemen platform kasebut lan paramèter. Steemit minangka platform sing padha, nanging ora fokus maneh kanggo ngetokake token lan dagang, kaya Bitshares, nanging ing blogging, yaiku nyimpen lan ngolah konten kanthi cara desentralisasi.

Kontrak lengkap Turing sing sewenang-wenang kalebu platform Ethereum lan RootStock, sing isih dikembangake. Mulane, ing ngisor iki kita bakal manggon kanthi luwih rinci babagan platform kontrak pinter Ethereum.

Kontrak cerdas kanthi metode wiwitan

Adhedhasar cara wiwitan, kontrak cerdas uga bisa dipérang dadi paling ora rong klompok: otomatis lan manual (ora otomatis). Sing otomatis ditondoi kanthi kasunyatan manawa, amarga kabeh parameter lan kahanan sing dingerteni, kontrak cerdas rampung kanthi otomatis, yaiku, ora mbutuhake ngirim transaksi tambahan lan mbuwang komisi tambahan ing saben eksekusi sabanjure. Platform kasebut dhewe duwe kabeh data kanggo ngetung kepiye kontrak cerdas bakal rampung. Logika ing kono ora sembarangan, nanging wis ditemtokake lan kabeh iki bisa ditebak. Yaiku, sampeyan bisa ngira sadurunge kerumitan nglakokake kontrak cerdas, nggunakake sawetara komisi pancet, lan kabeh proses kanggo implementasine luwih efisien.

Kanggo kontrak cerdas sing diprogram kanthi bebas, eksekusi ora otomatis. Kanggo miwiti kontrak pinter kasebut, ing meh kabeh langkah sampeyan kudu nggawe transaksi anyar, sing bakal nelpon tahap eksekusi sabanjure utawa metode kontrak cerdas sabanjure, mbayar komisi sing cocog lan ngenteni transaksi kasebut dikonfirmasi. Eksekusi bisa rampung kanthi sukses utawa ora, amarga kode kontrak cerdas iku sewenang-wenang lan sawetara wektu sing ora bisa diprediksi bisa uga katon, kayata loop langgeng, kekurangan sawetara paramèter lan argumen, pengecualian sing ora ditangani, lsp.

Akun Ethereum

Tipe Akun Ethereum

Ayo goleki jinis akun apa sing bisa ana ing platform Ethereum. Mung ana rong jinis akun ing kene lan ora ana pilihan liyane. Jinis pisanan diarani akun pangguna, sing nomer loro yaiku akun kontrak. Ayo dipikirake kepiye bedane.

Akun pangguna mung dikontrol dening kunci pribadi tandha elektronik. Pamilik akun ngasilake pasangan kunci dhewe kanggo tandha elektronik nggunakake algoritma ECDSA (Elliptic Curve Digital Signature Algorithm). Mung transaksi sing ditandatangani nganggo kunci iki sing bisa ngganti kahanan akun iki.

Logika kapisah diwenehake kanggo akun kontrak cerdas. Sampeyan mung bisa dikontrol dening kode piranti lunak sing wis ditemtokake sing nemtokake prilaku kontrak cerdas: kepiye carane ngatur dhuwit recehan ing kahanan tartamtu, kanthi inisiatif pangguna lan ing kahanan tambahan, dhuwit recehan kasebut bakal disebarake. Yen sawetara titik ora diwenehake dening pangembang ing kode program, masalah bisa uga muncul. Contone, kontrak cerdas bisa uga nampa negara tartamtu sing ora nampa wiwitan eksekusi luwih lanjut saka pangguna. Ing kasus iki, dhuwit recehan bener bakal beku, amarga kontrak pinter ora nyedhiyani kanggo metu saka negara iki.

Carane akun digawe ing Ethereum

Ing kasus akun pangguna, pemilik kanthi mandiri nggawe pasangan kunci nggunakake ECDSA. Wigati dicathet yen Ethereum nggunakake algoritma sing padha lan persis kurva eliptik sing padha kanggo tandha elektronik minangka Bitcoin, nanging alamat kasebut diitung kanthi cara sing rada beda. Ing kene, asil hashing pindho ora digunakake maneh, kaya ing Bitcoin, nanging hashing tunggal diwenehake karo fungsi Keccak kanthi dawane 256 bit. Bit sing paling ora signifikan dipotong saka nilai sing diasilake, yaiku 160 bit sing paling ora signifikan saka nilai hash output. Akibaté, kita entuk alamat ing Ethereum. Nyatane, butuh 20 bita.

Wigati dicathet yen pengenal akun ing Ethereum dienkode ing hex tanpa nggunakake checksum, ora kaya Bitcoin lan akeh sistem liyane, ing ngendi alamat kasebut dienkode ing basis 58 sistem nomer kanthi tambahan checksum. Iki tegese sampeyan kudu ati-ati nalika nggarap pengenal akun ing Ethereum: malah siji kesalahan ing pengenal dijamin kanggo mimpin kanggo mundhut dhuwit recehan.

Ana fitur penting lan iku akun panganggo ing tingkat database umum digawe ing wayahe nalika nampa pembayaran mlebu pisanan.

Nggawe akun kontrak pinter njupuk pendekatan sing beda. Kaping pisanan, salah sawijining pangguna nulis kode sumber kontrak cerdas, sawise kode kasebut dilewati liwat compiler khusus kanggo platform Ethereum, entuk bytecode kanggo mesin virtual Ethereum dhewe. Bytecode sing diasilake diselehake ing lapangan khusus transaksi kasebut. Iki disertifikasi atas jenenge akun inisiator. Sabanjure, transaksi iki disebarake ing saindhenging jaringan lan nyelehake kode kontrak cerdas. Komisi kanggo transaksi lan, kanthi mangkono, kanggo eksekusi kontrak ditarik saka saldo akun inisiator.

Saben kontrak pinter kudu ngemot konstruktor dhewe (kontrak iki). Bisa uga kosong utawa bisa uga ana isi. Sawise konstruktor dieksekusi, pengenal akun kontrak pinter digawe, nggunakake sampeyan bisa ngirim dhuwit recehan, nelpon cara kontrak pinter tartamtu, etc.

Struktur Transaksi Ethereum

Kanggo nggawe luwih cetha, kita bakal miwiti ndeleng struktur transaksi Ethereum lan conto kode kontrak pinter.

Pambuka kanggo Smart Contracts

Transaksi Ethereum kasusun saka sawetara lapangan. Pisanan iki, nonce, nomer serial tartamtu saka transaksi relatif kanggo akun dhewe sing distributes lan penulis sawijining. Iki perlu kanggo mbedakake transaksi pindho, yaiku, kanggo ngilangi kasus nalika transaksi sing padha ditampa kaping pindho. Kanthi nggunakake pengenal, saben transaksi nduweni nilai hash sing unik.

Sabanjure teka lapangan kaya rega bensin. Iki nuduhake rega ing ngendi mata uang dhasar Ethereum diowahi dadi gas, sing digunakake kanggo mbayar eksekusi kontrak cerdas lan alokasi sumber daya mesin virtual. Iki artine apa?

Ing Bitcoin, biaya dibayar langsung dening mata uang dhasar-Bitcoin dhewe. Iki bisa uga amarga mekanisme sing gampang kanggo ngitung: kita mbayar kanthi ketat kanggo jumlah data sing ana ing transaksi kasebut. Ing Ethereum kahanan luwih rumit, amarga angel banget kanggo ngandelake volume data transaksi. Ing kene, transaksi bisa uga ngemot kode program sing bakal dieksekusi ing mesin virtual, lan saben operasi mesin virtual bisa duwe kerumitan sing beda. Ana uga operasi sing nyedhiyakake memori kanggo variabel. Dheweke bakal duwe kerumitan dhewe, sing bakal dibayar kanggo saben operasi.

Biaya saben operasi ing gas padha bakal tetep. Punika dikenalaké khusus kanggo nemtokake biaya pancet saben operasi. Gumantung ing beban jaringan, rega gas bakal ganti, yaiku, koefisien miturut mata uang dhasar bakal diowahi dadi unit tambahan iki kanggo mbayar komisi.

Ana siji fitur liyane saka transaksi ing Ethereum: bytecode sing ngemot kanggo eksekusi ing mesin virtual bakal dieksekusi nganti rampung karo sawetara asil (sukses utawa gagal) utawa nganti jumlah dhuwit recehan tartamtu sing diparengake entek kanggo mbayar komisi. . Kanggo ngindhari kahanan sing, yen ana kesalahan, kabeh dhuwit recehan saka akun pangirim digunakake kanggo komisi (contone, sawetara jinis siklus langgeng diwiwiti ing mesin virtual), lapangan ing ngisor iki ana - miwiti gas (asring disebut watesan gas) - iku nemtokake jumlah maksimum dhuwit recehan sing pangirim gelem nglampahi kanggo ngrampungake transaksi tartamtu.

Lapangan sabanjure diarani alamat tujuan. Iki kalebu alamat panampa dhuwit recehan utawa alamat kontrak pinter tartamtu kang cara bakal disebut. Sawise teka lapangan Nilai, ing ngendi jumlah dhuwit recehan sing dikirim menyang alamat tujuan dilebokake.

Sabanjure ana lapangan menarik disebut data, ngendi kabeh struktur pas. Iki ora lapangan kapisah, nanging kabèh struktur kang kode kanggo mesin virtual ditetepake. Sampeyan bisa nyelehake data sewenang-wenang ing kene - ana aturan sing kapisah kanggo iki.

Lan lapangan pungkasan diarani teken. Iku bebarengan ngemot loro teken elektronik saka penulis transaksi iki lan kunci umum karo tandha iki bakal diverifikasi. Saka kunci umum sampeyan bisa entuk pengenal akun pangirim transaksi iki, yaiku, kanthi unik ngenali akun pangirim ing sistem kasebut dhewe. Kita nemokake bab utama babagan struktur transaksi.

Conto kode kontrak pinter kanggo Solidity

Ayo saiki nliti kontrak cerdas sing paling gampang nggunakake conto.

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);
    }
}

Ndhuwur minangka kode sumber sing disederhanakake sing bisa nahan dhuwit recehan pangguna lan ngasilake yen dikarepake.

Dadi, ana kontrak cerdas Bank sing nindakake fungsi ing ngisor iki: nglumpukake dhuwit recehan ing imbangan, yaiku, nalika transaksi dikonfirmasi lan kontrak pinter kasebut diselehake, akun anyar digawe sing bisa ngemot dhuwit recehan ing imbangan; iku ngelingi pangguna lan distribusi dhuwit recehan antarane wong-wong mau; wis sawetara cara kanggo ngatur imbangan, sing, iku bisa kanggo replenish, mbatalake lan mriksa imbangan pangguna.

Ayo dadi liwat saben baris kode sumber. Kontrak iki nduweni lapangan sing tetep. Salah sijine, kanthi alamat jinis, diarani pemilik. Ing kene kontrak kasebut ngelingi alamat pangguna sing nggawe kontrak cerdas iki. Salajengipun, ana struktur dinamis sing njaga korespondensi antarane alamat pangguna lan saldo.

Iki diterusake kanthi cara Bank - duwe jeneng sing padha karo kontrak. Patut, iki konstruktor sawijining. Ing kene variabel pemilik diwenehi alamat wong sing nyelehake kontrak pinter iki ing jaringan. Iki mung sing kedadeyan ing konstruktor iki. Tegese, pesen ing kasus iki persis data sing ditransfer menyang mesin virtual bebarengan karo transaksi sing ngemot kabeh kode kontrak iki. Patut, msg.sender minangka penulis transaksi iki sing dadi tuan rumah kode iki. Dheweke bakal dadi pemilik kontrak cerdas.

Cara simpenan ngidini sampeyan nransfer sawetara dhuwit recehan menyang akun kontrak kanthi transaksi. Ing kasus iki, kontrak pinter, nampa dhuwit recehan iki, ninggalake wong ing neraca, nanging cathetan ing struktur saldo sing persis pangirim dhuwit recehan iki supaya ngerti sing padha dadi kagungane.

Cara sabanjure diarani mundur lan butuh siji parameter - jumlah dhuwit recehan sing pengin ditarik saka bank iki. Iki mriksa apa ana cukup dhuwit recehan ing imbangan saka pangguna sing nelpon cara iki kanggo ngirim. Yen ana cukup, banjur kontrak pinter dhewe ngasilake nomer dhuwit recehan menyang panelpon.

Sabanjure teka cara kanggo mriksa imbangan saiki pangguna. Sapa wae sing nelpon cara iki bakal digunakake kanggo njupuk imbangan iki ing kontrak pinter. Wigati dicathet yen modifier saka metode iki yaiku tampilan. Iki tegese metode kasebut dhewe ora ngganti variabel kelas kasebut kanthi cara apa wae lan sejatine mung cara maca. Ora ana transaksi kapisah digawe kanggo nelpon cara iki, ora ragad mbayar, lan kabeh petungan dileksanakake lokal, sawise kang pangguna nampa asil.

Cara mateni dibutuhake kanggo ngrusak kahanan kontrak cerdas. Lan ing kene ana tambahan mriksa apa sing nelpon cara iki pemilik saka kontrak iki. Yen mangkono, kontrak kasebut ngrusak dhewe, lan fungsi karusakan njupuk siji parameter - pengenal akun sing kontrak bakal ngirim kabeh dhuwit recehan sing isih ana ing imbangan. Ing kasus iki, dhuwit recehan sing isih bakal kanthi otomatis menyang alamat pemilik kontrak.

Kepiye cara kerja simpul lengkap ing jaringan Ethereum?

Ayo ndeleng skematis babagan carane kontrak cerdas kasebut ditindakake ing platform Ethereum lan cara kerja simpul jaringan lengkap.

Pambuka kanggo Smart Contracts

Node lengkap ing jaringan Ethereum kudu paling sethithik papat modul.
Pisanan, minangka kanggo protokol desentralisasi apa wae, yaiku modul jaringan P2P - modul kanggo sambungan jaringan lan nggarap simpul liyane, ing ngendi blok, transaksi, lan informasi babagan node liyane diijolke. Iki minangka komponen tradisional kanggo kabeh cryptocurrencies desentralisasi.

Sabanjure, kita duwe modul kanggo nyimpen data pamblokiran, ngolah, milih cabang prioritas, nambahake pamblokiran, ngilangi pamblokiran, validasi pamblokiran kasebut, lsp.

Modul katelu diarani EVM (mesin virtual Ethereum) - iki minangka mesin virtual sing nampa bytecode saka transaksi Ethereum. Modul iki njupuk status saiki akun tartamtu lan nggawe owah-owahan ing negara adhedhasar bytecode ditampa. Versi mesin virtual ing saben simpul jaringan kudu padha. Petungan sing dumadi ing saben simpul Ethereum persis padha, nanging kedadeyan kanthi cara sing ora sinkron: ana sing mriksa lan nampa transaksi iki sadurunge, yaiku, nglakokake kabeh kode sing ana ing kono, lan wong liya mengko. Patut, nalika transaksi digawe, disebarake menyang jaringan, simpul nampa, lan ing wektu verifikasi, kanthi cara sing padha Bitcoin Script dieksekusi ing Bitcoin, bytecode mesin virtual dieksekusi ing kene.

Transaksi dianggep wis diverifikasi yen kabeh kode sing ana ing kono wis dieksekusi, negara anyar saka akun tartamtu wis digawe lan disimpen nganti jelas apa transaksi iki wis ditrapake utawa ora. Yen transaksi ditrapake, negara iki dianggep ora mung rampung, nanging uga saiki. Ana database sing nyimpen status saben akun kanggo saben simpul jaringan. Amarga kasunyatan manawa kabeh kalkulasi kedadeyan kanthi cara sing padha lan negara blokade padha, database sing ngemot negara kabeh akun uga bakal padha kanggo saben simpul.

Mitos lan watesan saka kontrak pinter

Kanggo watesan sing ana kanggo platform kontrak cerdas sing padha karo Ethereum, ing ngisor iki bisa dikutip:

  • eksekusi kode;
  • alokasi memori;
  • data pamblokiran;
  • ngirim pembayaran;
  • nggawe kontrak anyar;
  • nelpon kontrak liyane.

Ayo goleki watesan sing dileksanakake ing mesin virtual, lan, kanthi mangkono, ngilangi sawetara mitos babagan kontrak cerdas. Ing mesin virtual, sing bisa uga ora mung ing Ethereum, nanging uga ing platform sing padha, sampeyan bisa nindakake operasi logis sing bener-bener kasepakatan, yaiku, nulis kode lan bakal dieksekusi ing kana, sampeyan uga bisa ngalokasi memori. Nanging, ragad dibayar kanthi kapisah kanggo saben operasi lan saben unit tambahan memori sing diparengake.

Sabanjure, mesin virtual bisa maca data saka database blockchain supaya bisa nggunakake data iki minangka pemicu kanggo nglakokake siji utawa liyane logika kontrak pinter. Mesin virtual bisa nggawe lan ngirim transaksi, bisa nggawe kontrak anyar lan cara nelpon kontrak pinter liyane sing wis diterbitake ing jaringan: ana, kasedhiya, etc.

Mitos sing paling umum yaiku kontrak pinter Ethereum bisa nggunakake informasi saka sumber Internet apa wae ing syarat-syarat kasebut. Bebener iku mesin virtual ora bisa ngirim panjalukan jaringan kanggo sawetara sumber informasi external ing Internet, sing, iku mokal kanggo nulis kontrak pinter sing bakal mbagekke Nilai antarane kedhaftar gumantung, ngomong, apa cuaca ing njaba. utawa sing menang sawetara juara, utawa adhedhasar apa kedaden liyane ing donya njaba, amarga informasi bab kedadean iki mung ora ing database saka platform dhewe. Yaiku, ora ana apa-apa ing blockchain babagan iki. Yen ora katon ana, mesin virtual ora bisa nggunakake data iki minangka pemicu.

Kekurangan Ethereum

Ayo dhaptar sing utama. Kerugian pisanan yaiku ana sawetara kesulitan kanggo ngrancang, ngembangake lan nguji kontrak cerdas ing Ethereum (Ethereum nggunakake basa Solidity kanggo nulis kontrak cerdas). Pancen, praktik nuduhake manawa persentase gedhe saka kabeh kesalahan kalebu faktor manungsa. Iki bener bener kanggo kontrak pinter Ethereum sing wis ditulis sing duwe kerumitan rata-rata utawa luwih dhuwur. Yen kanggo kontrak pinter sing prasaja, kemungkinan kesalahan cilik, mula ing kontrak cerdas sing rumit asring ana kesalahan sing nyebabake nyolong dana, pembekuan, karusakan saka kontrak cerdas kanthi cara sing ora dikarepake, lan liya-liyane. dikenal.

Kerugian kapindho yaiku mesin virtual dhewe ora sampurna, amarga uga ditulis dening wong. Bisa nglakokake prentah sing sewenang-wenang, lan ana kerentanan: sawetara prentah bisa dikonfigurasi kanthi cara tartamtu sing bakal nyebabake akibat sing ora dikarepake sadurunge. Iki minangka wilayah sing rumit banget, nanging wis ana sawetara studi sing nuduhake yen kerentanan kasebut ana ing versi jaringan Ethereum saiki lan bisa nyebabake kegagalan akeh kontrak cerdas.

Kangelan gedhe liyane, bisa dianggep minangka kerugian. Iku dumunung ing kasunyatan sing praktis utawa teknis bisa teka menyang kesimpulan yen sampeyan ngumpulake bytecode saka kontrak sing bakal kaleksanan ing mesin virtual, sampeyan bisa nemtokake sawetara urutan tartamtu saka operasi. Nalika dileksanakake bebarengan, operasi iki bakal nemen mbukak mesin virtual lan alon mudhun disproportionately kanggo ragad sing wis mbayar kanggo nindakake operasi iki.

Ing jaman kepungkur, wis ana periode pangembangan Ethereum, nalika akeh wong lanang sing ngerti kanthi rinci babagan operasi mesin virtual nemokake kerentanan kasebut. Ing kasunyatan, transaksi mbayar ragad cilik, nanging sacoro prakteke kalem mudhun kabeh jaringan. Masalah kasebut angel banget kanggo diatasi, amarga perlu, pisanan, kanggo nemtokake, kaping pindho, nyetel rega kanggo nindakake operasi kasebut lan, kaping telu, kanggo nindakake garpu hard, tegese nganyari kabeh simpul jaringan menyang versi anyar. saka piranti lunak, banjur aktivasi simultan saka owah-owahan kasebut.

Minangka kanggo Ethereum, akeh riset wis dileksanakake, akeh pengalaman praktis wis gained: loro positif lan negatif, nanging tetep ana kangelan lan kerentanan sing isih kudu ditangani piye wae.

Dadi, bagean tematik saka artikel wis rampung, ayo pindhah menyang pitakonan sing asring muncul.

Pitakonan Paling Sering

- Yen kabeh pihak ing kontrak pinter ana pengin ngganti syarat, bisa padha mbatalake kontrak pinter iki nggunakake multisig, lan banjur nggawe kontrak pinter anyar karo syarat dianyari eksekusi?

Jawaban ing kene bakal dadi loro. Kenging punapa? Amarga ing tangan siji, kontrak pinter ditetepake sapisan lan ora ana owah-owahan maneh, lan ing sisih liya, bisa duwe logika sing wis ditulis sing nyedhiyakake owah-owahan lengkap utawa sebagian saka sawetara kondisi. Yaiku, yen sampeyan pengin ngganti soko ing kontrak pinter, sampeyan kudu menehi resep kahanan sing bisa nganyari kahanan kasebut. Mulane, mung kanthi cara sing wicaksana bisa dianakake nganyari maneh kontrak. Nanging ing kene sampeyan uga bisa ngalami alangan: nggawe sawetara kesalahan lan entuk kerentanan sing cocog. Mula, prekara-prekara kaya ngono kudu rinci banget lan dirancang lan diuji kanthi ati-ati.

- Apa yen mediator mlebu persetujuan karo salah sawijining pihak sing melu: escrow utawa kontrak pinter? Apa mediator dibutuhake ing kontrak cerdas?

Mediator ora dibutuhake ing kontrak cerdas. Bisa uga ora ana. Yen, ing kasus escrow, mediator mlebu konspirasi karo salah sawijining pihak, mula ya, skema iki banjur ilang kabeh regane. Mulane, mediator dipilih kanthi cara sing dipercaya dening kabeh pihak sing melu proses iki ing wektu sing padha. Mulane, sampeyan mung ora bakal nransfer dhuwit recehan menyang alamat multisignature karo mediator sing ora dipercaya.

— Apa bisa karo siji transaksi Ethereum kanggo nransfer akeh token beda saka alamat menyang alamat target beda, contone, alamat exchange ngendi token iki didol?

Iki minangka pitakonan sing apik lan gegayutan karo model transaksi Ethereum lan kepiye bedane karo model Bitcoin. Lan bedane radikal. Yen ing model transaksi Ethereum sampeyan mung nransfer dhuwit recehan, banjur mung ditransfer saka siji alamat menyang alamat liyane, ora ana owah-owahan, mung jumlah tartamtu sing sampeyan nemtokake. Ing tembung liyane, iki dudu model output sing ora digunakake (UTXO), nanging model akun lan saldo sing cocog. Secara teoritis bisa ngirim sawetara token sing beda-beda ing siji transaksi bebarengan yen sampeyan nulis kontrak cerdas sing licik, nanging sampeyan isih kudu nggawe akeh transaksi, nggawe kontrak, banjur transfer token lan dhuwit recehan, banjur nelpon cara sing cocog. . Iki mbutuhake gaweyan lan wektu, supaya ing laku ora bisa kaya lan kabeh pembayaran ing Ethereum digawe ing transaksi kapisah.

- Salah sawijining mitos babagan platform Ethereum yaiku mokal kanggo njlèntrèhaké kahanan sing bakal gumantung saka data sumber Internet eksternal, dadi apa sing kudu dilakoni?

Solusi kasebut yaiku kontrak cerdas dhewe bisa nyedhiyakake siji utawa luwih sing diarani oracle sing dipercaya, sing ngumpulake data babagan kahanan ing jagad njaba lan ngirim menyang kontrak cerdas liwat metode khusus. Kontrak kasebut dhewe nganggep data sing ditampa saka pihak sing dipercaya bener. Kanggo linuwih luwih, mung milih klompok gedhe saka oracles lan nyilikake risiko collusion sing. Kontrak kasebut bisa uga ora njupuk data saka ramalan sing mbantah mayoritas.

Salah sawijining kuliah kursus online babagan Blockchain dikhususake kanggo topik iki - "Pambuka kanggo Smart Contracts".

Source: www.habr.com

Add a comment