Bubuka pikeun Kontrak Smart

Dina tulisan ieu, urang bakal ningali naon kontrak pinter, naon éta, urang bakal kenal sareng platform kontrak pinter anu béda-béda, fitur-fiturna, sareng ogé ngabahas kumaha aranjeunna tiasa dianggo sareng naon kauntungan anu tiasa aranjeunna bawa. Bahan ieu bakal mangpaat pisan pikeun pamiarsa anu teu wawuh jeung topik kontrak pinter, tapi hayang meunang ngadeukeutan ka pamahaman eta.

Kontrak biasa vs. kontrak pinter

Sateuacan urang ngalenyepan detil, hayu urang nyandak conto bédana antara kontrak biasa, anu ditetepkeun dina kertas, sareng kontrak pinter, anu diwakilan sacara digital.

Bubuka pikeun Kontrak Smart

Kumaha ieu dianggo sateuacan munculna kontrak pinter? Bayangkeun sakelompok jalma anu hoyong netepkeun aturan sareng kaayaan anu tangtu pikeun distribusi nilai, ogé mékanisme anu tangtu pikeun ngajamin palaksanaan distribusi ieu dumasar kana aturan sareng kaayaan anu dipasihkeun. Teras aranjeunna bakal ngumpul, ngagambar kertas dimana aranjeunna nyerat detil idéntifikasina, istilah, nilai anu kalebet, tanggal sareng tandatanganana. Kontrak ieu ogé disertipikasi ku pihak anu dipercaya, sapertos notaris. Salajengna, jalma-jalma ieu angkat ka arah anu béda kalayan salinan kertas kontrak sapertos kitu sareng mimiti ngalaksanakeun sababaraha tindakan anu henteu cocog sareng kontrak éta sorangan, nyaéta, aranjeunna ngalakukeun hiji hal, tapi dina kertas disertipikasi yén aranjeunna kedah ngalakukeun hiji hal. sagemblengna béda. Sareng kumaha carana kaluar tina kaayaan ieu? Nyatana, salah sahiji anggota grup kedah nyandak makalah ieu, nyandak sababaraha bukti, bawa ka pangadilan sareng ngahontal patuh antara kontrak sareng tindakan anu saleresna. Rada sering, hese pikeun ngahontal palaksanaan adil tina kontrak ieu, nu ngabalukarkeun konsékuansi pikaresepeun.

Naon tiasa nyarios ngeunaan kontrak pinter? Aranjeunna ngagabungkeun duanana kamungkinan nulis istilah kontrak jeung mékanisme palaksanaan ketat maranéhanana. Upami kaayaanana parantos diatur sareng transaksi atanapi pamundut anu saluyu parantos ditandatanganan, teras upami pamundut atanapi transaksi éta ditampi, teu mungkin deui ngarobih kaayaan atanapi mangaruhan palaksanaanna.

Aya hiji validator atawa hiji sakabéh jaringan, kitu ogé database nu nyimpen sakabeh kontrak pinter anu dikintunkeun pikeun palaksanaan dina urutan kronologis ketat. Éta ogé penting yén database ieu kudu ngandung sakabéh kaayaan pemicu pikeun executing kontrak pinter. Salaku tambahan, éta kedah tumut kana nilai anu distribusina dijelaskeun dina kontrak. Upami ieu manglaku ka sababaraha mata uang digital, maka pangkalan data ieu kedah dipertimbangkeun.

Dina basa sejen, validators kontrak pinter kudu boga aksés ka sadaya data nu kontrak pinter beroperasi dina. Salaku conto, database tunggal kedah dianggo pikeun akun mata uang digital, kasaimbangan pangguna, transaksi pangguna, sareng cap waktu. Lajeng, dina kontrak pinter, kaayaan bisa jadi kasaimbangan pamaké dina mata uang nu tangtu, datangna waktu nu tangtu, atawa kanyataan yén urus tangtu geus dilumangsungkeun, tapi euweuh deui.

Harti kontrak pinter

Sacara umum, terminologi sorangan diciptakeun ku panalungtik Nick Szabo sarta mimiti dipaké dina 1994, sarta ieu documented dina 1997 dina artikel nu ngajelaskeun pisan gagasan kontrak pinter.

Kontrak pinter nunjukkeun yén sababaraha otomatisasi distribusi nilai dilaksanakeun, anu ngan ukur gumantung kana kaayaan anu tos ditangtukeun sateuacanna. Dina bentuk pangbasajanna, éta sigana kontrak kalayan istilah anu ditetepkeun sacara ketat, anu ditandatanganan ku sababaraha pihak.

Kontrak pinter dirancang pikeun ngaleutikan kapercayaan ka pihak katilu. Kadang-kadang pusat-nyieun kaputusan dimana sagalana gumantung sagemblengna kaasup. Salaku tambahan, kontrak sapertos kitu langkung gampang diaudit. Ieu konsekuensi sababaraha fitur desain sistem kitu, tapi paling sering urang ngartos ku kontrak pinter lingkungan desentralisasi jeung ayana fungsi nu ngidinan saha pikeun nganalisis database jeung ngalaksanakeun Inok pinuh ku palaksanaan kontrak. Ieu ensures panyalindungan ngalawan parobahan data retroactive nu bakal merlukeun parobahan dina kinerja kontrak sorangan. Digitisasi kalolobaan prosés nalika nyiptakeun sareng ngaluncurkeun kontrak pinter sering nyederhanakeun téknologi sareng biaya palaksanaanana.

Hiji conto basajan - jasa Escrow

Hayu urang nempo conto basajan pisan. Éta bakal ngabantosan anjeun langkung caket kana ngartos pungsionalitas kontrak pinter, ogé langkung ngartos dina kasus mana anu kedah dianggo.

Bubuka pikeun Kontrak Smart

