Davlat kanallari yordamida bosqichma-bosqich Ethereum-da kengaytiriladigan dApps va aqlli shartnomalarni qanday yaratish mumkin. 1-qism

Plazma va davlat kanallari kabi real vaqtda minglab yoki hatto millionlab foydalanuvchilarni qamrab oladigan markazlashtirilmagan ilovalarni yaratish uchun juda ko'p turli xil echimlar mavjud. Ushbu qo'llanmada siz davlat kanallari qanday ishlashini va hozirda Ethereum-da kengaytiriladigan dasturlarni qanday yaratishni bilib olasiz.

Siz blockchain-da keyingi yaxshilanishlarni kutishingiz shart emas. Texnologiya bu erda qoladi va siz uni barcha turdagi dApplarni yaratishda ishlatishingiz mumkin. Hozirda, davlat kanallari asosan Ethereum-dagi blockchain-ga asoslangan o'yinlar uchun ishlatiladi.

Kripto valyutalari bilan qimor o'ylab ko'ring. Keyinchalik oshkor qilish uchun ma'lumotni shifrlash usullari mavjud, bu tizimning asosiy nuqtasi.

Davlat kanallari nima?

Bu deyarli real vaqtda millionlab foydalanuvchilar foydalanishi mumkin bo'lgan markazlashtirilmagan dasturlar va aqlli shartnomalarni yaratish uchun keng miqyosli echim. Ular 2 yoki undan ortiq foydalanuvchilar o'rtasida kanalni ishga tushirish orqali ishlaydi, ular amalga oshirmoqchi bo'lgan tranzaktsiya ma'lumotlari bilan shifrlangan, imzolangan xabarlarni almashadilar.

Ular "holat" deb nomlanadi, chunki har bir o'zaro aloqada yangilanadigan holat bo'lishi kerak. O'yin yoki bankdagi ballar haqida o'ylang.

Nima uchun ular mavjud?

Davlat kanallari yaratildi, chunki ethereum dasturlari tezda mashhurlik bilan o'sib bordi, chunki blokchain mo''tadil foydalanish bilan ishlab chiqilgan edi. Ular gaz uchun pul to'lamasdan yoki konchilar bitimni qayta ishlashini kutmasdan doimiy bitimlar tuzishga imkon beradi.

Bu bepul va tezkor operatsiyalarni anglatadi.

Davlat kanalini yaratish uchun bizga nima kerak?

  1. Bir-biri bilan o'zaro aloqada bo'lgan kamida 2 foydalanuvchi. Kanal 2 yoki undan ortiq foydalanuvchi o'rtasida ochilishi kerak. Suhbat dasturiga o'xshash.
  2. Uni ochadigan va yopadigan davlat kanali mantig'i bilan aqlli shartnoma.
  3. Agar davlat kanali o'yinda ishlatilsa, ikkala foydalanuvchi uchun ham eskort talab qilinadi. Eterdagi bu kanal kanalni ochishda aqlli shartnomada saqlanadi.
  4. Imzolangan xabarlarni yaratadigan Javascript dasturi, ular foydalanuvchilar o'rtasida zanjir almashinadi.
  5. Metamask yoki xabarlarni imzolash uchun shunga o'xshash vosita. Imzolangan xabarlar gazni sarf qilmaydi va darhol amalga oshiriladi. Ushbu operatsiyani keltirib chiqaruvchi vosita ekanligiga ishonch hosil qilish uchun ikkala foydalanuvchi xabarlarni imzolashi kerak.
  6. Imzolangan xabarlarni almashish uchun elektron pochta yoki tashqi dastur.

Ular qanday ishlaydi?

