Aqlli kontraktlarga kirish

Ushbu maqolada biz aqlli kontraktlar nima ekanligini, ular nima ekanligini ko'rib chiqamiz, biz turli xil aqlli kontrakt platformalari, ularning xususiyatlari bilan tanishamiz, shuningdek, ular qanday ishlashi va qanday afzalliklarga olib kelishi mumkinligini muhokama qilamiz. Ushbu material aqlli shartnomalar mavzusi bilan yaxshi tanish bo'lmagan, lekin uni tushunishga yaqinroq bo'lishni xohlaydigan o'quvchilar uchun juda foydali bo'ladi.

Oddiy shartnomaga qarshi. aqlli shartnoma

Tafsilotlarni ko'rib chiqishdan oldin, qog'ozda ko'rsatilgan oddiy shartnoma va raqamli shaklda taqdim etilgan aqlli shartnoma o'rtasidagi farqlarga misol keltiraylik.

Aqlli kontraktlarga kirish

Bu aqlli shartnomalar paydo bo'lishidan oldin qanday ishlagan? Tasavvur qiling-a, qadriyatlarni taqsimlashning ma'lum qoidalari va shartlarini, shuningdek, ushbu taqsimotni berilgan qoidalar va shartlarga muvofiq amalga oshirishni kafolatlaydigan muayyan mexanizmni o'rnatishni xohlaydigan bir guruh odamlar. Keyin ular yig'ilishadi, qog'ozni tuzadilar, unga o'zlarining identifikatsiya ma'lumotlarini, shartlarni, tegishli qadriyatlarni yozadilar, sanani qo'yishadi va imzolaydilar. Ushbu shartnoma ishonchli shaxs, masalan, notarius tomonidan ham tasdiqlangan. Bundan tashqari, bu odamlar bunday shartnomaning qog'oz nusxasi bilan turli yo'nalishlarga borib, shartnomaning o'ziga mos kelmasligi mumkin bo'lgan ba'zi harakatlarni amalga oshirishni boshladilar, ya'ni ular bitta narsani qilishdi, lekin qog'ozda ular biror narsa qilishlari kerakligi tasdiqlandi. butunlay boshqacha. Va bu vaziyatdan qanday chiqish kerak? Darhaqiqat, guruh a'zolaridan biri ushbu hujjatni olishi, ba'zi dalillarni olishi, uni sudga topshirishi va shartnoma va haqiqiy harakatlar o'rtasidagi muvofiqlikka erishishi kerak. Ko'pincha, ushbu shartnomaning adolatli bajarilishiga erishish qiyin, bu esa noxush oqibatlarga olib keladi.

Aqlli shartnomalar haqida nima deyish mumkin? Ular shartnoma shartlarini yozish imkoniyatini ham, ularni qat'iy amalga oshirish mexanizmini ham birlashtiradi. Agar shartlar qo'yilgan bo'lsa va tegishli bitim yoki so'rov imzolangan bo'lsa, u holda bu so'rov yoki bitim qabul qilingandan keyin shartlarni o'zgartirish yoki ularning bajarilishiga ta'sir qilish endi mumkin emas.

Bitta validator yoki butun tarmoq, shuningdek, qat'iy xronologik tartibda bajarish uchun taqdim etilgan barcha aqlli shartnomalarni saqlaydigan ma'lumotlar bazasi mavjud. Shuningdek, ushbu ma'lumotlar bazasi aqlli shartnomani bajarish uchun barcha ishga tushirish shartlarini o'z ichiga olishi kerak. Bundan tashqari, u shartnomada taqsimlanishi tasvirlangan qiymatni hisobga olishi kerak. Agar bu ba'zi raqamli valyutaga tegishli bo'lsa, unda ushbu ma'lumotlar bazasi uni hisobga olishi kerak.

Boshqacha qilib aytganda, aqlli kontrakt tekshiruvchilari aqlli kontrakt ishlaydigan barcha ma'lumotlarga kirish huquqiga ega bo'lishi kerak. Misol uchun, raqamli valyutalar, foydalanuvchi balanslari, foydalanuvchi operatsiyalari va vaqt belgilarini bir vaqtning o'zida hisobga olish uchun yagona ma'lumotlar bazasidan foydalanish kerak. Keyin, aqlli shartnomada, shart foydalanuvchining ma'lum bir valyutadagi balansi, ma'lum bir vaqtning kelishi yoki ma'lum bir tranzaksiya amalga oshirilganligi bo'lishi mumkin, lekin boshqa hech narsa emas.

Aqlli shartnoma ta'rifi

Umuman olganda, terminologiyaning o'zi tadqiqotchi Nik Szabo tomonidan ishlab chiqilgan va birinchi marta 1994 yilda ishlatilgan va 1997 yilda aqlli shartnomalar g'oyasini tasvirlaydigan maqolada hujjatlashtirilgan.

Aqlli kontraktlar qiymat taqsimotining ba'zi avtomatlashtirilganligini anglatadi, bu faqat oldindan belgilangan shartlarga bog'liq bo'lishi mumkin. Eng oddiy shaklda, u muayyan tomonlar tomonidan imzolangan qat'iy belgilangan shartlarga ega bo'lgan shartnomaga o'xshaydi.

Aqlli shartnomalar uchinchi shaxslarga ishonchni kamaytirish uchun mo'ljallangan. Ba'zida hamma narsa bog'liq bo'lgan qaror qabul qilish markazi butunlay chiqarib tashlanadi. Bundan tashqari, bunday shartnomalarni tekshirish osonroq. Bu bunday tizimning ba'zi dizayn xususiyatlarining natijasidir, lekin ko'pincha biz aqlli shartnoma deganda markazlashtirilmagan muhit va har kimga ma'lumotlar bazasini tahlil qilish va shartnomalar bajarilishining to'liq auditini o'tkazish imkonini beradigan funktsiyalar mavjudligini tushunamiz. Bu shartnomaning o'zi bajarilishini o'zgartirishga olib keladigan retroaktiv ma'lumotlar o'zgarishidan himoya qilishni ta'minlaydi. Aqlli shartnomani yaratish va ishga tushirishda aksariyat jarayonlarni raqamlashtirish ko'pincha texnologiya va ularni amalga oshirish narxini osonlashtiradi.

Oddiy misol - Escrow xizmati

Keling, juda oddiy misolni ko'rib chiqaylik. Bu sizga aqlli kontraktlarning funksionalligini tushunishga yaqinroq bo'lishga yordam beradi, shuningdek, ulardan qaysi hollarda foydalanish kerakligini yaxshiroq tushunishga yordam beradi.

Aqlli kontraktlarga kirish