Éta ogé tiasa dilaksanakeun nganggo Bitcoin, sanaos ayeuna Bitcoin masih boro tiasa disebat platform pinuh pikeun kontrak pinter. Janten, urang gaduh sababaraha pembeli sareng urang gaduh toko online. A customer hayang meuli monitor ti toko ieu. Dina kasus pangbasajanna, nu meuli ngalengkepan sarta ngirimkeun pamayaran a, sarta toko online narima eta, confirms eta, lajeng ngirimkeun barang. Nanging, dina kaayaan ieu peryogi kapercayaan anu hébat - anu mésér kedah percanten ka toko online pikeun sadaya biaya monitor. Kusabab toko online tiasa gaduh reputasi anu rendah di mata pembeli, aya résiko anu kusabab sababaraha alesan, saatos nampi pamayaran, toko bakal nampik jasa sareng moal ngirim barang ka anu mésér. Ku alatan éta, nu meuli nanya patarosan (jeung, sasuai, toko online nanya sual ieu) naon bisa dilarapkeun dina hal ieu pikeun ngaleutikan resiko misalna jeung nyieun transaksi misalna leuwih dipercaya.

Dina kasus Bitcoin, kasebut nyaéta dimungkinkeun pikeun ngidinan meuli jeung seller ka bebas milih mediator a. Aya seueur jalma anu kalibet dina ngarengsekeun masalah anu kontroversial. Sareng pamilon urang tiasa milih tina daptar umum mediator anu bakal aranjeunna percanten. Babarengan nyieun hiji 2 ti 3 alamat multisignature dimana aya tilu kenop na dua tanda tangan kalayan sagala dua kenop diperlukeun pikeun méakkeun koin ti alamat éta. Hiji konci bakal milik nu meuli, kadua pikeun toko online, sarta katilu pikeun mediator nu. Sareng ka alamat multisignature sapertos kitu, pembeli bakal ngirim jumlah anu diperyogikeun pikeun mayar monitor. Ayeuna, nalika seller ningali yén duit diblokir pikeun sawatara waktu dina alamat multisignature nu gumantung ka anjeunna, anjeunna aman bisa ngirim monitor ku mail.

Salajengna, nu meuli narima parsél, inspects barang jeung nyieun kaputusan dina beuli final. Anjeunna bisa sagemblengna satuju jeung layanan disadiakeun jeung asup transaksi kalayan konci na, dimana anjeunna mindahkeun koin ti alamat multisignature ka seller, atawa manehna bisa jadi sugema ku hal. Dina kasus kadua, anjeunna ngahubungan mediator pikeun nunda babarengan hiji urus alternatif anu bakal ngadistribusikaeun eta koin béda.

Hayu urang nyebutkeun monitor anjog saeutik scratched na kit teu kaasup kabel pikeun nyambungkeun ka komputer, sanajan ramatloka toko online ngomong yén kabel kudu kaasup kana kit. Lajeng nu meuli ngumpulkeun bukti diperlukeun pikeun ngabuktikeun ka mediator yén anjeunna ditipu dina kaayaan ieu: anjeunna nyandak Potret layar situs, nyandak poto resi mail, nyandak poto goresan dina monitor jeung nembongkeun yen segel éta. putus jeung kabel ditarik kaluar. Toko online, kahareupna ngumpulkeun buktina sareng mindahkeun ka mediator.

Mediator museurkeun sakaligus satisfying duanana indignation pembeli sarta kapentingan toko online (eta bakal jadi jelas naha engké). Ieu constitutes urus nu koin ti alamat multisignature bakal spent dina sababaraha proporsi antara meuli, toko online tur mediator, saprak manehna nyokot porsi keur dirina salaku ganjaran pikeun karyana. Sebutkeun 90% tina total jumlahna ka anu ngajual, 5% ka mediator sareng 5% kompensasi ka anu mésér. Mediator nandatanganan transaksi ieu kalawan konci na, tapi teu acan bisa dilarapkeun, sabab merlukeun dua tanda tangan, tapi ngan hiji patut eta. Éta ngirimkeun transaksi sapertos kitu ka anu mésér sareng anu ngajual. Upami sahenteuna salah sahijina wareg sareng pilihan ieu pikeun ngadistribusikaeun koin, maka transaksi bakal tos ditandatanganan sareng disebarkeun ka jaringan. Pikeun ngesahkeun éta, cukup yén salah sahiji pihak pikeun transaksi satuju sareng pilihan mediator.

Kadé mimitina milih mediator a sangkan duanana pamilon percanten anjeunna. Dina hal ieu, anjeunna bakal meta bebas tina kapentingan hiji atawa lianna sarta obyektif assess kaayaan. Lamun mediator teu nyadiakeun pilihan pikeun ngadistribusikaeun koin nu bakal nyugemakeun sahanteuna hiji pamilon, lajeng, sanggeus sapuk babarengan, duanana nu meuli jeung toko online bisa ngirim koin ka alamat multisignature anyar ku putting dua tanda tangan maranéhanana. Alamat multisignature anyar bakal disusun ku mediator béda, anu bisa jadi leuwih kompeten dina masalah jeung nyadiakeun pilihan hadé.

Contona jeung asrama jeung kulkas

Hayu urang tingali conto anu langkung kompleks anu nunjukkeun kamampuan kontrak pinter sacara langkung eksplisit.

Bubuka pikeun Kontrak Smart

Sebutkeun aya tilu lalaki anu nembe pindah ka kamar asrama anu sami. Tiluanana resep ngagaleuh kulkas kanggo kamarna anu tiasa dianggo babarengan. Salah sahijina sukarela ngumpulkeun jumlah diperlukeun keur meuli kulkas jeung negotiate jeung seller. Nanging, aranjeunna nembé patepang sareng teu aya kapercayaan anu cekap diantara aranjeunna. Jelas, dua di antarana nyandak resiko ku cara méré duit ka katilu. Sajaba ti éta, maranéhna kudu ngahontal kasapukan dina milih seller a.