Davlat kanali sozlash uchun biroz murakkab, chunki har qanday xato yuz berganda ikkala o'yinchi ham himoyalanganligiga ishonch hosil qilishingiz kerak, shuning uchun bizga aqlli shartnoma kerak. Bular qadamlar:

  1. Ikki foydalanuvchi o'rtasidagi davlat kanalida birinchisi kanalni "ochadigan" aqlli shartnomani o'rnatadi.
  2. Ikkinchisi, ushbu davlat kanaliga "qo'shilish" uchun aqlli shartnomaning funktsiyasini bajaradi.
  3. Keyin ular dastur uchun imzolangan xabarlarni almashishni boshlashlari mumkin. Ikkala foydalanuvchi ham aqlli shartnomada bajaradigan ma'lumotlar bilan xabarlarni yaratish uchun maxsus javascript dasturiga kirish huquqiga ega, ammo zanjirdan tashqari.
  4. Bitimlarning tezligi har bir foydalanuvchi ushbu xabarlarni yaratishi va imzolashi qanchalik tezligiga bog'liq. Ular o'yin tugagani to'g'risida qaror qabul qilgunlariga qadar xabarlar almashish va zanjirdan tashqari o'ynashda davom etadilar.
  5. Ular o'yinni tugatgandan so'ng, ulardan har biri aqlli shartnomaga o'tishi va uni tugatish uchun "muzokara" bosqichini boshlaydigan vazifani bajarishi mumkin.
  6. Ushbu bosqichda ikkala foydalanuvchi ham aqlli shartnomaga kiritilgan so'nggi 2 ta xabarni yuklash uchun 1 kunlik tanaffusga ega. Aqlli shartnoma eng so'nggi xabarlarni tekshiradi va shu ma'lumot asosida o'yinni yakunlash uchun mablag'ni bo'shatadi. Har bir xabarda oldingi o'zaro ta'sirlar mavjud, shuning uchun eng so'nggilarini tekshirish xavfsiz.

Buni real vaziyatda qanday qo'llash mumkin?

Ushbu qo'llanmada qanday qilib Ethereum o'yini uchun 2 foydalanuvchi o'rtasida davlat kanalini yaratish kerakligini ko'rsataman. Yodingizda bo'lsin, davlat kanallari "holati" yoki hisoblagichi bo'lgan har qanday dastur uchun ishlatilishi mumkin. Shuning uchun o'yinlar juda yaxshi. Har bir o'yinda kim g'alaba qozonishini kuzatib borishingiz mumkin, chunki har bir o'yin uchun yangilanadigan holat mavjud.

Biz zar o'yinini yaratamiz, unda 1 o'yinchi tushadigan zarning sonini tanlaydi va 2 o'yinchi bu raqamni yutishini taxmin qilishi kerak. Ular blockchain-da operatsiyalarni amalga oshirmasdan xohlagancha o‘yin o‘ynashlari mumkin. Shuningdek, interfeysni namoyish qilish uchun veb-ilovaga ega bo'lamiz.

Ushbu markazlashtirilmagan dasturni yaratish uchun biz kuzatib boradigan indeks:

  1. Vizual veb-ilovani yaratish. Bu interfeys, o'yin tashqi foydalanuvchilar uchun qanday ko'rinishga ega. U imzolangan xabarlarni davlat kanallari bilan almashish uchun vosita sifatida ishlatiladi.
  2. Xabarlarni imzolash va shifrlash uchun zarur bo'lgan funktsiyalarni yaratish.
  3. Aqlli shartnoma tuzish.

1. Vizual veb-ilovani yaratish

Kodni ishlatishdan oldin, veb-ilovaning to'liq tafsilotlarini aniqlab olishimizga ishonch hosil qilishni xohlayman. Qanday ko'rinishga ega bo'ladi, diqqat markazida nima bo'ladi.

Bunday holda biz ikkala o'yinchi uchun ham shunga o'xshash narsalarni namoyish etmoqchimiz. 1-o'yinchi zarning 6 ta yuzini rasm sifatida ko'radi va u qaysi biri chiqishini tanlashi kerak, keyin ikkinchi o'yinchi ham ushbu yuzlar orasidan birini tanlashi kerak va natijani ko'rishi mumkin.