Uni Bitcoin yordamida ham amalga oshirish mumkin, garchi hozirda Bitcoinni aqlli shartnomalar uchun to'liq platforma deb atash qiyin. Shunday qilib, bizda xaridor bor va bizning onlayn do'konimiz bor. Xaridor ushbu do'kondan monitor sotib olmoqchi. Eng oddiy holatda, xaridor to'lovni to'ldiradi va yuboradi va onlayn-do'kon uni qabul qiladi, tasdiqlaydi va keyin tovarlarni jo'natadi. Biroq, bu vaziyatda katta ishonchga ehtiyoj bor - xaridor monitorning butun narxi uchun onlayn-do'konga ishonishi kerak. Onlayn do'kon xaridor oldida past obro'ga ega bo'lishi mumkinligi sababli, negadir to'lovni qabul qilgandan so'ng, do'kon xizmat ko'rsatishdan bosh tortishi va xaridorga tovar jo'natmaslik xavfi mavjud. Shu sababli, xaridor bunday xavflarni minimallashtirish va bunday operatsiyalarni yanada ishonchli qilish uchun bu holatda nima qo'llanilishi mumkinligi haqida savol beradi (va shunga ko'ra, onlayn-do'kon bu savolni so'raydi).

Bitkoin holatida xaridor va sotuvchiga mustaqil ravishda vositachi tanlashga ruxsat berish mumkin. Bahsli masalalarni hal qilishda ishtirok etayotganlar ko'p. Ishtirokchilarimiz esa mediatorlarning umumiy ro‘yxatidan o‘zlari ishonadigan birini tanlashlari mumkin. Ular birgalikda 2 ta 3 ta multisignature manzilini yaratadilar, bu erda uchta kalit mavjud va bu manzildan tangalarni sarflash uchun har qanday ikkita kalitli ikkita imzo talab qilinadi. Bitta kalit xaridorga, ikkinchisi internet-do‘konga, uchinchisi esa vositachiga tegishli bo‘ladi. Va bunday ko'p imzoli manzilga xaridor monitor uchun to'lash uchun zarur bo'lgan miqdorni yuboradi. Endi, sotuvchi pul o'ziga bog'liq bo'lgan ko'p imzoli manzilda bir muncha vaqt bloklanganligini ko'rsa, u monitorni pochta orqali xavfsiz yuborishi mumkin.

Keyinchalik, xaridor posilkani oladi, tovarlarni tekshiradi va yakuniy xarid to'g'risida qaror qabul qiladi. U ko'rsatilgan xizmatga to'liq rozi bo'lishi va o'z kaliti bilan bitimni imzolashi mumkin, bu erda u ko'p imzoli manzildan sotuvchiga tangalarni o'tkazadi yoki u biror narsadan norozi bo'lishi mumkin. Ikkinchi holda, u bu tangalarni boshqacha taqsimlaydigan muqobil bitim tuzish uchun vositachi bilan bog'lanadi.

Aytaylik, monitor biroz tirnalgan holda keldi va to'plamda kompyuterga ulanish uchun kabel yo'q edi, garchi onlayn-do'kon veb-saytida kabel to'plamga kiritilishi kerakligi aytilgan. Keyin xaridor vositachiga ushbu vaziyatda aldanganligini isbotlash uchun zarur bo'lgan dalillarni to'playdi: u saytning skrinshotlarini oladi, pochta kvitansiyasini suratga oladi, monitordagi tirnalgan joylarni suratga oladi va muhr bo'lganligini ko'rsatadi. singan va kabel chiqarib olingan. Onlayn do'kon, o'z navbatida, uning dalillarini to'playdi va vositachiga o'tkazadi.

Vositachi bir vaqtning o'zida xaridorning g'azabini ham, onlayn-do'konning manfaatlarini ham qondirishdan manfaatdor (nega keyinroq ma'lum bo'ladi). Bu ko'p imzoli manzildagi tangalar xaridor, onlayn-do'kon va vositachi o'rtasida ma'lum nisbatda sarflanadigan bitimni tashkil etadi, chunki u o'z ishi uchun mukofot sifatida bir qismini oladi. Aytaylik, umumiy summaning 90 foizi sotuvchiga, 5 foizi vositachiga, 5 foizi esa xaridorga tushadi. Vositachi ushbu bitimni o'z kaliti bilan imzolaydi, lekin uni hali qo'llash mumkin emas, chunki u ikkita imzoni talab qiladi, faqat bittasi bunga arziydi. U bunday bitimni xaridorga ham, sotuvchiga ham yuboradi. Agar ulardan kamida bittasi tangalarni qayta taqsimlashning ushbu variantidan qoniqsa, u holda bitim oldindan imzolanadi va tarmoqqa tarqatiladi. Uni tasdiqlash uchun bitim taraflaridan biri vositachining variantiga rozi bo'lishi kifoya.

Har ikki ishtirokchi ham unga ishonishi uchun dastlab vositachini tanlash muhimdir. Bunda u yoki buning manfaatlaridan mustaqil ravishda harakat qiladi va vaziyatni xolisona baholaydi. Agar vositachi kamida bitta ishtirokchini qoniqtiradigan tangalarni tarqatish variantini taqdim qilmasa, u holda xaridor ham, onlayn-do'kon ham o'zlarining ikkita imzosini qo'yish orqali tangalarni yangi ko'p imzoli manzilga yuborishlari mumkin. Yangi multisignature manzili boshqa vositachi bilan tuziladi, u bu masalada ko'proq vakolatli bo'lishi va yaxshiroq variantni taqdim etishi mumkin.

Masalan, yotoqxona va muzlatgich

Keling, aqlli shartnomaning imkoniyatlarini yanada aniqroq aks ettiruvchi murakkabroq misolni ko'rib chiqaylik.

Aqlli kontraktlarga kirish

Aytaylik, yaqinda bitta yotoqxonaga ko'chib kelgan uchta yigit bor. Ularning uchtasi o'z xonasi uchun birgalikda foydalanishi mumkin bo'lgan muzlatgich sotib olishga qiziqishmoqda. Ulardan biri ixtiyoriy ravishda muzlatgich sotib olish va sotuvchi bilan kelishib olish uchun kerakli miqdorni yig‘ishdi. Biroq, ular yaqinda uchrashishdi va ular o'rtasida etarlicha ishonch yo'q. Shubhasiz, ularning ikkitasi uchinchisiga pul berib, tavakkal qilmoqda. Bundan tashqari, ular sotuvchini tanlashda kelishuvga erishishlari kerak.