Éta tiasa nganggo jasa escrow, nyaéta, milih mediator anu bakal ngawas palaksanaan transaksi sareng ngabéréskeun masalah kontroversial upami timbul. Lajeng, sanggeus sapuk, nyieun kontrak pinter jeung nulis resep kaayaan nu tangtu.

Syarat kahiji nyaéta sateuacan waktos anu tangtu, sebutkeun dina saminggu, akun kontrak pinter anu saluyu kedah nampi tilu pangmayaran ti alamat anu tangtu pikeun jumlah anu tangtu. Upami ieu henteu kajantenan, kontrak pinter ngeureunkeun ngalaksanakeun sareng ngabalikeun koin ka sadaya pamilon. Upami kondisina kapendak, maka nilai-nilai anu ngajual sareng idéntifikasi mediator diatur, sareng kaayaan dipariksa yén sadaya pamilon satuju sareng pilihan anu ngajual sareng mediator. Nalika sadaya kaayaan parantos kacumponan, maka dana bakal dialihkeun ka alamat anu ditangtukeun. Pendekatan ieu tiasa ngajagi pamilon tina panipuan ti mana waé sareng umumna ngaleungitkeun kabutuhan kapercayaan.

Urang tingali dina conto ieu pisan prinsip yén kamampuhan ieu hambalan-demi-hambalan set parameter pikeun minuhan unggal kaayaan ngidinan Anjeun pikeun nyieun sistem sagala pajeulitna sarta jero tingkat nested. Sajaba ti éta, Anjeun mimitina bisa nangtukeun kaayaan munggaran dina kontrak pinter, sarta ngan sanggeus minuhan na anjeun tiasa nyetel parameter pikeun kaayaan salajengna. Dina basa sejen, kaayaan ieu sacara resmi ditulis, sarta parameter pikeun eta bisa diatur geus salila operasi na.

Klasifikasi kontrak pinter

Pikeun klasifikasi, anjeun tiasa nyetél kritéria kelompok anu béda. Nanging, dina waktos kamekaran téknologi, opat di antarana relevan.

Kontrak pinter tiasa dibédakeun ku lingkungan palaksanaanna, anu tiasa terpusat atanapi desentralisasi. Dina kasus desentralisasi, urang gaduh kamerdikaan anu langkung ageung sareng kasabaran kasalahan nalika ngalaksanakeun kontrak pinter.

Éta ogé tiasa dibédakeun ku prosés netepkeun sareng minuhan kaayaan: aranjeunna tiasa diprogram sacara bébas, kawates atanapi tos siap, nyaéta diketik sacara ketat. Nalika ngan ukur aya 4 kontrak pinter khusus dina platform kontrak pinter, parameter pikeun aranjeunna tiasa diatur ku cara naon waé. Sasuai, netepkeun aranjeunna langkung saderhana: urang milih kontrak tina daptar sareng lulus parameter.

Numutkeun kana metode inisiasi, aya kontrak pinter otomatis, nyaéta, nalika aya kaayaan anu tangtu, aranjeunna ngalaksanakeun diri, sareng aya kontrak dimana kaayaanna ditetepkeun, tapi platformna henteu otomatis mariksa minuhanna; pikeun ieu aranjeunna perlu dimimitian misah.

Salaku tambahan, kontrak pinter beda-beda dina tingkat privasina. Éta tiasa janten lengkep kabuka, sawaréh atanapi lengkep rahasia. Anu terakhir hartosna pengamat pihak katilu henteu ningali syarat kontrak pinter. Nanging, topik privasi lega pisan sareng langkung saé pikeun nganggap hal éta misah tina tulisan ayeuna.

Di handap ieu urang bakal nyandak katingal ngadeukeutan dina tilu kriteria munggaran pikeun mawa leuwih kajelasan kana pamahaman topik ayeuna.

Kontrak pinter ku runtime

Bubuka pikeun Kontrak Smart

Dumasar kana lingkungan palaksanaan, bédana dilakukeun antara platform kontrak pinter terpusat sareng desentralisasi. Dina kasus kontrak digital terpusat, jasa tunggal dipaké, dimana ngan aya hiji validator sarta meureun aya cadangan tur recovery jasa, nu ogé diurus sentral. Aya hiji pangkalan data anu nyimpen sadaya inpormasi anu dipikabutuh pikeun netepkeun syarat kontrak pinter sareng ngadistribusikaeun nilai anu dipertimbangkeun dina pangkalan data jasa ieu. Palayanan terpusat sapertos kitu ngagaduhan klien anu netepkeun kaayaan sareng paménta anu tangtu sareng nganggo kontrak sapertos kitu. Alatan sipat terpusat tina platform, mékanisme auténtikasi bisa jadi kirang aman ti di cryptocurrencies.

Salaku conto, urang tiasa nyandak panyadia komunikasi sélulér (operator sélulér anu béda). Hayu urang nyebutkeun yén operator tangtu nyimpen rékaman terpusat patalimarga dina server na, nu bisa dikirimkeun dina format béda, contona: dina bentuk panggero sora, pangiriman SMS, lalulintas Internet mobile, sarta nurutkeun standar béda, sarta ogé ngajaga rékaman. tina dana on balances pamaké. Sasuai, panyadia komunikasi sélulér tiasa ngadamel kontrak pikeun akuntansi pikeun jasa anu disayogikeun sareng pamayaranna kalayan kaayaan anu béda. Dina hal ieu, gampang pikeun nyetél kaayaan sapertos "ngirim SMS nganggo kode sapertos kitu ka nomer sapertos kitu sareng anjeun bakal nampi kaayaan sapertos kitu pikeun distribusi lalu lintas."

