RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Hello!

Bu yaxınlarda, Waves Labs elan etdi Ride4Dapps mərkəzləşdirilməmiş proqramları üçün RIDE ağıllı müqavilə dili genişlənməsinin sınaq şəbəkəsinə buraxılmasına həsr olunmuş tərtibatçılar üçün müsabiqə!

Biz DAO davasını seçdik, çünki Ventuar sosial funksiyaları olan dApp-ı inkişaf etdirməyi planlaşdırır: səsvermə, fandreyzinq, etibarlı idarəetmə və s.
Sadə bir nümunə ilə başladıq Sual-cavab sessiyalarıRIDE IDE - ilə bir nümunə ümumi pul kisəsi.

Gəlin bu nümunəni təhlil edək, fərziyyələri yoxlayaq və bəzi qəribəlikləri nəzərdən keçirək:

Bizə Alice - dApp Sahibi olsun
Boob və Cooper Alice-BC DAO-nun həmtəsisçiləri olan Alicenin tərəfdaşlarıdır
Neli maliyyəyə ehtiyacı olan biznes sahibidir
Bank - ayələr paylayan bank

Mərhələ 1. Balansların işə salınması

Dalğalar test şəbəkəsində tokenləri almaq üçün əlaqə saxlamalısınız kran və tokenlərin göndəriləcəyi ünvanı göstərin.
Ünvanı IDE-də hesab təfərrüatlarını aşkar etməklə tapmaq olar.
Bank 10 WAVES seçin. Onların blokdan və əməliyyat tədqiqatçısından keçdiyini yoxladıqdan sonra: rəyçi

İndi bankdan tokenləri qalan iştirakçılara paylayaq. (Qeydlər: Dalğalar şəbəkəsində bütün əməliyyatlar pulsuz deyil, ona görə də əməliyyatların aparılması üçün bütün iştirakçılar üçün minimum müsbət balans tələb olunur).

1 DALĞA = 100000000 vahid (dalğalar) çünki məbləğlər yalnız tam ədəd ola bilər
0.01 DALĞA (Əməliyyat haqqı) = 1000000

Bank -> [3 DALĞA] -> Alice, TransferTransaction vasitəsilə (Növ: 4).

Əməliyyatların imzalandığı env.SEED-in Bankımıza uyğun olduğunu yoxlayırıq:
RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Uyğun əsas ifadələriniz yoxdursa, sadəcə Hesablar sekmesinde ona keçin və yenidən yoxlayın.
Bundan sonra biz 3 WAVES Alice-in transferi ilə bağlı əməliyyat yaradırıq, elan edirik və imzalayırıq.
Siz həmçinin env.accounts dəyişəni vasitəsilə Alisin məlumatlarını tapa bilərsiniz. Nömrələmə 0-dan başlayır, ona görə də Alice env.accounts[1]-dir.
RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))

Nəticəni brauzerdə də müşahidə etmək olar, ona bir keçid icradan dərhal sonra bizə qaytarılacaqdır əməliyyatlar.

Biz əmin edirik ki, Alisin balansı 3 DALĞA ilə doldurulur və bankın balansında 10 - 3 - 0.01 = 0.699 qalsın.
RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Boob və Cooper-i 3 DALĞA ilə, Neli, Xena və Markı isə eyni şəkildə 0.2 DALĞA göndəririk.
(Qeyd: Biz bir simvol səhvinə yol verdik və Neli 0.02 DALĞA göndərdik. Ehtiyatlı olun!)

broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))

Bütün iştirakçıların balanslarını doldurduqdan sonra görürük:
RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Mərhələ 2. dApp hesabının yaradılması

Biz razılaşdıq ki, Alice mərkəzləşdirilməmiş tətbiqin yaradıcısı və sahibi olacaq.
Hesablarda davam edin və onu SEED olaraq təyin edin və env.SEED-in Alice ilə uyğunluğunu yoxlayın.

Gəlin Alicenin hesabına mümkün olan ən sadə skripti (müqavilə) quraşdırmağa çalışaq.
Dalğalardakı ağıllı kontaktlar müəyyən şərtlər altında bir növ gedən əməliyyatın yerinə yetirilməsinə mane olan və ya icazə verən predikatlardır. Bu halda həmin şərt HƏMİŞƏDİR. Müqavilə kodu doğrudur. Biz deploy() çağırırıq.

RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Hər setScript əməliyyatı üçün haqq 1400000/100000000 = 0.014 DALĞA. Alisin balansında 2.986 DALĞA qalıb.

İndi gəlin Alicenin hesabına daha mürəkkəb ağıllı müqavilə məntiqini quraşdırmağa çalışaq misal

