MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

Sveiki visiem!

Pavisam nesen Waves Labs paziņoja izstrādātāju konkurss, kas veltÄ«ts RIDE viedā lÄ«guma valodas paplaÅ”inājuma izlaiÅ”anai decentralizētām lietojumprogrammām Ride4Dapps testa tÄ«klā!

Mēs izvēlējāmies DAO lietu, jo Ventuary plāno izstrādāt dApps ar sociālajām funkcijām: balsoÅ”anu, lÄ«dzekļu vākÅ”anu, trasta pārvaldÄ«bu utt.
Mēs sākām ar vienkārÅ”u piemēru Jautājumu un atbilžu sesijas un RIDE IDE - piemērs ar kopÄ«gs maks.

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 krāns un norādiet adresi, uz kuru sūtīt žetonus.
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: recenzents

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:
MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)
ļæ¼
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].
MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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 darījumiem.

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ācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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:
MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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 ().

MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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ā piemērs

Ride4Dapps tagad ir iekļauti 2 jauni anotāciju veidi:

  1. @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.
  2. @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.
MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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 (piemēram)
MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)
MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)
MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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ācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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

MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

Bobam ir atlikuÅ”i 1.99 VIĻŅI. Tas ir, Bobs samaksāja 0.01 WAVES komisiju

MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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.

MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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.

MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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

MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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.

MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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.

MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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.

MācÄ«Å”anās rakstÄ«t Waves viedos lÄ«gumus RIDE un RIDE4DAPPS. 1. daļa (vairāku lietotāju maks)

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

Pievieno komentāru