Hiji conto deui tiasa dipasihkeun: bank tradisional kalayan pungsionalitas perbankan Internét anu diperluas sareng kontrak anu saderhana pisan sapertos pamayaran biasa, konvérsi otomatis pangmayaran anu datang, pangurangan bunga otomatis kana rekening anu ditangtukeun, jsb.

Upami urang nyarioskeun kontrak pinter sareng lingkungan palaksanaan desentralisasi, maka urang gaduh grup validator. Ideally, saha bisa jadi validator a. Alatan protokol sinkronisasi database jeung ngahontal konsensus, urang boga sababaraha database umum nu ayeuna bakal nyimpen sakabeh transaksi jeung kontrak dijelaskeun mastikeun, jeung teu sababaraha queries kondisional, format nu mindeng robah, jeung teu aya spésifikasi muka. Di dieu, transaksi bakal ngandung paréntah pikeun ngaéksekusi kontrak numutkeun spésifikasi anu ketat. Spésifikasi ieu kabuka sareng, ku kituna, pangguna platform nyalira tiasa ngaudit sareng ngasahkeun kontrak pinter. Di dieu urang ningali yén platform desentralisasi langkung unggul tibatan anu terpusat dina hal kamerdikaan sareng kasabaran kasalahan, tapi desain sareng pangropéana langkung rumit.

Kontrak pinter ku cara netepkeun sareng minuhan kaayaan

Ayeuna hayu urang tingali kumaha kontrak pinter tiasa bénten dina cara nyetél sareng minuhan kaayaan. Di dieu urang museurkeun kana kontrak pinter anu sacara acak tiasa diprogram sareng Turing lengkep. A kontrak pinter Turing-lengkep ngidinan Anjeun pikeun ngeset ampir sagala algoritma salaku kaayaan pikeun palaksanaan kontrak: siklus nulis, sababaraha fungsi keur ngitung probabiliti, sarta kawas - langsung ka algoritma signature éléktronik sorangan. Dina hal ieu, urang maksudna sabenerna wenang nulis logika.

Aya ogé kontrak pinter sawenang, tapi teu Turing lengkep. Ieu kalebet Bitcoin sareng Litecoin kalayan naskahna sorangan. Ieu ngandung harti yén anjeun ngan ukur tiasa nganggo operasi anu tangtu dina urutan naon waé, tapi anjeun henteu tiasa deui nyerat puteran sareng algoritma anjeun nyalira.

Salaku tambahan, aya platform kontrak pinter anu ngalaksanakeun kontrak pinter anu tos ditetepkeun. Ieu kalebet Bitshares sareng Steemit. Bitshares boga sauntuyan kontrak pinter pikeun dagang, manajemén akun, manajemén platform sorangan jeung parameter na. Steemit mangrupikeun platform anu sami, tapi henteu deui difokuskeun kana ngaluarkeun token sareng dagang, sapertos Bitshares, tapi dina blogging, nyaéta nyimpen sareng ngolah eusi sacara desentralisasi.

Sawenang kontrak Turing-lengkep kaasup platform Ethereum na RootStock, nu masih dina ngembangkeun. Ku alatan éta, di handap urang bakal Huni di jéntré saeutik dina platform kontrak pinter Ethereum.

Kontrak pinter ku metode inisiasi

Dumasar kana metode inisiasi, kontrak pinter ogé tiasa dibagi kana sahenteuna dua kelompok: otomatis sareng manual (henteu otomatis). Anu otomatis dicirikeun ku kanyataan yén, tinangtu sadaya parameter sareng kaayaan anu dipikanyaho, kontrak pinter sacara otomatis dieksekusi sacara otomatis, nyaéta, éta henteu meryogikeun ngirim transaksi tambahan sareng ngaluarkeun komisi tambahan dina unggal palaksanaan salajengna. Platform sorangan gaduh sadayana data pikeun ngitung kumaha kontrak pinter bakal réngsé. Logika aya teu sawenang-wenang, tapi predetermined tur sagala ieu bisa diprediksi. Nyaéta, anjeun tiasa ngira-ngira sateuacanna pajeulitna ngalaksanakeun kontrak pinter, nganggo sababaraha komisi konstan pikeun éta, sareng sadaya prosés pikeun palaksanaanna langkung éfisién.

Pikeun kontrak pinter anu diprogram sacara bébas, palaksanaan henteu otomatis. Pikeun ngamimitian kontrak pinter sapertos kitu, dina ampir unggal léngkah anjeun kedah nyiptakeun transaksi énggal, anu bakal nyauran tahap palaksanaan salajengna atanapi metode kontrak pinter salajengna, mayar komisi anu pas sareng ngantosan transaksi dikonfirmasi. Palaksanaan tiasa suksés atanapi henteu, sabab kode kontrak pinter sawenang-wenang sareng sababaraha waktos anu teu tiasa diprediksi tiasa muncul, sapertos loop anu langgeng, kurangna sababaraha parameter sareng argumen, pengecualian anu teu diurus, jsb.

Akun Ethereum

Jenis Akun Ethereum

Hayu urang tingali naon jinis akun anu tiasa aya dina platform Ethereum. Aya ngan ukur dua jinis akun di dieu sareng teu aya pilihan sanés. Jenis kahiji disebut akun pamaké, kadua - akun kontrak. Hayu urang terang kumaha aranjeunna béda.

Rekening pamaké dikawasa ngan ku konci pribadi tina tanda tangan éléktronik. Pamilik akun ngahasilkeun pasangan konci sorangan pikeun tanda tangan éléktronik nganggo algoritma ECDSA (Elliptic Curve Digital Signature Algorithm). Ngan transaksi anu ditandatanganan ku konci ieu tiasa ngarobih kaayaan akun ieu.