Ular eskrow xizmatidan foydalanishlari mumkin, ya'ni tranzaksiyaning bajarilishini nazorat qiluvchi va yuzaga kelgan munozarali masalalarni hal qiladigan vositachini tanlashi mumkin. Keyin, kelishib, ular aqlli shartnoma tuzadilar va unda ma'lum shartlarni belgilaydilar.

Birinchi shart - ma'lum vaqtdan oldin, aytaylik, bir hafta ichida, tegishli smart-kontrakt hisobi ma'lum bir manzildan ma'lum miqdor uchun uchta to'lovni olishi kerak. Agar bu sodir bo'lmasa, aqlli shartnoma bajarilishini to'xtatadi va tangalarni barcha ishtirokchilarga qaytaradi. Agar shart bajarilsa, sotuvchi va vositachi identifikatorlarining qiymatlari o'rnatiladi va barcha ishtirokchilar sotuvchi va vositachi tanloviga rozi ekanligi tekshiriladi. Barcha shartlar bajarilganda, mablag'lar ko'rsatilgan manzillarga o'tkaziladi. Ushbu yondashuv ishtirokchilarni har qanday tomondan firibgarlikdan himoya qilishi mumkin va umuman ishonish zaruratini yo'q qiladi.

Biz ushbu misolda har bir shartni bajarish uchun parametrlarni bosqichma-bosqich o'rnatish qobiliyati har qanday murakkablik va chuqurlikdagi chuqurlikdagi tizimlarni yaratishga imkon beradigan printsipni ko'rib turibmiz. Bundan tashqari, siz birinchi navbatda aqlli shartnomada birinchi shartni belgilashingiz mumkin va faqat uning bajarilishidan keyin keyingi shart uchun parametrlarni o'rnatishingiz mumkin. Boshqacha qilib aytadigan bo'lsak, shart rasmiy ravishda yozilgan va uning parametrlari uning ishlashi paytida o'rnatilishi mumkin.

Aqlli shartnomalar tasnifi

Tasniflash uchun siz turli mezon guruhlarini belgilashingiz mumkin. Biroq, texnologiya rivojlanishi davrida ulardan to'rttasi dolzarbdir.

Aqlli shartnomalar markazlashtirilgan yoki markazlashtirilmagan bo'lishi mumkin bo'lgan ijro muhiti bilan ajralib turishi mumkin. Markazsizlashtirish holatida biz aqlli shartnomalarni bajarishda ko'proq mustaqillik va xatolarga chidamlilikka egamiz.

Ular, shuningdek, shartlarni o'rnatish va bajarish jarayoni bilan ajralib turishi mumkin: ular erkin dasturlashtiriladigan, cheklangan yoki oldindan belgilangan, ya'ni qat'iy terilgan bo'lishi mumkin. Aqlli kontrakt platformasida faqat 4 ta o'ziga xos aqlli kontrakt mavjud bo'lganda, ular uchun parametrlar istalgan tarzda o'rnatilishi mumkin. Shunga ko'ra, ularni o'rnatish ancha sodda: biz ro'yxatdan shartnomani tanlaymiz va parametrlarni o'tkazamiz.

Boshlash usuliga ko'ra, avtomatlashtirilgan aqlli shartnomalar mavjud, ya'ni ma'lum shartlar yuzaga kelganda, ular o'z-o'zidan bajariladi va shartlar ko'rsatilgan shartnomalar mavjud, ammo platforma ularning bajarilishini avtomatik ravishda tekshirmaydi; buning uchun ular alohida boshlash kerak.

Bundan tashqari, aqlli shartnomalar maxfiylik darajasida farqlanadi. Ular butunlay ochiq, qisman yoki to'liq maxfiy bo'lishi mumkin. Ikkinchisi, uchinchi tomon kuzatuvchilari aqlli shartnomalar shartlarini ko'rmasliklarini anglatadi. Biroq, maxfiylik mavzusi juda keng va uni joriy maqoladan alohida ko'rib chiqish yaxshiroqdir.

Quyida biz joriy mavzuni tushunishga aniqlik kiritish uchun dastlabki uchta mezonni batafsil ko'rib chiqamiz.

Ish vaqti bo'yicha aqlli shartnomalar

Aqlli kontraktlarga kirish

Amalga oshirish muhitiga asoslanib, markazlashtirilgan va markazlashtirilmagan aqlli kontrakt platformalari o'rtasida farqlanadi. Markazlashtirilgan raqamli shartnomalar bo'lsa, yagona xizmatdan foydalaniladi, bu erda faqat bitta validator mavjud va zaxira va tiklash xizmati bo'lishi mumkin, u ham markazdan boshqariladi. Aqlli shartnoma shartlarini belgilash va ushbu xizmat ma'lumotlar bazasida hisobga olinadigan qiymatni taqsimlash uchun barcha kerakli ma'lumotlarni saqlaydigan bitta ma'lumotlar bazasi mavjud. Bunday markazlashtirilgan xizmatda muayyan so'rovlar bilan shartlar qo'yadigan va bunday shartnomalardan foydalanadigan mijoz mavjud. Platformaning markazlashtirilgan tabiati tufayli autentifikatsiya mexanizmlari kriptovalyutalarga qaraganda kamroq xavfsiz bo'lishi mumkin.

Misol tariqasida uyali aloqa provayderlarini (turli uyali aloqa operatorlarini) olishimiz mumkin. Aytaylik, ma'lum bir operator o'z serverlarida turli formatlarda, masalan: ovozli qo'ng'iroqlar, SMS uzatish, mobil Internet-trafik ko'rinishida va turli standartlarga muvofiq uzatilishi mumkin bo'lgan trafikning markazlashtirilgan hisobini yuritadi, shuningdek, yozuvlarni yuritadi. foydalanuvchi qoldiqlaridagi mablag'lar. Shunga ko'ra, uyali aloqa provayderi ko'rsatilgan xizmatlarni hisobga olish va ularni turli shartlar bilan to'lash uchun shartnomalar tuzishi mumkin. Bunday holda, "falon raqamga falon kod bilan SMS yuboring va siz trafikni taqsimlash uchun falon shartlarni olasiz" kabi shartlarni o'rnatish oson.

Yana bir misol keltirish mumkin: Internet-bankingning kengaytirilgan funksiyasiga ega anʼanaviy banklar va juda oddiy shartnomalar, masalan, muntazam toʻlovlar, kiruvchi toʻlovlarni avtomatik konvertatsiya qilish, belgilangan hisobvaraqqa foizlarni avtomatik tarzda ushlab turish va hokazo.