Shunday qilib, ramka quyidagicha bo'ladi:

  1. 1-o'yinchi veb-ilovaga kiradi va "Yangi o'yinni boshlang" tugmachasini bosadi, so'ngra aqlli shartnomani o'rnatish va o'rnatish uchun metamask operatsiyasini amalga oshiradi. U aqlli shartnoma manzilini oladi va u boshqa o'yinchiga o'yinni boshlash uchun yuborishi mumkin.
  2. 2-o'yinchi veb-ilovaga kiradi va 1-pleyerdan olingan shartnoma manzili bilan "Mavjud o'yinga qo'shiling" degan tugmachani bosadi, so'ng u allaqachon mavjud bo'lgan o'yinni sozlash uchun metamask bitimini amalga oshiradi va pul mablag'larini yuboradi.

Shunday qilib, shu erda boshlaylik. Keling, veb-ilovaning o'rtasida ikkita tugmachali qutini yarataylik. Dice deb nomlangan papka va index.html deb nomlangan faylni yarating. Bu erda kod:

Odatiy ravishda 2 ta tugma shunday ko'rinadi


    
        
         Zararli o'yinlar o'yini 
    
    
        
             Yangi o'yinni boshlash              Mavjud o'yinga qo'shilish         
    

Ushbu kodda men tugmachalar va sarlavhani o'z ichiga olgan div bilan asosiy HTML tuzilishini yaratdim. E'tibor bering, div bir vaqtning o'zida ishlatadigan main-content deb nomlangan sinfga ega.