Logika anu misah disayogikeun pikeun akun kontrak pinter. Ieu ngan bisa dikawasa ku kode software siap pake nu lengkep nangtukeun paripolah kontrak pinter: kumaha eta bakal ngatur koin na dina kaayaan nu tangtu, dina prakarsa nu pamaké sarta dina kaayaan tambahan naon koin ieu bakal disebarkeun. Upami sababaraha titik henteu disayogikeun ku pamekar dina kode program, masalah tiasa timbul. Salaku conto, kontrak pinter tiasa nampi kaayaan anu tangtu dimana éta henteu nampi inisiasi palaksanaan salajengna ti salah sahiji pangguna. Dina hal ieu, koin sabenerna bakal beku, sabab kontrak pinter teu nyadiakeun keur exiting kaayaan ieu.

Kumaha rekening dijieun dina Ethereum

Dina kasus akun pamaké, nu boga bebas ngahasilkeun pasangan konci ngagunakeun ECDSA. Kadé dicatet yén Ethereum ngagunakeun persis algoritma sarua jeung persis kurva elliptic sarua pikeun tanda tangan éléktronik salaku Bitcoin, tapi alamatna diitung dina cara rada béda. Di dieu, hasil tina hashing ganda henteu deui dipaké, sakumaha dina Bitcoin, tapi hashing tunggal disadiakeun kalawan fungsi Keccak dina panjangna 256 bit. Bit-bit anu paling henteu signifikan dipotong tina nilai anu dihasilkeun, nyaéta 160 bit anu paling signifikan tina nilai hash kaluaran. Hasilna, urang meunang alamat di Ethereum. Nyatana, butuh 20 bait.

Perhatikeun yén identifier akun di Ethereum disandikeun dina hex tanpa nerapkeun checksum a, teu kawas Bitcoin sarta loba sistem lianna, dimana alamatna disandikeun dina sistem angka dasar 58 ditambah checksum a. Ieu ngandung harti yén anjeun kudu ati-ati nalika gawé bareng identifiers akun di Ethereum: malah hiji kasalahan dina identifier dijamin ngakibatkeun leungitna koin.

Aya fitur anu penting sareng nyaéta yén akun pangguna dina tingkat pangkalan data umum didamel dina waktos anjeunna nampi pangmayaran anu munggaran.

Nyiptakeun akun kontrak pinter butuh pendekatan anu béda-béda. Dina awalna, salah sahiji pamaké nulis kodeu sumber kontrak pinter, nu satutasna kodeu ngaliwatan compiler husus pikeun platform Ethereum, meunangkeun bytecode pikeun mesin virtual Ethereum sorangan. Bytecode anu dihasilkeun disimpen dina widang husus tina transaksi. Ieu Certified atas nama akun inisiator urang. Salajengna, urus ieu propagated sakuliah jaringan jeung nempatkeun kodeu kontrak pinter. Komisi pikeun transaksi sareng, sasuai, pikeun palaksanaan kontrak ditarik tina kasaimbangan akun initiator.

Unggal kontrak pinter merta ngandung constructor sorangan (kontrak ieu). Bisa jadi kosong atawa bisa boga eusi. Saatos konstruktor dieksekusi, a identifier akun kontrak pinter dijieun, ngagunakeun nu bisa ngirim koin, nelepon métode kontrak pinter tangtu, jsb.

Struktur Transaksi Ethereum

Pikeun langkung jelas, urang bakal mimiti ningali struktur transaksi Ethereum sareng conto kode kontrak pinter.

Bubuka pikeun Kontrak Smart

Transaksi Ethereum diwangun ku sababaraha widang. Kahiji tina ieu, nonce, mangrupakeun angka serial tangtu urus relatif ka akun sorangan nu distributes eta tur mangrupakeun panulis na. Ieu diperlukeun guna ngabedakeun transaksi ganda, nyaeta, ngaluarkeun kasus lamun transaksi sarua geus katampa dua kali. Ku ngagunakeun identifier, unggal transaksi gaduh nilai hash anu unik.

Salajengna asalna widang kawas harga bénsin. Ieu nunjukkeun harga di mana mata uang basa Ethereum dirobah jadi gas, nu dipaké pikeun mayar palaksanaan kontrak pinter jeung alokasi sumberdaya mesin virtual. Naon éta hartosna?

Dina Bitcoin, waragad dibayar langsung ku mata uang dasar-Bitcoin sorangan. Ieu mungkin berkat mékanisme basajan pikeun ngitung aranjeunna: urang mayar mastikeun pikeun jumlah data anu dikandung dina urus. Dina Ethereum kaayaan téh leuwih pajeulit, sabab hésé pisan ngandelkeun volume data urus. Di dieu, urus ogé bisa ngandung kode program anu bakal dieksekusi dina mesin virtual, sarta unggal operasi tina mesin virtual bisa boga pajeulitna béda. Aya ogé operasi anu allocate memori pikeun variabel. Aranjeunna bakal gaduh pajeulitna sorangan, dimana pamayaran pikeun tiap operasi bakal gumantung.

Biaya unggal operasi dina sarimbag gas bakal konstan. Ieu diwanohkeun husus dina raraga nangtukeun biaya konstan unggal operasi. Gumantung kana beban dina jaringan, harga gas bakal robih, nyaéta, koefisien numutkeun kana mata uang dasarna bakal dirobih kana unit bantu ieu pikeun mayar komisi.

Aya hiji deui fitur urus di Ethereum: bytecode nu ngandung pikeun palaksanaan dina mesin virtual bakal dieksekusi nepi ka ngalengkepan sababaraha hasil (sukses atawa gagal) atawa nepi ka jumlah nu tangtu koin dialokasikeun béak pikeun mayar komisi. . Éta pikeun ngahindarkeun kaayaan dimana, upami aya kasalahan, sadaya koin tina akun pangirim diséépkeun pikeun komisi (contona, sababaraha jinis siklus abadi dimimitian dina mesin virtual), sawah di handap ieu aya - ngamimitian gas (mindeng disebut wates gas) - eta nangtukeun jumlah maksimum koin nu ngirim nu daék méakkeun pikeun ngalengkepan hiji urus tangtu.