Agar biz markazlashtirilmagan ijro muhiti bilan aqlli shartnomalar haqida gapiradigan bo'lsak, unda bizda bir guruh validatorlar mavjud. Ideal holda, har kim validator bo'lishi mumkin. Ma'lumotlar bazasini sinxronizatsiya qilish protokoli va konsensusga erishish tufayli bizda formatlari tez-tez o'zgarib turadigan shartli so'rovlar emas, balki barcha tranzaktsiyalarni qat'iy tavsiflangan shartnomalar bilan saqlaydigan umumiy ma'lumotlar bazasi mavjud va ochiq spetsifikatsiya yo'q. Bu erda bitimlar shartnomani qat'iy spetsifikatsiyaga muvofiq bajarish bo'yicha ko'rsatmalarni o'z ichiga oladi. Ushbu spetsifikatsiya ochiq va shuning uchun platforma foydalanuvchilarining o'zlari aqlli shartnomalarni tekshirishlari va tasdiqlashlari mumkin. Bu erda biz markazlashtirilmagan platformalar mustaqillik va nosozliklarga chidamlilik nuqtai nazaridan markazlashtirilgan platformalardan ustun ekanligini ko'ramiz, ammo ularning dizayni va texnik xizmat ko'rsatish ancha murakkab.

Shartlarni belgilash va bajarish usuli bo'yicha aqlli shartnomalar

Endi keling, aqlli shartnomalar shartlarni belgilash va bajarishda qanday farq qilishi mumkinligini batafsil ko'rib chiqaylik. Bu erda biz tasodifiy dasturlashtiriladigan va Turing bilan yakunlangan aqlli shartnomalarga e'tibor qaratamiz. Turing-to'liq aqlli shartnoma sizga shartnomani bajarish shartlari sifatida deyarli har qanday algoritmlarni o'rnatish imkonini beradi: yozish davrlari, ehtimolliklarni hisoblash uchun ba'zi funktsiyalar va shunga o'xshashlar - o'zingizning elektron imzo algoritmlaringizgacha. Bu holda biz mantiqning chinakam o'zboshimchalik bilan yozilishini nazarda tutamiz.

Bundan tashqari, o'zboshimchalik bilan aqlli shartnomalar mavjud, ammo Turing to'liq emas. Bunga o'z skripti bilan Bitcoin va Litecoin kiradi. Bu shuni anglatadiki, siz faqat ma'lum operatsiyalarni istalgan tartibda ishlatishingiz mumkin, ammo siz endi tsikllar va o'zingizning algoritmlaringizni yoza olmaysiz.

Bundan tashqari, oldindan belgilangan aqlli shartnomalarni amalga oshiradigan aqlli kontrakt platformalari mavjud. Bularga Bitshares va Steemit kiradi. Bitshares savdo, hisobni boshqarish, platformaning o'zi va uning parametrlarini boshqarish uchun bir qator aqlli shartnomalarga ega. Steemit ham shunga o'xshash platformadir, lekin u endi Bitshares kabi tokenlarni chiqarish va savdoga yo'naltirilgan emas, balki blog yuritishga qaratilgan, ya'ni u kontentni markazlashtirilmagan tarzda saqlaydi va qayta ishlaydi.

O'zboshimchalik bilan Turing-to'liq shartnomalar Ethereum platformasi va RootStock o'z ichiga oladi, qaysi hali ishlab chiqilmoqda. Shuning uchun, quyida biz Ethereum aqlli kontrakt platformasi haqida biroz batafsilroq to'xtalamiz.

Boshlash usuli bo'yicha aqlli shartnomalar

Boshlash usuliga ko'ra, aqlli shartnomalar ham kamida ikkita guruhga bo'linishi mumkin: avtomatlashtirilgan va qo'lda (avtomatlashtirilmagan). Avtomatlashtirilganlar, barcha ma'lum parametrlar va shartlarni hisobga olgan holda, aqlli shartnoma to'liq avtomatik ravishda amalga oshirilishi bilan tavsiflanadi, ya'ni har qanday qo'shimcha tranzaktsiyalarni jo'natish va har bir keyingi bajarish uchun qo'shimcha komissiya sarflashni talab qilmaydi. Platformaning o'zida aqlli shartnoma qanday bajarilishini hisoblash uchun barcha ma'lumotlar mavjud. U erdagi mantiq o'zboshimchalik bilan emas, balki oldindan belgilab qo'yilgan va bularning barchasini oldindan aytish mumkin. Ya'ni, siz aqlli shartnomani bajarishning murakkabligini oldindan hisoblashingiz mumkin, buning uchun doimiy komissiyadan foydalanishingiz mumkin va uni amalga oshirishning barcha jarayonlari yanada samaraliroq bo'ladi.

Erkin dasturlashtirilgan aqlli shartnomalar uchun ijro avtomatlashtirilmaydi. Bunday aqlli shartnomani boshlash uchun deyarli har bir qadamda siz yangi tranzaksiya yaratishingiz kerak, u keyingi ijro bosqichini yoki keyingi aqlli shartnoma usulini chaqiradi, tegishli komissiyani to'laydi va tranzaksiya tasdiqlanishini kuting. Bajarish muvaffaqiyatli yoki bajarilmasligi mumkin, chunki aqlli shartnoma kodi o'zboshimchalik bilan va ba'zi oldindan aytib bo'lmaydigan daqiqalar paydo bo'lishi mumkin, masalan, abadiy tsikl, ba'zi parametrlar va argumentlarning etishmasligi, ishlov berilmagan istisnolar va boshqalar.

Ethereum hisoblari

Ethereum hisob turlari

Keling, Ethereum platformasida qanday turdagi hisoblar bo'lishi mumkinligini ko'rib chiqaylik. Bu erda faqat ikkita hisob turi mavjud va boshqa variantlar yo'q. Birinchi tur foydalanuvchi hisobi, ikkinchisi shartnoma hisobi deb ataladi. Keling, ular qanday farq qilishini aniqlaylik.

Foydalanuvchi hisobi faqat elektron imzoning shaxsiy kaliti bilan boshqariladi. Hisob egasi ECDSA (Elliptic Curve Digital Signature Algoritm) algoritmidan foydalangan holda elektron imzo uchun o'zining kalit juftligini yaratadi. Faqat ushbu kalit bilan imzolangan tranzaksiyalar bu hisob holatini o'zgartirishi mumkin.

Aqlli kontrakt hisobi uchun alohida mantiq taqdim etiladi. Uni faqat aqlli kontraktning xatti-harakatlarini to'liq aniqlaydigan oldindan belgilangan dasturiy kod orqali boshqarish mumkin: u ma'lum sharoitlarda o'z tangalarini qanday boshqaradi, qaysi foydalanuvchi tashabbusi bilan va qanday qo'shimcha sharoitlarda bu tangalar tarqatiladi. Agar dastur kodida ba'zi fikrlar ishlab chiquvchilar tomonidan ko'zda tutilmagan bo'lsa, muammolar paydo bo'lishi mumkin. Masalan, aqlli shartnoma ma'lum bir holatga ega bo'lishi mumkin, bunda u foydalanuvchilarning hech biridan keyingi bajarilishini boshlashni qabul qilmaydi. Bunday holda, tangalar aslida muzlatiladi, chunki aqlli shartnoma bu holatdan chiqishni nazarda tutmaydi.

