Sveiki visiem!
Pavisam nesen Waves Labs
MÄs izvÄlÄjÄmies DAO lietu, jo
MÄs sÄkÄm ar vienkÄrÅ”u piemÄru
ApskatÄ«sim Å”o piemÄru, pÄrbaudÄ«sim hipotÄzes un apskatÄ«sim dažas dÄ«vainÄ«bas:
Ä»aujiet mums iegÅ«t Alisi ā dApp Ä«paÅ”nieci
Boob un Cooper ir Alises partneri, Alice-BC DAO lÄ«dzdibinÄtÄji
Neli ir uzÅÄmuma Ä«paÅ”nieks, kuram nepiecieÅ”ams finansÄjums
Banka - banka, kas izplata žetonus
1. posms. Atlikumu inicializÄcija
Lai saÅemtu žetonus viļÅu testa tÄ«klÄ, jums jÄsazinÄs
Adresi varat atrast IDE, atverot sava konta informÄciju.
MÄs izceļam 10. banku VIÄ»Å
US. PÄc tam mÄs pÄrbaudÄm, vai tie ieradÄs, izmantojot bloÄ·ÄÅ”anas un darÄ«jumu pÄrlÅ«kprogrammu:
Tagad izdalÄ«sim žetonus no bankas pÄrÄjiem dalÄ«bniekiem. (PiezÄ«mes: visi darÄ«jumi viļÅu tÄ«klÄ nav bezmaksas, tÄpÄc visiem dalÄ«bniekiem ir nepiecieÅ”ams minimÄlais pozitÄ«vs atlikums, lai veiktu darÄ«jumus).
1 WAVES = 100000000 vienÄ«bu (viļÅu), jo summas var bÅ«t tikai veseli skaitļi
0.01 WAVES (darījuma maksa) = 1000000
Banka -> [3 VIĻŠI] -> Alise, izmantojot TransferTransaction (tips: 4).
MÄs pÄrbaudÄm, vai env.SEED, no kuras tiek parakstÄ«ti darÄ«jumi, atbilst mÅ«su bankai:
ļæ¼
Ja jums nav atbilstoÅ”as āāsÄkuma frÄzes, vienkÄrÅ”i pÄrslÄdzieties uz to cilnÄ Konti un pÄrbaudiet vÄlreiz.
PÄc tam mÄs izveidojam, paziÅojam un parakstÄm darÄ«jumu par 3 WAVES Alice nodoÅ”anu.
Varat arÄ« uzzinÄt Alises datus, izmantojot mainÄ«go env.accounts. NumerÄcija sÄkas no 0, tÄpÄc Alise ir env.accounts[1].
broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))
RezultÄtu var novÄrot arÄ« pÄrlÅ«kprogrammÄ, saite uz to mums tiks atgriezta tÅ«lÄ«t pÄc izpildes
MÄs pÄrliecinÄmies, ka Alises bilance tiek papildinÄta par 3 WAVES un bankas atlikums paliek 10 - 3 - 0.01 = 0.699.
MÄs nosÅ«tÄm Boobam un KÅ«peram katrs pa 3 VIÄ»Å
IEM, kÄ arÄ« Nelijai, Ksenai un Markam katram pa 0.2 VIÄ»Å
IEM.
(PiezÄ«mes: mÄs pieļÄvÄm vienas rakstzÄ«mes kļūdu un nosÅ«tÄ«jÄm Neli 0.02 VIÄ»Å
US. Esiet uzmanīgi!)
broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))
PÄc visu dalÄ«bnieku atlikumu papildinÄÅ”anas mÄs redzam:
2. posms. Izveidojiet dApp kontu
MÄs vienojÄmies, ka Alise bÅ«s decentralizÄtÄs lietojumprogrammas veidotÄja un Ä«paÅ”niece.
Atveriet sadaļu Konti, iestatiet to kÄ SEED un pÄrbaudiet, vai env.SEED atbilst Alisei.
MÄÄ£inÄsim Alises kontÄ uzstÄdÄ«t pÄc iespÄjas vienkÄrÅ”Äko skriptu (lÄ«gumu).
Viedie kontakti programmÄ Waves ir predikÄti, kas noteiktos apstÄkļos aizliedz vai atļauj jebkÄda veida izejoÅ”os darÄ«jumus. Å ajÄ gadÄ«jumÄ Å”is nosacÄ«jums ir VIENMÄR. LÄ«guma kods ir patiess. Izsauciet deploy ().
Maksa par setScript darÄ«jumu 1400000/100000000 = 0.014 WAVES. Alises bilancÄ ir palikuÅ”i 2.986 VIĻŠI.
Tagad mÄÄ£inÄsim Alises kontÄ instalÄt sarežģītÄku viedo lÄ«gumu loÄ£iku, kas aprakstÄ«ta rakstÄ
Ride4Dapps tagad ir iekļauti 2 jauni anotÄciju veidi:
- @Callable(i) ā par parametru i Åem datus par to, kurÅ” konts izsauca/parakstÄ«ja darÄ«jumu. Å Ä«s funkcijas rezultÄts nosaka dApp konta stÄvokļa izmaiÅas. Citi konti var izveidot darÄ«jumus un izpildÄ«t funkcijas ar Å”o anotÄciju un mainÄ«t dApp konta stÄvokli.
- @Verifier(tx) ā DarÄ«jumu pÄrbaudÄ«tÄjs ar transakcijas tx parametru. Atbilst predikÄtu loÄ£ikai no RIDE. Å ajÄ izteiksmÄ varat atļaut vai aizliegt turpmÄkas izmaiÅas viedo lÄ«gumu loÄ£ikÄ dApp kontÄ.
Daram dApp kontu kÄ kopÄ«gu maku visiem dalÄ«bniekiem.
Lai pÄrbaudÄ«tu, kurÅ” lÄ«gums paÅ”laik ir aktÄ«vs jÅ«su kontÄ, bloku pÄrlÅ«kÄ varat kopÄt viedÄ lÄ«guma base64 kodu un atpazÄ«t to, izmantojot dekompilatoru (
MÄs pÄrliecinÄmies, ka viedÄ lÄ«guma loÄ£ika atbilst tam, ko mÄs sagaidÄm.
Alises bilancÄ ir palikuÅ”i 2.972 VIÄ»Å
I.
Å Ä« dApp reÄ£istrÄ, cik daudz katrs dalÄ«bnieks iemaksÄ kopÄjÄ fondÄ, izmantojot mehÄnismu datu transakcija ā DataEntry (paÅ”reizÄjÄ atslÄga, jauna summa), kur currentKey ir konts, kas izsauc depozÄ«ta funkciju, un newAmount ir papildinÄtÄ atlikuma vÄrtÄ«ba.
BÅ«s un KÅ«pers veic iemaksas dApp kontÄ ar 1 WAVES.
MÄs pieļaujam kļūdu un darÄ«jums nenotiek. TÄ kÄ, neskatoties uz to, ka bijÄm pÄrliecinÄti, ka veicam darÄ«jumu Boba vÄrdÄ, mÄs kļūdÄ«jÄmies indeksÄ un norÄdÄ«jÄm Bankas kontu, kuram nav gudrÄ lÄ«guma. Å eit ir vÄrts atzÄ«mÄt svarÄ«gu punktu - par neveiksmÄ«giem mÄÄ£inÄjumiem uzsÄkt darÄ«jumus ir jÄmaksÄ. nevar noÅemt! Alises bilancÄ ir palikuÅ”i 2.972 VIĻŠI. Bobam ir 3 VIĻŠI.
Bobs uz dApp kontu nosūtīja 1 WAVES.
broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))
Bobam ir atlikuÅ”i 1.99 VIĻŠI. Tas ir, Bobs samaksÄja 0.01 WAVES komisiju
Alises bilancÄ bija 2.972 VIÄ»Å
I, tagad tas ir 3.972. DarÄ«jums tika reÄ£istrÄts arÄ« Alises kontÄ, taÄu no dApp konta (Alise) komisijas maksa netika iekasÄta.
PÄc tam, kad KÅ«pers arÄ« papildinÄja kontu, Alises bilance kļuva 4.972 VIÄ»Å
I.
Cilnes Dati bloku pÄrlÅ«kÄ varat uzzinÄt, kam pieder, cik VIÅ U kopÄjÄ makÄ.
KÅ«pers mainÄ«ja savas domas par 1 WAVES atstÄÅ”anu vispÄrÄjÄ makÄ un nolÄma izÅemt pusi no radniecÄ«bas. Lai to izdarÄ«tu, viÅam ir jÄizsauc atsaukÅ”anas funkcija.
TomÄr mÄs atkal kļūdÄ«jÄmies, jo izÅemÅ”anas funkcijai ir pavisam citi parametri un cits paraksts. IzstrÄdÄjot viedos lÄ«gumus RIDE4DAPPS, jums jÄpievÄrÅ” uzmanÄ«ba Å”im punktam
KÅ«pera bilancÄ tagad ir 2.48 VIĻŠI. AttiecÄ«gi 3 VIĻŠI - 1 - 0.01, un pÄc tam + 0.5 - 0.01. AttiecÄ«gi katrs zvans iemaksÄt un izÅemt maksÄ 0.01 VIĻŠU. RezultÄtÄ ieraksti dApps Ä«paÅ”nieku tabulÄ mainÄ«jÄs Å”Ädi.
Bobs arÄ« nolÄma izÅemt naudu no kopÄ«gÄ maka, taÄu kļūdÄ«jÄs un mÄÄ£inÄja izÅemt 1.5 VIĻŠUS.
TomÄr viedajam lÄ«gumam bija Äeka Å”ai situÄcijai.
Xena ir krÄpniece, viÅa mÄÄ£inÄja izÅemt 1 WAVES no kopÄjÄ konta.
ArÄ« viÅai tas neizdevÄs.
NÄkamajÄ daÄ¼Ä mÄs apskatÄ«sim sarežģītÄkus jautÄjumus, kas saistÄ«ti ar Alises dApp konta nepilnÄ«bÄm.
Avots: www.habr.com