Widang salajengna disebut alamat tujuan. Ieu kalebet alamat panampi koin atanapi alamat kontrak pinter khusus anu metodena bakal disebut. Sanggeus éta datang ka sawah ajen, dimana jumlah koin anu dikirim ka alamat tujuan diasupkeun.

Salajengna nyaeta widang metot disebut data, dimana sakabeh struktur pas. Ieu sanes widang misah, tapi sakabeh struktur nu kode pikeun mesin virtual diartikeun. Anjeun tiasa nempatkeun data sawenang di dieu - aya aturan anu misah pikeun ieu.

Jeung widang panungtungan disebut tekenan. Éta sakaligus ngandung duanana tanda tangan éléktronik panulis transaksi ieu sareng konci umum anu tandatangan ieu bakal diverifikasi. Tina konci umum anjeun tiasa nampi identifier akun pangirim transaksi ieu, nyaéta, sacara unik ngaidentipikasi akun pangirim dina sistem sorangan. Urang kapanggih kaluar hal utama ngeunaan struktur urus.

Conto kode kontrak pinter pikeun Solidity

Hayu urang tingali langkung caket kana kontrak pinter pangbasajanna nganggo 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);
    }
}

Di luhur mangrupikeun kode sumber saderhana anu tiasa nahan koin pangguna sareng ngabalikeunana upami diperyogikeun.

Janten, aya kontrak pinter Bank anu ngalaksanakeun fungsi di handap ieu: ngumpulkeun koin dina kasaimbanganna, nyaéta, nalika transaksi dikonfirmasi sareng kontrak pinter sapertos ditempatkeun, akun énggal didamel anu tiasa ngandung koin dina kasaimbanganna; eta emut pamaké sarta sebaran koin antara aranjeunna; boga sababaraha métode pikeun ngatur kasaimbangan, nyaeta, kasebut nyaéta dimungkinkeun pikeun replenish, mundur tur pariksa kasaimbangan pamaké.

Hayu urang ngaliwat unggal baris kode sumber. kontrak ieu boga widang konstan. Salah sahijina, kalayan alamat tipe, disebut boga. Di dieu kontrak émut alamat pangguna anu nyiptakeun kontrak pinter ieu. Salajengna, aya struktur dinamis anu ngajaga susuratan antara alamat pamaké sarta kasaimbangan.

Ieu dituturkeun ku métode Bank - eta boga ngaran sarua salaku kontrak. Sasuai, ieu constructor na. Di dieu variabel juragan ditugaskeun alamat jalma anu nempatkeun kontrak pinter ieu dina jaringan. Ieu hiji-hijina hal anu lumangsung dina constructor ieu. Hartina, msg dina hal ieu persis data anu ditransfer ka mesin virtual babarengan jeung urus ngandung sakabéh kode tina kontrak ieu. Sasuai, msg.sender mangrupikeun panulis transaksi ieu anu nyayogikeun kode ieu. Anjeunna bakal boga kontrak pinter.

Metodeu deposit ngamungkinkeun anjeun nransper sababaraha koin kana akun kontrak ku urus. Dina hal ieu, kontrak pinter, narima koin ieu, ninggalkeun eta dina neraca na, tapi catetan dina struktur balances saha persis nu ngirim koin ieu dina urutan uninga saha aranjeunna milik.

Metodeu salajengna disebut mundur sareng peryogi hiji parameter - jumlah koin anu hoyong ditarik ku batur ti bank ieu. Ieu pariksa naha aya cukup koin dina kasaimbangan pamaké anu nelepon metoda ieu pikeun ngirim aranjeunna. Upami aranjeunna cekap, maka kontrak pinter nyalira ngabalikeun jumlah koin ka anu nelepon.

Salajengna asalna metodeu pikeun mariksa kasaimbangan ayeuna pamaké. Saha waé anu nyauran metode ieu bakal dianggo pikeun nyandak kasaimbangan ieu dina kontrak pinter. Eta sia noting yén modifier tina metoda ieu téh view. Ieu ngandung harti yén métode sorangan teu ngarobah variabel kelas na sagala cara jeung éta sabenerna ukur metoda baca. Taya urus misah dijieun pikeun nelepon metoda ieu, euweuh fee dibayar, sarta sakabeh itungan anu dipigawé lokal, nu satutasna pamaké narima hasilna.

Metodeu maéhan diperyogikeun pikeun ngancurkeun kaayaan kontrak pinter. Sareng di dieu aya pamariksaan tambahan naha panelepon metode ieu mangrupikeun pamilik kontrak ieu. Lamun kitu, kontrak timer destructs, sarta fungsi karuksakan nyokot hiji parameter - nu identifier akun nu kontrak bakal ngirim sakabéh koin sésana dina kasaimbangan na. Dina hal ieu, koin sésana bakal otomatis balik ka alamat nu boga kontrak.

Kumaha titik pinuh dina jaringan Ethereum dianggo?

Hayu urang tingali sacara skematis kumaha kontrak pinter sapertos dieksekusi dina platform Ethereum sareng kumaha jalanna jaringan pinuh.

Bubuka pikeun Kontrak Smart

A titik pinuh dina jaringan Ethereum kudu boga sahanteuna opat modul.
Anu kahiji, sakumaha pikeun protokol desentralisasi, nyaéta modul jaringan P2P - modul pikeun sambungan jaringan sareng dianggo sareng titik anu sanés, dimana blok, transaksi, sareng inpormasi ngeunaan titik anu sanés ditukeurkeun. Ieu komponén tradisional pikeun sakabéh cryptocurrencies desentralisasi.

Salajengna, urang gaduh modul pikeun nyimpen data blockchain, ngolah, milih cabang prioritas, nambahkeun blok, unlinking blok, validating blok ieu, jsb.