Ethereum-da hisoblar qanday yaratiladi

Foydalanuvchi hisobi bo'lsa, egasi ECDSA yordamida mustaqil ravishda kalit juftligini yaratadi. Shuni ta'kidlash kerakki, Ethereum Bitcoin kabi elektron imzolar uchun aynan bir xil algoritm va aynan bir xil elliptik egri chiziqdan foydalanadi, ammo manzil biroz boshqacha tarzda hisoblanadi. Bu erda Bitcoin-da bo'lgani kabi ikki marta xeshlash natijasi endi ishlatilmaydi, lekin bitta xeshlash 256 bit uzunlikdagi Keccak funksiyasi bilan ta'minlanadi. Olingan qiymatdan eng kam ahamiyatli bitlar, ya'ni chiqish xesh qiymatining eng kam ahamiyatli 160 biti kesiladi. Natijada biz Ethereum-da manzilni olamiz. Aslida, u 20 baytni oladi.

E'tibor bering, Ethereum-dagi hisob identifikatori Bitcoin va boshqa ko'plab tizimlardan farqli o'laroq, nazorat summasini qo'llamasdan olti burchakli kodlangan bo'lib, bu erda manzil nazorat summasi qo'shilgan holda 58 ta asosiy raqam tizimida kodlangan. Bu Ethereum-da hisob identifikatorlari bilan ishlashda ehtiyot bo'lish kerakligini anglatadi: identifikatordagi bitta xato tangalarning yo'qolishiga olib kelishi kafolatlanadi.

Muhim xususiyat mavjud va u birinchi kiruvchi to'lovni qabul qilgan paytda umumiy ma'lumotlar bazasi darajasida foydalanuvchi hisobi yaratiladi.

Aqlli kontrakt hisobini yaratish butunlay boshqacha yondashuvni talab qiladi. Dastlab, foydalanuvchilardan biri aqlli shartnomaning manba kodini yozadi, shundan so'ng kod Ethereum platformasi uchun maxsus kompilyator orqali o'tadi va o'zining Ethereum virtual mashinasi uchun bayt kodini oladi. Olingan bayt-kod tranzaktsiyaning maxsus maydoniga joylashtiriladi. U tashabbuskorning hisobi nomidan tasdiqlangan. Keyinchalik, ushbu tranzaktsiya butun tarmoq bo'ylab tarqaladi va aqlli shartnoma kodini joylashtiradi. Bitim uchun va shunga mos ravishda shartnomani bajarish uchun komissiya tashabbuskorning hisobvarag'i balansidan yechib olinadi.

Har bir aqlli shartnoma, albatta, o'z konstruktorini (ushbu shartnomaning) o'z ichiga oladi. U boʻsh yoki mazmunli boʻlishi mumkin. Konstruktor bajarilgandan so'ng, aqlli kontrakt hisobi identifikatori yaratiladi, uning yordamida siz tanga yuborishingiz, ba'zi aqlli shartnoma usullariga qo'ng'iroq qilishingiz va hokazo.

Ethereum tranzaksiya tuzilmasi

Buni aniqroq qilish uchun biz Ethereum tranzaksiyasining tuzilishini va aqlli shartnoma kodini ko'rib chiqishni boshlaymiz.

Aqlli kontraktlarga kirish

Ethereum tranzaksiyasi bir nechta maydonlardan iborat. Ulardan birinchisi, hech bo'lmaganda, uni tarqatadigan va uning muallifi bo'lgan hisobning o'ziga nisbatan tranzaktsiyaning ma'lum seriya raqami. Bu ikkilamchi operatsiyalarni farqlash uchun, ya'ni bir xil bitim ikki marta qabul qilingan holatni istisno qilish uchun kerak. Identifikatordan foydalangan holda, har bir tranzaksiya noyob xesh qiymatiga ega.

Keyingi o'xshash maydon keladi benzin narxi. Bu Ethereum bazaviy valyutasi aqlli shartnomani bajarish va virtual mashina resursini taqsimlash uchun to'lash uchun ishlatiladigan gazga aylantirilgan narxni ko'rsatadi. Bu nima degani?

Bitcoin-da to'lovlar to'g'ridan-to'g'ri asosiy valyuta - Bitkoinning o'zi tomonidan to'lanadi. Bu ularni hisoblashning oddiy mexanizmi tufayli mumkin: biz tranzaktsiyada mavjud bo'lgan ma'lumotlar miqdori uchun qat'iy to'laymiz. Ethereumda vaziyat yanada murakkab, chunki tranzaksiya ma'lumotlarining hajmiga tayanish juda qiyin. Bu erda tranzaksiya virtual mashinada bajariladigan dastur kodini ham o'z ichiga olishi mumkin va virtual mashinaning har bir operatsiyasi boshqa murakkablikka ega bo'lishi mumkin. O'zgaruvchilar uchun xotira ajratadigan operatsiyalar ham mavjud. Ular o'zlarining murakkabligiga ega bo'ladilar, har bir operatsiya uchun to'lov unga bog'liq bo'ladi.

Gaz ekvivalentidagi har bir operatsiyaning narxi doimiy bo'ladi. U har bir operatsiyaning doimiy narxini aniqlash uchun maxsus kiritilgan. Tarmoqdagi yukga qarab, gaz narxi o'zgaradi, ya'ni komissiyani to'lash uchun bazaviy valyuta ushbu yordamchi birlikka aylanadigan koeffitsient.