Keling, buni bir nechta css bilan yanada chiroyli qilaylik. Quyidagi kod bilan index.css deb nomlangan fayl yarating (nusxa ko'chirishingiz mumkin):

Mana qanday ko'rinishga ega
tanasi {
    shrift-oila: sans-serif;
}
.main-content {
    chegara: avtoulov;
    maksimal kenglik: 500px;
    fon rangi: oqqush;
    to'ldirish: 50px;
    chegara-radius: 10px;
    displey: panjara;
    panjara-shablon-qatorlar: 1fr 1fr;
    panjara-shablon-ustunlar: 1fr 1fr;
    panjara-ustun-bo'shliq: 10px;
}
.main-content h1 {
    panjara ustuni: 1 / oraliq 2;
}
.main-content tugmasi {
    chegara: yo'q;
    rang: oq;
    fon rangi: # 007dff;
    to'ldirish: 20px;
    chegara-radius: 5px;
    kursor: ko'rsatgich;
}
.main-content tugmasi: hover {
    shaffoflik: 0,8;
}
.main-content tugmasi: faol {
    shaffoflik: 0,6;
}

Men html-ga h1-ni qo'shib qo'ydim, uni yanada yaxshi ko'rinishga keltiring, css-ga havolani qo'shib html-ni yangilaganingizga ishonch hosil qiling:



    
        
        
         Zararli o'yinlar o'yini 
    
    
        
            

Ethereum zar

             Yangi o'yinni boshlash              Mavjud o'yinga qo'shilish         
    

Siz men yangi css grididan foydalanayotganligimni payqagan bo'lishingiz mumkin. Sababi, bu asosan katta brauzerlar uchun mavjud, shuning uchun uni ishlatish juda xavfsiz, chunki ko'pchilik CSS-ni to'g'ri ko'radi.

Men foydalanuvchidan talab qilinadigan keyingi harakatni namoyish qilishning eng yaxshi usuli bu kerakli ma'lumot bilan javascript-da divni ko'rsatishdir deb qaror qildim. Shunday qilib, u "Yangi o'yinni boshlash" tugmachasini bosganda, undan o'yin uchun qancha mablag 'to'plashni xohlayotganini ko'radigan qutini ko'radi.

U "Mavjud o'yinga qo'shiling" tugmachasini bosganda, undan mavjud o'yinning ekskursiyasi va shartnomaning manzili so'raladi.

Tugma harakatlari quyidagicha javob beradi:

Ilova qanday qilib oddiy javascript bilan ko'rinadi

Buning uchun men javascript mantig'iga ega bo'lgan index.js faylini yaratdim. Mana javascript, agar buni yaxshiroq bilmoqchi bo'lsangiz, uni qo'llaringiz bilan yozishingizga ishonch hosil qiling:

U erda nima qilganimni tushuntirib beray.

  • Dastlab men start () deb nomlangan funktsiyani yaratdim, u zudlik bilan tarkibni to'ldirish uchun bajariladi va shu bilan bitta katta funktsiyaga ega bo'ladi.
  • Keyin men html faylidagi "start" yoki "tugmachani" bosganimda faollashtiriladigan 2 ta tadbir tinglovchilarini yaratdim. Biri # yangi o'yin tugmachasi uchun, ikkinchisi # qo'shilish o'yini uchun. Men sizning js kodingizda biron bir narsani tanlashning eng kuchli usullaridan biri bo'lgan document.querySelector () dan foydalanaman.
  • Ushbu tinglovchilar ichida men har bir mos keladigan elementning bo'linish qutisini ko'rsataman yoki yashiraman. Asosan querySelector katakchasini tanlab, ko'rsatish uchun css-ga o'rnatilgan yashirin sinfni olib tashlash yoki qo'shish: yo'q; .

Keyin js faylini bizning modifie index.html bilan ulashimiz mumkin:



    
        
        
         Zargarlik o'yinlari 
    
    
        
            

Ethereum zar

                         
            
                

ETH-da qancha ekrandan foydalanasiz?

                             
            
                

Mavjud o'yinning aqlli shartnoma manzili nima?

                             
            
        
        
    

Men qo'shilgan kodning yangi qismlarini aniqladim. Quyida yangi ma'lumotlarni shakllantirish uchun yangilangan css keltirilgan:

tanasi {
    shrift-oila: sans-serif;
}
.hidden {
    displey: yo'q;
}
.main-content {
    chegara: avtoulov;
    maksimal kenglik: 500px;
    fon rangi: oqqush;
    to'ldirish: 50px;
    chegara-radius: 10px;
    displey: panjara;
    panjara-shablon-qatorlar: 1fr 80px avtomatik;
    panjara-shablon-ustunlar: 1fr 1fr;
    panjara-ustun-bo'shliq: 10px;
}
.main-content h1 {
    panjara ustuni: 1 / oraliq 2;
}
.main-content tugmasi {
    chegara: yo'q;
    rang: oq;
    fon rangi: # 007dff;
    to'ldirish: 20px;
    chegara-radius: 5px;
    kursor: ko'rsatgich;
}
.main-content tugmasi: hover {
    shaffoflik: 0,8;
}
.main-content tugmasi: faol {
    shaffoflik: 0,6;
}
.main-content tugmasi: o'chirilgan {
    shaffoflik: 0,5;
    fon rangi: kulrang;
    kursor: avtomatik;
}
.main-content {
    kengligi: 100%;
    chegara-radius: 10px;
    to'ldirish: 10px;
    chegara: 1px qattiq engil;
}
.main-content div.new-game-setup, .main-content div.join-game-setup {
    panjara ustuni: 1 / oraliq 2;
}
# tugmasi-davomi {
    panjara ustuni: 1 / oraliq 2;
    margin-top: 20px;
}

"Davom etish" tugmachasi hozirda hech narsa qilmaydi, chunki foydalanuvchi keyingi bo'limda yangi o'yin yaratmoqchi bo'lganida yangi aqlli shartnomani tuzish va davlat kanalini ochish imkoniyatini yaratmaydi.

2. Dastlabki Smart shartnomani yaratish va ulash

Web3.js yordamida aqlli shartnomaning asosiy versiyasini yaratish va uni javascript bilan bog'lash vaqti keldi. Hozircha bizga faqat konstruktor va ba'zi asosiy ma'lumotlar kerak. Dice.sol deb nomlangan yangi faylga ushbu kodni o'z qo'llaringiz bilan yozing:

