Hello dulur!
Nu leuwih anyar, Waves Labs
Urang milih kasus DAO sabab
Urang mimitian ku conto basajan dina
Hayu urang nempo conto ieu, nguji hipotesis jeung kasampak di sababaraha oddities:
Hayu urang gaduh Alice - Pamilik dApp
Boob sareng Cooper mangrupikeun mitra Alice, pendiri Alice-BC DAO
Neli téh boga usaha anu butuh waragad
Bank - bank anu ngadistribusikaeun token
Tahap 1. Initialization of balances
Pikeun nampi token dina jaringan uji gelombang, anjeun kedah ngahubungi
Anjeun tiasa mendakan alamatna dina IDE ku muka detil akun anjeun.
Kami nyorot Bank 10 GELOMBANG. Teras we pariksa yen aranjeunna anjog ngaliwatan blok na urus browser:
Ayeuna hayu urang ngadistribusikaeun token ti bank ka sesa pamilon. (Catetan: Sadaya transaksi dina jaringan gelombang henteu gratis, ku kituna kasaimbangan positip minimum diperyogikeun pikeun sadaya pamilon pikeun ngalakukeun transaksi).
1 GELOMBANG = 100000000 unit (gelombang), sabab jumlahna ngan ukur integer.
0.01 GELOMBANG (Biaya Transaksi) = 1000000
Bank -> [3 GELOMBANG] -> Alice, via TransferTransaction (Tipe: 4).
Kami pariksa yén env.SEED ti mana transaksi ditandatanganan cocog sareng Bank kami:

Upami anjeun teu gaduh frasa cikal anu cocog, pindah ka éta dina tab Akun sareng parios deui.
Saatos ieu, urang nyiptakeun, ngumumkeun sareng nandatanganan transaksi pikeun transfer 3 WAVES Alice.
Anjeun oge bisa manggihan data Alice ngaliwatan variabel env.accounts. Panomeran dimimitian ti 0, jadi Alice env.accounts[1].
broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))
Hasilna ogé tiasa dititénan dina browser, tautan kana éta bakal dipulangkeun ka kami langsung saatos palaksanaan
Urang pastikeun yén kasaimbangan Alice urang replenished ku 3 GELOMBANG, sarta kasaimbangan bank tetep dina 10 - 3 - 0.01 = 0.699.
Kami ngirimkeun Boob sareng Cooper 3 GELOMBANG masing-masing, sareng Neli, Xena sareng Mark 0.2 GELOMBANG masing-masing dina cara anu sami.
(Catetan: Urang nyieun kasalahan hiji karakter tur dikirim Neli 0.02 WAVES. Ati-ati!)
broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))
Saatos ngeusian kasaimbangan sadaya pamilon, urang tingali:
Tahap 2. Jieun akun dApp
Kami sapuk yén Alice bakal janten panyipta sareng gaduh aplikasi desentralisasi.
Pindah ka Akun, atur janten SEED sareng pariksa env.SEED cocog sareng Alice.
Hayu urang coba masang skrip pangbasajanna (kontrak) dina akun Alice.
Kontak pinter dina Waves mangrupakeun predikat anu ngalarang atawa ngidinan sagala jinis transaksi kaluar lumangsung dina kaayaan nu tangtu. Dina hal ieu, kaayaan ieu salawasna. Kode kontrak leres. Nelepon nyebarkeun ().
Fee per transaksi setScript 1400000/100000000 = 0.014 GELOMBANG. Alice ngagaduhan 2.986 GELOMBANG dina kasaimbangan na.
Hayu urang ayeuna coba masang logika kontrak pinter leuwih kompleks dina akun Alice, dijelaskeun dina
Ride4Dapps ayeuna kalebet 2 jinis anotasi énggal:
- @Callable(i) - nyokot salaku parameter i, data ngeunaan nu akun disebut / ditandatanganan urus. Hasil tina fungsi ieu anu nangtukeun parobahan dina kaayaan akun dApp. Akun anu sanés tiasa nyiptakeun transaksi sareng ngalaksanakeun fungsi kalayan anotasi ieu sareng ngarobih kaayaan akun dApp.
- @Verifier(tx) - Verifier transaksi sareng parameter tx transaksi. Cocog jeung logika predikat ti RIDE. Dina ekspresi ieu anjeun tiasa ngijinkeun atanapi nyaram parobahan salajengna kana logika kontrak pinter dina akun dApp.
Hayu urang ngalakukeun dappa akun salaku dompét umum pikeun sakabéh pamilon.
Pikeun mariksa kontrak mana anu ayeuna aktip dina akun anjeun, anjeun tiasa nyalin kode base64 tina kontrak pinter dina blok explorer sareng ngakuanana nganggo decompiler (
Kami mastikeun yén logika kontrak pinter cocog sareng anu kami ngarepkeun.
Alice ngagaduhan 2.972 GELOMBANG dina kasaimbangan na.
dApp Ieu ngalacak sabaraha unggal pamilon nyumbang kana dana umum ngaliwatan mékanisme a transaksi data - DataEntry (currentKey, newAmount), dimana currentKey nyaéta akun nu nelepon fungsi deposit, sarta newAmount nyaeta nilai kasaimbangan replenished.
Boob sareng Cooper ngadamel depositna ka akun dApp kalayan 1 GELOMBANG.
Urang nyieun kasalahan jeung urus teu ngaliwatan. Kusabab, sanajan kanyataan yén kami yakin yén kami ngalakukeun transaksi atas nama Bob, urang nyieun kasalahan dina indéks jeung nunjukkeun rekening Bank nu teu boga kontrak pinter. Perhatoskeun titik anu penting di dieu - aya biaya pikeun usaha anu gagal pikeun ngamimitian transaksi teu bisa dipiceun! Alice ngagaduhan 2.972 GELOMBANG dina kasaimbangan na. Bob boga 3 GELOMBANG.
Bob ngirimkeun 1 WAVES ka Akun dApp.
broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))
Bob boga 1.99 WAVES ditinggalkeun. Nyaéta, Bob mayar komisi 0.01 WAVES
Alice ngagaduhan 2.972 GELOMBANG dina kasaimbanganna, ayeuna éta 3.972. A urus ieu ogé didaptarkeun dina akun Alice, tapi euweuh komisi ieu boga muatan tina Akun dApp (Alice).
Saatos Cooper ogé ngeusian akun éta, kasaimbangan Alice janten 4.972 GELOMBANG.
Anjeun tiasa mendakan saha anu gaduh sabaraha WAVES dina dompét umum dina blok explorer dina tab Data.
Cooper robah pikiran ngeunaan ninggalkeun jumlah 1 GELOMBANG dina dompét umum sarta mutuskeun pikeun mundur satengah tina pangirut. Jang ngalampahkeun ieu, anjeunna kedah nyauran fungsi mundur.
Najan kitu, urang éta salah deui, saprak fungsi ditarikna boga parameter lengkep beda jeung signature béda. Nalika anjeun mendesain kontrak pinter dina RIDE4DAPPS anjeun kedah nengetan titik ieu
Cooper ayeuna gaduh 2.48 WAVES dina neraca na. Sasuai, 3 GELOMBANG - 1 - 0.01, lajeng + 0.5 - 0.01. Sasuai, unggal panggero pikeun deposit na mundur waragad 0.01 WAVES. Hasilna, éntri dina tabel pamilik dApps robih sapertos kieu.
Bob ogé mutuskeun pikeun narik sababaraha duit tina dompét dibagikeun, tapi nyieun kasalahan sarta diusahakeun mundur 1.5 gelombang.
Nanging, kontrak pinter ngagaduhan cek pikeun kaayaan ieu.
Xena mangrupikeun scammer, anjeunna nyobian mundur 1 GELOMBANG tina total akun.
Éta ogé henteu hasil pikeun anjeunna.
Dina bagian salajengna, urang bakal ningali masalah anu langkung kompleks anu aya hubunganana sareng kasampurnaan Akun Alice dApp.
sumber: www.habr.com