Ethereum-da tranzaksiyaning yana bir xususiyati bor: virtual mashinada bajarish uchun u o'z ichiga olgan bayt-kod u qandaydir natija (muvaffaqiyat yoki muvaffaqiyatsizlik) bilan yakunlanmaguncha yoki komissiyani to'lash uchun ajratilgan ma'lum miqdordagi tangalar tugamaguncha bajariladi. . Bu qandaydir xatolik yuz bergan taqdirda jo'natuvchining hisobidagi barcha tangalar komissiyaga sarflangan (masalan, virtual mashinada qandaydir abadiy tsikl boshlangan) vaziyatni oldini olish uchun quyidagi maydon mavjud - gazni ishga tushiring (ko'pincha gaz chegarasi deb ataladi) - jo'natuvchi ma'lum bir operatsiyani bajarish uchun sarflashga tayyor bo'lgan tangalarning maksimal miqdorini belgilaydi.

Keyingi maydon chaqiriladi boradigan manzil. Bu tangalarni oluvchining manzilini yoki usullari chaqiriladigan muayyan aqlli shartnomaning manzilini o'z ichiga oladi. Undan keyin maydon keladi qiymati, bu erda maqsad manzilga yuborilgan tangalar miqdori kiritiladi.

Keyingi deb nomlangan qiziqarli soha ma'lumotlar, butun tuzilish mos keladigan joyda. Bu alohida maydon emas, balki virtual mashina uchun kod aniqlangan butun tuzilmadir. Bu erda siz o'zboshimchalik bilan ma'lumotlarni joylashtirishingiz mumkin - buning uchun alohida qoidalar mavjud.

Va oxirgi maydon chaqiriladi imzolash. U bir vaqtning o'zida ushbu bitim muallifining elektron imzosini va ushbu imzo tekshiriladigan ochiq kalitni o'z ichiga oladi. Ochiq kalitdan siz ushbu tranzaktsiyani jo'natuvchining hisob identifikatorini olishingiz mumkin, ya'ni tizimning o'zida jo'natuvchining hisobini noyob tarzda aniqlang. Biz bitim tuzilishi haqida asosiy narsani bilib oldik.

Solidity uchun aqlli shartnoma kodi misoli

Keling, misol yordamida eng oddiy aqlli shartnomani batafsil ko'rib chiqaylik.

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

Yuqorida foydalanuvchilarning tangalarini ushlab turishi va ularni talabga binoan qaytarishi mumkin bo'lgan soddalashtirilgan manba kodi mavjud.

Shunday qilib, bankning aqlli shartnomasi mavjud bo'lib, u quyidagi funktsiyalarni bajaradi: u o'z balansida tangalarni jamlaydi, ya'ni tranzaksiya tasdiqlanganda va bunday aqlli shartnoma joylashtirilganda uning balansida tangalar bo'lishi mumkin bo'lgan yangi hisob yaratiladi; foydalanuvchilarni va ular o'rtasida tangalarni taqsimlashni eslab qoladi; balanslarni boshqarishning bir necha usullari mavjud, ya'ni foydalanuvchi balansini to'ldirish, yechib olish va tekshirish mumkin.

Keling, manba kodining har bir qatorini ko'rib chiqaylik. Ushbu shartnoma doimiy maydonlarga ega. Ulardan biri tip manzili bilan egasi deb ataladi. Bu erda shartnoma ushbu aqlli shartnomani yaratgan foydalanuvchining manzilini eslab qoladi. Bundan tashqari, foydalanuvchi manzillari va balanslari o'rtasidagi yozishmalarni saqlaydigan dinamik tuzilma mavjud.

Buning ortidan Bank usuli keladi - u shartnoma bilan bir xil nomga ega. Shunga ko'ra, bu uning konstruktori. Bu erda egasi o'zgaruvchisiga ushbu aqlli shartnomani tarmoqqa joylashtirgan shaxsning manzili tayinlanadi. Bu konstruktorda sodir bo'ladigan yagona narsa. Ya'ni, bu holda msg - bu ushbu shartnomaning butun kodini o'z ichiga olgan tranzaksiya bilan birga virtual mashinaga o'tkazilgan ma'lumotlar. Shunga ko'ra, msg.sender ushbu kodni o'z ichiga olgan ushbu tranzaksiya muallifi hisoblanadi. U aqlli shartnomaning egasi bo'ladi.

Depozit usuli shartnoma hisobvarag'iga ma'lum miqdordagi tangalarni tranzaksiya orqali o'tkazish imkonini beradi. Bunday holda, aqlli shartnoma, ushbu tangalarni olgan holda, ularni o'z balansida qoldiradi, ammo ular kimga tegishli ekanligini bilish uchun ushbu tangalarni kim jo'natuvchi bo'lganligini balans tuzilmasida qayd etadi.

Keyingi usul olib tashlash deb ataladi va u bitta parametrni oladi - kimdir bu bankdan olib qo'ymoqchi bo'lgan tangalar miqdori. Bu ularni yuborish uchun ushbu usulni chaqirgan foydalanuvchi balansida etarli tangalar mavjudligini tekshiradi. Agar ular etarli bo'lsa, aqlli shartnomaning o'zi qo'ng'iroq qiluvchiga bu miqdordagi tangalarni qaytaradi.

Keyinchalik foydalanuvchining joriy balansini tekshirish usuli keladi. Kim bu usulni chaqirsa, aqlli shartnomada ushbu balansni olish uchun foydalaniladi. Shuni ta'kidlash kerakki, ushbu usulning modifikatori ko'rinishdir. Bu shuni anglatadiki, usulning o'zi o'z sinfidagi o'zgaruvchilarni hech qanday tarzda o'zgartirmaydi va aslida u faqat o'qish usuli hisoblanadi. Ushbu usulni chaqirish uchun alohida tranzaktsiya yaratilmaydi, hech qanday to'lov to'lanmaydi va barcha hisob-kitoblar mahalliy ravishda amalga oshiriladi, shundan so'ng foydalanuvchi natijani oladi.

O'ldirish usuli aqlli shartnoma holatini yo'q qilish uchun kerak. Va bu erda ushbu usulning qo'ng'iroq qiluvchisi ushbu shartnomaning egasi yoki yo'qligini qo'shimcha tekshirish mavjud. Agar shunday bo'lsa, shartnoma o'z-o'zini yo'q qiladi va yo'q qilish funktsiyasi bitta parametrni oladi - shartnoma balansida qolgan barcha tangalarni yuboradigan hisob identifikatori. Bunday holda, qolgan tangalar avtomatik ravishda shartnoma egasining manziliga o'tadi.

Ethereum tarmog'idagi to'liq tugun qanday ishlaydi?

Keling, Ethereum platformasida bunday aqlli shartnomalar qanday amalga oshirilishini va to'liq tarmoq tugunining qanday ishlashini sxematik tarzda ko'rib chiqaylik.

Aqlli kontraktlarga kirish

Ethereum tarmog'idagi to'liq tugun kamida to'rtta modulga ega bo'lishi kerak.
Birinchisi, har qanday markazlashtirilmagan protokolda bo'lgani kabi, P2P tarmoq moduli - tarmoqqa ulanish va boshqa tugunlar bilan ishlash moduli, bu erda bloklar, tranzaktsiyalar va boshqa tugunlar haqidagi ma'lumotlar almashiladi. Bu barcha markazlashmagan kriptovalyutalar uchun an'anaviy komponent.

Keyinchalik, bizda blokcheyn ma'lumotlarini saqlash, qayta ishlash, ustuvor filialni tanlash, bloklarni qo'shish, bloklarni ajratish, ushbu bloklarni tekshirish va hk uchun modul mavjud.

Uchinchi modul EVM (Ethereum virtual mashinasi) deb ataladi - bu Ethereum tranzaksiyalaridan bayt kodini oladigan virtual mashina. Ushbu modul ma'lum bir hisobning joriy holatini oladi va olingan baytekod asosida uning holatiga o'zgartirishlar kiritadi. Har bir tarmoq tugunidagi virtual mashina versiyasi bir xil bo'lishi kerak. Har bir Ethereum tugunida amalga oshiriladigan hisob-kitoblar aynan bir xil, lekin ular asinxron tarzda sodir bo'ladi: kimdir bu tranzaksiyani avval tekshiradi va qabul qiladi, ya'ni undagi barcha kodni bajaradi, kimdir keyinroq. Shunga ko'ra, tranzaktsiya yaratilganda, u tarmoqqa taqsimlanadi, tugunlar uni qabul qiladi va tekshirish vaqtida Bitcoin Script-ni Bitcoin-da qanday bajarilgan bo'lsa, bu erda virtual mashinaning bayt-kodi bajariladi.

Agar unda mavjud bo'lgan barcha kodlar bajarilgan bo'lsa, ma'lum bir hisobning yangi holati yaratilgan va ushbu tranzaksiya qo'llanilgan yoki qo'llanilmaganligi aniq bo'lgunga qadar saqlangan bo'lsa, tranzaksiya tasdiqlangan hisoblanadi. Agar tranzaktsiya qo'llanilsa, unda bu holat nafaqat tugallangan, balki joriy hisoblanadi. Har bir tarmoq tugunining har bir hisob holatini saqlaydigan ma'lumotlar bazasi mavjud. Barcha hisob-kitoblar bir xil tarzda sodir bo'lishi va blokcheyn holati bir xil bo'lganligi sababli, barcha hisoblarning holatini o'z ichiga olgan ma'lumotlar bazasi har bir tugun uchun bir xil bo'ladi.

Aqlli shartnomalarning afsonalari va cheklovlari

Ethereumga o'xshash aqlli kontrakt platformalari uchun mavjud cheklovlarga kelsak, quyidagilarni keltirish mumkin:

  • kodning bajarilishi;
  • xotirani ajratish;
  • blokcheyn ma'lumotlari;
  • to'lovlarni yuborish;
  • yangi shartnoma tuzish;
  • boshqa shartnomalarni chaqirish.

Keling, virtual mashinaga qo'yilgan cheklovlarni ko'rib chiqaylik va shunga mos ravishda aqlli shartnomalar haqidagi ba'zi afsonalarni yo'q qilamiz. Faqat Ethereum-da emas, balki shunga o'xshash platformalarda ham bo'lishi mumkin bo'lgan virtual mashinada siz haqiqatan ham o'zboshimchalik bilan mantiqiy operatsiyalarni bajarishingiz mumkin, ya'ni kod yozishingiz va u erda bajariladi, siz qo'shimcha ravishda xotira ajratishingiz mumkin. Shu bilan birga, to'lov har bir operatsiya va ajratilgan har bir qo'shimcha xotira birligi uchun alohida to'lanadi.

Keyinchalik, virtual mashina blokcheyn ma'lumotlar bazasidan ma'lumotlarni o'qiy oladi, bu ma'lumotlardan u yoki bu aqlli kontrakt mantiqini bajarish uchun tetik sifatida foydalanishi mumkin. Virtual mashina tranzaktsiyalarni yaratishi va yuborishi mumkin, u yangi shartnomalar yaratishi va tarmoqda allaqachon e'lon qilingan boshqa aqlli shartnomalarni chaqirish usullarini yaratishi mumkin: mavjud, mavjud va hk.

Eng keng tarqalgan afsona, Ethereum aqlli shartnomalari har qanday Internet-resursdagi ma'lumotlarni o'z shartlarida ishlatishi mumkin. Haqiqat shundaki, virtual mashina Internetdagi ba'zi tashqi axborot resursiga tarmoq so'rovini yubora olmaydi, ya'ni, aytaylik, tashqarida ob-havo qanday bo'lishiga qarab, foydalanuvchilar o'rtasida qiymat taqsimlaydigan aqlli shartnoma yozish mumkin emas. yoki kim chempionlikni qo'lga kiritdi yoki tashqi dunyoda sodir bo'lgan boshqa voqeaga asoslanib, chunki bu hodisalar haqidagi ma'lumotlar platformaning o'zi ma'lumotlar bazasida yo'q. Ya'ni, blokcheynda bu haqda hech narsa yo'q. Agar u erda ko'rinmasa, virtual mashina bu ma'lumotlarni tetik sifatida ishlata olmaydi.

Ethereumning kamchiliklari

Keling, asosiylarini sanab o'tamiz. Birinchi kamchilik - Ethereum-da aqlli shartnomalarni loyihalash, ishlab chiqish va sinovdan o'tkazishda ba'zi qiyinchiliklar mavjud (Ethereum aqlli shartnomalarni yozish uchun Solidity tilidan foydalanadi). Darhaqiqat, amaliyot shuni ko'rsatadiki, barcha xatolarning juda katta foizi inson omiliga tegishli. Bu aslida o'rtacha yoki undan yuqori murakkablikka ega bo'lgan allaqachon yozilgan Ethereum aqlli shartnomalari uchun to'g'ri keladi. Agar oddiy aqlli kontraktlar uchun xatolik ehtimoli kichik bo'lsa, murakkab aqlli shartnomalarda ko'pincha pul o'g'irlanishiga, ularning muzlatilishiga, aqlli shartnomalarning kutilmagan tarzda yo'q qilinishiga va hokazolarga olib keladigan xatolar mavjud. Bunday holatlar allaqachon ko'p. ma'lum.

Ikkinchi kamchilik shundaki, virtual mashinaning o'zi mukammal emas, chunki u ham odamlar tomonidan yozilgan. U o'zboshimchalik bilan buyruqlarni bajarishi mumkin va bunda zaiflik yotadi: bir qator buyruqlar oldindan kutilmagan oqibatlarga olib keladigan ma'lum bir tarzda sozlanishi mumkin. Bu juda murakkab soha, ammo allaqachon bir nechta tadqiqotlar mavjud bo'lib, bu zaifliklar Ethereum tarmog'ining joriy versiyasida mavjud va ular ko'plab aqlli shartnomalarning muvaffaqiyatsizligiga olib kelishi mumkin.

Yana bir katta qiyinchilik, uni kamchilik deb hisoblash mumkin. Bu siz amaliy yoki texnik jihatdan virtual mashinada bajariladigan shartnomaning bayt kodini kompilyatsiya qilsangiz, muayyan operatsiyalar tartibini aniqlashingiz mumkin degan xulosaga kelishingiz mumkin. Birgalikda bajarilganda, bu operatsiyalar virtual mashinani katta yuklaydi va uni ushbu operatsiyalarni bajarish uchun to'langan to'lovga nomutanosib ravishda sekinlashtiradi.

O'tmishda Ethereumning rivojlanishida allaqachon bir davr bor edi, o'shanda virtual mashinaning ishlashini batafsil tushungan ko'plab bolalar bunday zaifliklarni topdilar. Aslida, tranzaktsiyalar juda kichik to'lovni to'ladi, lekin amalda butun tarmoqni sekinlashtirdi. Ushbu muammolarni hal qilish juda qiyin, chunki birinchidan, ularni aniqlash, ikkinchidan, ushbu operatsiyalarni bajarish uchun narxni moslashtirish va uchinchidan, barcha tarmoq tugunlarini yangi versiyaga yangilashni anglatuvchi qattiq vilkalarni amalga oshirish kerak. dasturiy ta'minotni, so'ngra ushbu o'zgarishlarni bir vaqtning o'zida faollashtirish.

Ethereumga kelsak, juda ko'p tadqiqotlar olib borildi, juda ko'p amaliy tajriba to'plandi: ham ijobiy, ham salbiy, ammo shunga qaramay, qandaydir tarzda hal qilinishi kerak bo'lgan qiyinchiliklar va zaifliklar mavjud.

Shunday qilib, maqolaning tematik qismi tugallandi, keling, tez-tez paydo bo'ladigan savollarga o'tamiz.

Ko'p so'raladigan savollar

— Mavjud aqlli shartnomaning barcha tomonlari shartlarni o'zgartirmoqchi bo'lsa, multisig yordamida ushbu aqlli shartnomani bekor qilib, keyin uni bajarish shartlari yangilangan holda yangi aqlli shartnoma yaratishi mumkinmi?

Bu erda javob ikki xil bo'ladi. Nega? Chunki, bir tomondan, aqlli shartnoma bir marta aniqlanadi va u endi hech qanday o'zgarishlarni nazarda tutmaydi, boshqa tomondan, u ba'zi shartlarning to'liq yoki qisman o'zgarishini ta'minlaydigan oldindan yozilgan mantiqqa ega bo'lishi mumkin. Ya'ni, agar siz aqlli shartnomangizda biror narsani o'zgartirmoqchi bo'lsangiz, unda siz ushbu shartlarni yangilashingiz mumkin bo'lgan shartlarni belgilashingiz kerak. Shunga ko'ra, faqat shunday ehtiyotkorlik bilan shartnomani yangilashni tashkil etish mumkin. Ammo bu erda ham muammoga duch kelishingiz mumkin: xatoga yo'l qo'ying va mos keladigan zaiflikni oling. Shuning uchun, bunday narsalarni juda batafsil va ehtiyotkorlik bilan ishlab chiqish va sinovdan o'tkazish kerak.

— Mediator ishtirokchi tomonlardan biri bilan shartnoma tuzsa-chi: eskrov yoki smart-kontrakt? Aqlli shartnomada vositachi kerakmi?

Aqlli shartnomada vositachi shart emas. U mavjud bo'lmasligi mumkin. Agar eskrov holatida vositachi tomonlardan biri bilan fitna tuzsa, ha, bu sxema keyinchalik o'zining barcha qiymatini keskin yo'qotadi. Shuning uchun mediatorlar shunday tanlanadiki, ularga bu jarayonda ishtirok etayotgan barcha tomonlar bir vaqtning o‘zida ishonch bildiradilar. Shunga ko'ra, siz tangalarni o'zingiz ishonmaydigan vositachi bilan ko'p imzoli manzilga o'tkazmaysiz.

— Bitta Ethereum tranzaksiyasi bilan turli xil tokenlarni sizning manzilingizdan turli maqsadli manzillarga, masalan, ushbu tokenlar sotiladigan almashish manzillariga o‘tkazish mumkinmi?

Bu yaxshi savol va u Ethereum tranzaksiya modeli va uning Bitcoin modelidan qanday farq qilishiga tegishli. Va farq tubdan. Agar Ethereum tranzaksiya modelida siz shunchaki tangalarni o'tkazsangiz, u holda ular faqat bir manzildan boshqa manzilga o'tkaziladi, o'zgarishsiz, faqat siz ko'rsatgan aniq miqdor. Boshqacha qilib aytganda, bu sarflanmagan mahsulotlar (UTXO) modeli emas, balki hisoblar va tegishli qoldiqlar modelidir. Agar siz ayyor aqlli shartnoma yozsangiz, bir vaqtning o'zida bir vaqtning o'zida bir nechta turli xil tokenlarni jo'natish nazariy jihatdan mumkin, ammo siz hali ham ko'plab operatsiyalarni amalga oshirishingiz, shartnoma tuzishingiz, keyin unga tokenlar va tangalarni o'tkazishingiz va keyin tegishli usulni chaqirishingiz kerak bo'ladi. . Bu kuch va vaqtni talab qiladi, shuning uchun amalda u bunday ishlamaydi va Ethereumdagi barcha to'lovlar alohida tranzaktsiyalarda amalga oshiriladi.

— Ethereum platformasi haqidagi afsonalardan biri shundaki, tashqi internet-resurs ma’lumotlariga bog‘liq bo‘ladigan sharoitlarni ta’riflab bo‘lmaydi, keyin nima qilish kerak?

Yechim shundan iboratki, aqlli kontraktning o'zi tashqi dunyodagi narsalar holati to'g'risidagi ma'lumotlarni to'playdigan va maxsus usullar orqali aqlli kontraktlarga uzatadigan bir yoki bir nechta ishonchli oraclelarni taqdim etishi mumkin. Shartnomaning o'zi ishonchli shaxslardan olingan ma'lumotlarni haqiqat deb hisoblaydi. Ishonchliroq bo'lish uchun shunchaki katta guruhni tanlang va ularning til biriktirish xavfini minimallashtiring. Shartnomaning o'zi ko'pchilikka zid bo'lgan oracle ma'lumotlarini hisobga olmasligi mumkin.

Blockchain bo'yicha onlayn kurs ma'ruzalaridan biri ushbu mavzuga bag'ishlangan - "Aqlli kontraktlarga kirish".

Manba: www.habr.com

a Izoh qo'shish