Modul katilu disebut EVM (mesin virtual Ethereum) - ieu mesin virtual nu narima bytecode tina transaksi Ethereum. Modul ieu nyandak kaayaan akun tinangtu ayeuna sareng ngarobih kaayaanana dumasar kana bytecode anu ditampi. Versi mesin virtual dina unggal titik jaringan kedah sami. Itungan anu lumangsung dina unggal titik Ethereum persis sarua, tapi lumangsung dina ragam Asynchronous: batur cek sarta narima transaksi ieu saméméhna, nyaeta, executes sakabeh kode anu dikandung dina eta, sarta batur engké. Sasuai, nalika transaksi dijieun, éta disebarkeun ka jaringan, titik narima eta, sarta dina waktu verifikasi, dina cara nu sarua yén Bitcoin Script ieu dieksekusi dina Bitcoin, nu bytecode tina mesin virtual dieksekusi dieu.

Transaksi dianggap diverifikasi upami sadaya kode anu aya di jerona parantos dieksekusi, kaayaan énggal tina akun anu tangtu parantos dihasilkeun sareng disimpen dugi ka écés naha transaksi ieu parantos dilarapkeun atanapi henteu. Upami transaksi diterapkeun, maka kaayaan ieu dianggap henteu ngan ukur réngsé, tapi ogé ayeuna. Aya database anu nyimpen kaayaan unggal akun pikeun tiap titik jaringan. Kusabab kanyataan yén sadaya itungan lumangsung dina cara anu sami sareng kaayaan blockchain sami, pangkalan data anu ngandung kaayaan sadaya akun ogé bakal sami pikeun unggal titik.

Mitos sareng watesan kontrak pinter

Sedengkeun pikeun larangan anu aya pikeun platform kontrak pinter anu sami sareng Ethereum, ieu tiasa dicutat:

  • palaksanaan kode;
  • alokasi memori;
  • data blockchain;
  • ngirim pangmayaran;
  • nyieun kontrak anyar;
  • nelepon kontrak séjén.

Hayu urang tingali larangan anu ditumpukeun dina mesin virtual, sareng, sasuai, ngaleungitkeun sababaraha mitos ngeunaan kontrak pinter. Dina mesin virtual, nu bisa jadi teu ngan di Ethereum, tapi ogé dina platform sarupa, Anjeun bisa ngalakukeun operasi logis sabenerna sawenang, nyaeta, nulis kode jeung eta bakal dieksekusi di dinya, Anjeun ogé bisa allocate memori. Sanajan kitu, fee éta dibayar misah pikeun tiap operasi sarta unggal Unit tambahan memori disadiakeun.

Salajengna, mesin virtual tiasa maca data tina database blockchain pikeun ngagunakeun data ieu salaku pemicu pikeun ngaéksekusi hiji atanapi logika kontrak pinter anu sanés. Mesin virtual tiasa nyiptakeun sareng ngirim transaksi, éta tiasa nyiptakeun kontrak anyar sareng metode panggero kontrak pinter sanés anu parantos diterbitkeun dina jaringan: aya, sayogi, jsb.

Mitos anu paling umum nyaéta yén kontrak pinter Ethereum tiasa ngagunakeun inpormasi tina sumber Internét naon waé dina istilahna. Kabeneran aya mesin virtual teu tiasa ngirim pamundut jaringan ka sababaraha sumber inpormasi éksternal dina Internét, nyaéta, mustahil nyerat kontrak pinter anu bakal ngadistribusikaeun nilai antara pangguna gumantung, sebutkeun, kumaha cuaca di luar. atawa anu meunang sababaraha kajawaraan, atawa dumasar kana naon kajadian séjén kajadian di dunya luar, sabab informasi ngeunaan kajadian ieu ngan saukur teu aya dina database tina platform sorangan. Hartina, teu aya nanaon dina blockchain ngeunaan ieu. Upami éta henteu muncul, maka mesin virtual moal tiasa nganggo data ieu salaku pemicu.

Kakurangan Ethereum

Hayu urang daptar nu utama. Nu disadvantage kahiji nyaeta aya sababaraha kasusah dina ngarancang, ngamekarkeun jeung nguji kontrak pinter dina Ethereum (Ethereum ngagunakeun basa Solidity nulis kontrak pinter). Mémang, prakték nunjukkeun yén perséntase anu ageung tina sadaya kasalahan kalebet faktor manusa. Ieu sabenerna bener keur geus ditulis kontrak pinter Ethereum nu boga pajeulitna rata atawa luhur. Lamun pikeun kontrak pinter basajan kamungkinan kasalahan leutik, mangka dina kontrak pinter kompléks sering pisan kasalahan anu ngakibatkeun maling dana, katirisan maranéhanana, karuksakan kontrak pinter dina cara teu kaduga, jsb Loba kasus kawas geus dipikanyaho.

The disadvantage kadua yén mesin virtual sorangan teu sampurna, saprak éta ogé ditulis ku jalma. Éta tiasa ngalaksanakeun paréntah sawenang-wenang, sareng di dinya aya kerentanan: sajumlah paréntah tiasa dikonpigurasi dina cara anu tangtu anu bakal ngakibatkeun akibat anu teu kaduga sateuacanna. Ieu mangrupikeun daérah anu kompleks, tapi parantos aya sababaraha panilitian anu nunjukkeun yén kerentanan ieu aya dina versi ayeuna tina jaringan Ethereum sareng aranjeunna tiasa ngakibatkeun gagalna seueur kontrak pinter.