pragma mustahkamligi 0,4,25;
shartnoma Dice {
    manzili jamoat o'yinchisi1;
    adres public player2;
    uint256 jamoat o'yinchisi1Escrow;
    uint256 jamoat o'yinchisi2Escrow;
    pudratchi () umumiy pullik {
        talab qilish (msg.value> 0);
        player1 = msg.sender;
        player1Escrow = msg.value;
    }
    funktsiya setupPlayer2 () umumiy to'lanadigan {
        talab qilish (msg.value> 0);
        player2 = msg.sender;
        player2Escrow = msg.value;
    }
}

Ikkita funktsiya mavjud, birinchi pleyerning manzili va o'tish joyini sozlaydigan konstruktor va ikkinchi pleyerning ma'lumotlarini sozlash uchun setupPlayer2 () funktsiyasi mavjud.

Foydalanuvchi "Davom etish" tugmachasini bosganda, biz shartnomani o'rnatamiz va belgilangan msg.value bilan konstruktorni bajaramiz. Buning uchun biz aqlli shartnomada web3.js dasturini amalga oshirishimiz kerak. Chunki bu brauzerda blockchain bilan aloqa qilishning asosiy usuli.

O'zingizning ilovalaringiz papkasida web3.js-ni quyidagi manzildan oling: https://github.com/ethereum/web3.js/blob/develop/dist/web3.js rasmiy bo'lib, tarqatish kodini yangilang.

Loyihangiz uchun yuklab olish uchun ushbu havolaga o'ting, to'liq kodni ko'rish uchun xom-ga cherting va o'z loyihangiz papkasidagi web3.js deb nomlangan yangi faylga joylashtirish uchun kodni nusxasini oling:

Sahifani oching,

Agar siz metamaskdan foydalansangiz, buni qilishning hojati yo'q, chunki metamask siz uchun web3.js versiyasini kiritgan, ammo agar metamask mavjud bo'lmasa, loyihangizda web3-kutubxonasi blockchain bilan aloqada bo'lishi foydali.

Biz blockchain bilan suhbatlashish uchun metamaskdan foydalanmoqdamiz. Ammo brauzeringizda index.html faylini ochganingizda ishlamaydi, chunki metamask uchun kengaytma: // kengaytmasi mavjud emas.

Keyin fayllarni http: // localhost: 8080 url-lariga xizmat qiladigan mahalliy serverni ishga tushirishimiz kerak, chunki siz index.html faylini to'g'ridan-to'g'ri ochganingizda metamask ishlamaydi. Buning uchun terminalni oching va uni o'rnating:

npm i -g http-server

So'ngra sizning loyihaviy papkangizda sizning index.html uchun mahalliy serverni ishga tushirish uchun http-serverini bajaring:

http-server

Bu fayllar localhost-da ishlaydi: 8080, siz ularga kirishingiz va metamaskadan veb3-ni kiritishingiz mumkin.

Bu holda, foydalanuvchi "Davom etish" tugmachasini bosganda, bizning veb-ilovamizdan tuzgan shartnomani ishlatishga e'tibor qaratishimiz mumkin.

Yangi shartnomani o'rnatish uchun bizga ABI, konstruktor parametrlari va baytekod kerak. Bular web3.js uchun talablar.

  1. ABI yaratish uchun remix.ethereum.org saytiga o'ting, asosiy qismga kodingizni qo'ying va ABI-ni bosing:

Bu ABI kodini nusxa ko'chiradi. Loyihaviy papkangizga o'ting va shartnomaData.js deb nomlangan faylni yarating, u erda kodni abi deb nomlangan o'zgaruvchiga joylashtiring:

2. Endi bizga aqlli shartnomangizning bayt kodi kerak. Bytecode - bu blockchain-ga joylashtiriladigan tuzilgan aqlli shartnoma, uni ishga tushirish uchun bizga bu ma’lumot kerak. Baytekodni olish uchun yana remiks qilish kerak va ushbu tugmani bosing:

Kodingiz uchun bayt kodini nusxalash tugmasi

Va bu kabi ma'lumotlar bilan bytecode deb nomlangan shartnomaData.js ichida boshqa o'zgaruvchini yarating:

Agar xuddi shu kodni nusxalashingiz mumkin, agar sizning aqlli shartnomangiz yuqorida men yaratganga o'xshasa.

Abi va bytecode parametrlariga ega bo'lish uchun index.js faylidan oldin javascript faylini html-ga import qiling:

Javascript-da shartnoma tuzishdan oldin, "Yangi o'yinni boshlash" bo'limining davom etish tugmachasiga tadbir tinglovchisini qo'shishimiz kerak:

Men u erda nima qildim:

  • Men idlarga idlarni qo'shdim, bu erda foydalanuvchidan eskroga qancha eter qo'yish kerakligi va agar u mavjud bo'lgan o'yinda ishtirok etayotgan bo'lsa, shartnomaning manzili haqida so'raladi.
  • Keyin javascript importini index.js-ga qo'shdim, chunki biz abi va bayt kodini indeks.js ichida olishimiz kerak, chunki avval uni import qilish kerak.

Keyin biz ushbu tugmachani ishlashi uchun kerakli mantiqni qo'shamiz. HTML-da shartnoma manzili bo'sh yoki yo'qligini tekshiramiz.

Agar bo'sh bo'lmasa, o'yinchi yangi o'yinni qiziqarli tarzda boshlamoqda deb taxmin qilamiz, agar siz manzilni bo'sh qoldirsangiz, qo'shilish tugmachasi yordamida o'yinni boshlashingiz mumkin.

Sizga butun kodni ko'rsatmasdan oldin, men sizga web3.js.-dan foydalanib shartnomani qanday tuzishni tushuntirmoqchiman. Bu juda oddiy ko'rinadi, lekin men ba'zi joylarda qoqilib qoldim.

Shunday qilib, foydalanuvchi "Yangi o'yinni boshlash" tugmachasini bosganda, bizga efirdagi pul miqdorini va uning manzilini beradi, biz ushbu funktsiya bilan yangi shartnomani o'rnatamiz:

Aslida siz abi bilan shartnoma nusxasini yaratasiz va baytod kodi bilan ushbu shartnoma uchun .new () usulini bajarasiz.

Keyin, qayta qo'ng'iroq qilish paytida, agar sizda va natijada ob'ekt bo'lsa, xato paydo bo'ladi. Natija ob'ekti konchilar tomonidan tranzaktsiyani ko'rib chiqishda tuzilgan shartnomaning manzilini o'z ichiga oladi.

Bu shuni anglatadiki, ushbu qayta qo'ng'iroq 2 marta amalga oshiriladi. Biri siz shartnomani tuzishni amalga oshirganingizda, ikkinchisi esa shartnomaning manzili mavjud bo'lganda.

Shartnomaning manzili qachon mavjudligini oddiy ifoda bilan tekshirishingiz mumkin:

if (! result.address) {
    // Shartnoma tuzish boshlandi
} else {
    // Shartnoma tuzilgan va siz result.address bilan manzildan foydalanishingiz mumkin
}

Shunday qilib, web3 bilan shartnoma tuzasiz.

Ammo siz blockchain-da mavjud shartnomaga kirishni xohlasangiz nima bo'ladi?

Shartnoma namunasini yaratish uchun zar o'yiniga "qo'shilishimiz" kerak. Buning uchun bizga faqat ABI va shartnomaning manzili kerak, byt kod kerak emas. Buni veb-3da qanday qilish kerak:

Shartnoma = web3.eth.contraction (abi)
shartnomaInstance = Shartnoma.at (manzil tanlangan)

Shundan so'ng siz ushbu shartnomaning funktsiyalarini quyidagicha bajarishingiz mumkin:

shartnomaInstance.setupPlayer2 ({
  qiymati: web3.toWei (valueSelected),
  gaz: 4e6
}, (xato, natija) => {
    // Funktsiyani bajargandan so'ng biror narsa qilish
})

Sizga faqat misol, funktsiyaning nomi, agar mavjud bo'lsa va qayta qo'ng'iroq qilish funktsiyasi kerak bo'lsa.