Ride4Dapps indi 2 yeni annotasiya növü daxildir:

  1. @Çağırılan(i) — i parametri kimi hansı hesabın əməliyyatı çağırdığı/imzaladığı barədə məlumatları götürür. dApp hesabının vəziyyətindəki dəyişikliyi müəyyən edən bu funksiyanın nəticəsidir. Digər hesablar bu annotasiya ilə əməliyyatlar yarada və funksiyaları yerinə yetirə və dApp hesabının vəziyyətini dəyişə bilər.
  2. @Verifier(tx) — Tranzaksiya tx parametri ilə əməliyyat yoxlayıcısı. RIDE-dən predikatların məntiqinə uyğundur. Məhz bu ifadədə siz dApp hesabında ağıllı müqavilələrin məntiqində əlavə dəyişikliklərə icazə verə və ya qadağan edə bilərsiniz.

edək dApp bütün iştirakçılar üçün ümumi pul kisəsi kimi hesab.
RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Hesabda hazırda hansı müqavilənin aktiv olduğunu yoxlamaq üçün ağıllı müqavilənin base64 kodunu blok tədqiqatçısına köçürə və onu dekompilyator vasitəsilə tanıya bilərsiniz (məsələn)
RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)
RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)
RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Ağıllı müqavilənin məntiqinin gözlədiyimizə uyğun olduğuna əminik.
Alisin balansında 2.972 DALĞA qalıb.

Bu dApp mexanizm vasitəsilə iştirakçıların hər birinin ümumi fonda nə qədər töhfə verdiyini izləyir məlumat əməliyyatı - DataEntry (cari açar, yeni məbləğ), burada cariKey depozit funksiyasını çağıran hesab, newAmount isə doldurulmuş balansın dəyəridir.

Boob və Cooper dApp hesabına 1 DALĞA əmanət edir.
RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Səhv edirik və əməliyyat keçmir. Bob adından əməliyyat etdiyimizə əmin olmağımıza baxmayaraq, indeksdə səhvə yol verdik və ağıllı müqaviləsi olmayan bir Bank hesabını göstərdik. Burada vacib bir məqamı qeyd etmək lazımdır - əməliyyatlara başlamaq üçün uğursuz cəhdlər üçün komissiya silinməyib! Alisin balansında 2.972 DALĞA qalıb. Bobun 3 DALĞASI var.

Bob dApp Hesabına 1 DALĞA göndərdi.

broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))

RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Bobda 1.99 DALĞA qalıb. Yəni, Bob 0.01 DALĞA komissiyası ödəyib

RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Alisin balansında 2.972 DALĞA var idi, bu, 3.972 oldu. Alisin hesabında əməliyyat da qeydə alınıb, lakin dApp Hesabından (Alice) heç bir komissiya tutulmayıb.
Kuper də hesabı doldurduqdan sonra Alisin balansında 4.972 DALĞA var idi.

RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Blok tədqiqatçısında ümumi pul kisəsinin neçə DALĞA-nın kimə məxsus olduğunu Məlumatlar sekmesinde öyrənə bilərsiniz.

Cooper ümumi cüzdanda 1 DALĞA məbləğini tərk etmək fikrini dəyişdi və yaxınlıqların yarısını geri götürməyə qərar verdi. Bunun üçün o, geri çəkilmə funksiyasını çağırmalıdır.

RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Ancaq geri götürmə funksiyasının tamam başqa parametrləri, fərqli imzası olduğu üçün yenə səhvə yol verdik. RIDE4DAPPS-də ağıllı müqavilələr tərtib edərkən bu məqama diqqət yetirməlisiniz

RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Kuperin balansında 2.48 DALĞA var. Müvafiq olaraq 3 DALĞA - 1 - 0.01, sonra isə + 0.5 - 0.01. Müvafiq olaraq, depozit və çıxarmaq üçün hər zəng 0.01 DALĞA başa gəlir. Nəticədə, dApps sahiblərinin cədvəlindəki qeydlər aşağıdakı kimi dəyişdi.

RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Bob da ümumi pul kisəsindən bir qədər pul çıxarmaq qərarına gəldi, lakin səhv etdi və 1.5 DALĞA çıxarmağa çalışdı.

RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

Ancaq ağıllı müqavilədə belə bir vəziyyət üçün bir yoxlama var idi.

Xena ümumi hesabdan 1 DALĞA götürməyə çalışan fırıldaqçıdır.

RIDE və RIDE4DAPPS-də Waves ağıllı müqavilələrini necə yazmağı öyrənin. Hissə 1 (Çox istifadəçili pul kisəsi)

O da uğursuz oldu.

Növbəti hissədə Alice dApp Hesabının qüsursuzluğu ilə bağlı daha mürəkkəb məsələləri nəzərdən keçirəcəyik.

Mənbə: www.habr.com

Добавить комментарий