kasusah badag sejen, eta bisa dianggap disadvantage a. Éta perenahna di kanyataan yén anjeun praktis atanapi téhnisna bisa datang ka kacindekan yen lamun compile nu bytecode tina kontrak anu bakal dieksekusi dina mesin virtual, Anjeun bisa nangtukeun sababaraha urutan husus tina operasi. Nalika dilaksanakeun babarengan, operasi ieu bakal ngamuat pisan kana mesin virtual sareng ngalambatkeunana sacara teu saimbang sareng biaya anu dibayar pikeun ngalaksanakeun operasi ieu.

Baheula, geus aya jaman dina ngembangkeun Ethereum, nalika loba guys anu ngarti di jéntré operasi mesin virtual kapanggih vulnerabilities misalna. Kanyataanna, transaksi mayar fee pisan leutik, tapi praktis ngalambatkeun turun sakabéh jaringan. Masalah ieu hésé pisan direngsekeun, sabab perlu, mimitina, pikeun nangtukeunana, kadua, pikeun nyaluyukeun harga pikeun ngalaksanakeun operasi ieu sareng, katilu, ngalaksanakeun garpu teuas, anu hartosna ngamutahirkeun sadaya titik jaringan kana versi énggal. software, lajeng aktivasina simultaneous tina parobahan ieu.

Sedengkeun pikeun Ethereum, loba panalungtikan geus dilumangsungkeun, loba pangalaman praktis geus miboga: duanana positif jeung negatif, tapi tetep aya kasusah jeung vulnerabilities nu masih kudu diurus kumaha bae.

Janten, bagian tematik tina tulisan parantos réngsé, hayu urang teraskeun kana patarosan anu sering muncul.

Ditanyakeun sering

- Upami sadaya pihak dina kontrak pinter anu tos aya hoyong ngarobih syaratna, tiasa aranjeunna ngabatalkeun kontrak pinter ieu nganggo multisig, teras ngadamel kontrak pinter énggal kalayan syarat-syarat palaksanaan anu diropéa?

Jawaban di dieu bakal dua kali. Naha? Kusabab di hiji sisi, kontrak pinter dihartikeun sakali sarta eta euweuh ngakibatkeun parobahan naon, sarta di sisi séjén, éta bisa mibanda logika pre-tulisan nu nyadiakeun keur parobahan lengkep atanapi parsial sababaraha kaayaan. Nyaéta, upami anjeun hoyong ngarobih hiji hal dina kontrak pinter anjeun, maka anjeun kedah resep kaayaan dimana anjeun tiasa ngapdet kaayaan ieu. Sasuai, ngan ku cara prudent sapertos kitu tiasa dikelompokeun pembaharuan kontrak. Tapi di dieu ogé, anjeun tiasa ngalaman masalah: ngalakukeun sababaraha kasalahan sareng kéngingkeun kerentanan anu saluyu. Ku sabab kitu, hal-hal sapertos kitu kedah rinci pisan sareng dirarancang sareng diuji sacara saksama.

— Kumaha lamun mediator asup kana hiji perjangjian jeung salah sahiji pihak milu: escrow atawa kontrak pinter? Naha mediator diperyogikeun dina kontrak pinter?

A mediator teu diperlukeun dina kontrak pinter. Bisa jadi teu aya. Lamun, dina kasus escrow, mediator asup kana konspirasi jeung salah sahiji pihak, lajeng enya, skéma ieu lajeng sharply leungiteun sagala nilai na. Ku alatan éta, mediator dipilih ku cara anu aranjeunna dipercaya ku sadaya pihak anu kalibet dina prosés ieu dina waktos anu sami. Sasuai, anjeun ngan saukur moal mindahkeun koin ka alamat multisignature kalawan mediator nu teu percanten ka.

— Naha mungkin ku hiji transaksi Ethereum pikeun mindahkeun seueur token anu béda tina alamat anjeun ka alamat target anu béda, contona, alamat bursa dimana token ieu didagangkeun?

Ieu mangrupikeun patarosan anu saé sareng éta ngeunaan modél transaksi Ethereum sareng kumaha bédana sareng modél Bitcoin. Jeung bédana radikal. Upami dina modél transaksi Ethereum anjeun ngan saukur mindahkeun koin, teras aranjeunna ngan ukur ditransfer ti hiji alamat ka alamat anu sanés, henteu aya perobihan, ngan ukur jumlah khusus anu anjeun jelaskeun. Kalayan kecap séjén, ieu téh lain modél kaluaran unspent (UTXO), tapi modél rekening na balances pakait. Sacara téoritis mungkin pikeun ngirim sababaraha token anu béda dina hiji transaksi sakaligus upami anjeun nyerat kontrak pinter anu licik, tapi anjeun masih kedah ngalakukeun seueur transaksi, ngadamel kontrak, teras mindahkeun token sareng koin ka dinya, teras nyauran metode anu cocog. . Ieu merlukeun usaha jeung waktu, jadi dina prakna teu dianggo kawas éta sarta sakabeh pangmayaran di Ethereum dilakukeun dina transaksi misah.

- Salah sahiji mitos ngeunaan platform Ethereum nyaéta mustahil pikeun ngajelaskeun kaayaan anu bakal gumantung kana data sumber Internét éksternal, janten naon anu kedah dilakukeun?

Leyuran nyaéta yén kontrak pinter sorangan bisa nyadiakeun hiji atawa leuwih disebut oracles dipercaya, nu ngumpulkeun data ngeunaan kaayaan di dunya luar sarta ngirimkeun ka kontrak pinter ngaliwatan métode husus. Kontrak sorangan nganggap data anu ditampi ti pihak anu dipercaya leres. Pikeun reliabilitas anu langkung ageung, kantun milih sakelompok anu ageung sareng ngaminimalkeun résiko kolusina. Kontrak sorangan teu tiasa tumut kana akun data tina oracles anu bertentangan sareng mayoritas.

Salah sahiji ceramah tina kursus online dina Blockchain dikhususkeun pikeun topik ieu - "Bubuka pikeun Kontrak Smart".

sumber: www.habr.com

Tambahkeun komentar