Aqlli shartnomani o'rnatish va o'rnatish jarayoni javascript-da qanday ishlashini tushunganingizda, men sizga dasturning to'liq kodini ko'rsataman:

Yuqoridagi hamma narsaga e'tibor bermang, diqqat qilishingiz kerak bo'lgan narsa "# tugmani bosish" tinglovchisida joylashgan:

document.querySelector ('# tugmani bosish'). addEventListener ()

1-o'yinchi yoki 2-o'yinchi 'Davom etish' tugmachasini bosganda siz nima bo'lishidan xavotirda bo'lishingiz kerak. Quyida buzilish:

  • Har qanday o'yinchi ushbu tugmani bosganida, ushbu voqea tinglovchisi bajariladi
  • Ichkarida, men kiritgan narsalarning qiymatini, agar o'yinchi mavjud o'yinga qo'shilgan bo'lsa, saqlashni va o'rnatilgan shartnomaning manzilini bilib olaman. Bular qiymatSelected va addressSelected o'zgaruvchilar.
  • Keyin men abi bilan shartnomani sozlash bo'yicha o'zgaruvchini yarataman, bu ikkala o'yinchiga ham kerak bo'ladi.
  • Shundan so'ng men o'rnatilgan shartnomaning manzili belgilanganmi yoki yo'qmi ko'raman. Agar manzil bo'sh bo'lsa, demak, pleer "Yangi o'yinni boshlash" tugmachasini bosdi, chunki u holda u manzil kiritilishini ko'rmaydi.
  • Bu shuni anglatadiki, men yangi o'yin yoki aqlli shartnomani o'sha o'yinchi uchun tanlangan eskro bilan birga tarqataman.
  • Ushbu birinchi o'yinchi o'rnatilgan aqlli shartnomaning manzilini ko'radi. Zar o'yinini boshlash uchun u ushbu manzilni boshqa o'yinchi bilan baham ko'rishi kerak, chunki sizga 2 nafar o'yinchi kerak bo'ladi.
  • Agar u manzilni taqdim etgan bo'lsa, demak u mavjud o'yinga qo'shilishni xohlaydi. Biz buni aqlli shartnomaning namunasini uning manzilidan foydalanib yaratamiz va shundan so'ng SetPlayer2 () funktsiyasini bajaramiz.
  • Men setInterval funktsiyasidan foydalanib, har 1 sekundni tekshirib ko'rmoqdaman, agar 2 o'yinchini sozlash tugagan bo'lsa yoki o'yinni boshlamasangiz.

Ajoyib! Agar siz hozirgacha buni amalga oshirgan bo'lsangiz, bu sizga maqtovga sazovor bo'lganingizni va aslida biror narsa o'rganayotganingizni anglatadi. Eng yaxshi qism siz o'ylaganingizdan ko'ra yaqinroq. Keyingi maqolada, kengaytiriladigan Ethereum markazlashtirilmagan dasturini yaratish uchun javascript-da sizning o'yiningiz uchun davlat kanallarini qanday yaratishni ko'rasiz.

O'tkazib yubormang va uni tugatgandan so'ng birinchi bo'lib o'qing. Menga to'g'ridan-to'g'ri yangilanishlar va ma'lumotlarni olish uchun Ethereum dasturchilarining eksklyuziv pochta ro'yxatiga qo'shiling: http://eepurl.com/dDQ2yX

2-qism hozirda shu erda mavjud: https://medium.com/@merunasgrincalaitis/how-to-create-scalable-dapps-and-smart-contracts-in-ethereum-with-state-channels-step-by-step- 690f71a9bf2f

Agar siz bunday ilg'or ma'lumotlardan bezovtalanayotgan bo'lsangiz yoki siz qattiqlik va Ethereum damplari bilan yangi tanish bo'lsangiz, mening "Ethereum ishlab chiqaruvchisi: Skretchadan qat'iyatlilikni o'rganing" kitobini ko'ring https://merunas.io/