Waves RIDE dApp-ı necə qurmaq, yerləşdirmək və sınaqdan keçirmək olar

Salam! Bu yazıda sizə Dalğalar qovşağında adi dApp-ı necə yazmağı və işlətməyi göstərəcəyəm. Lazımi vasitələrə, üsullara və inkişaf nümunəsinə baxaq.

Waves RIDE dApp-ı necə qurmaq, yerləşdirmək və sınaqdan keçirmək olar

dApps və adi proqramlar üçün inkişaf sxemi demək olar ki, eynidir:

  • Kodun yazılması
  • Avtomatlaşdırılmış testlərin yazılması
  • Tətbiqin işə salınması
  • Test

Tools

1. docker node və Waves Explorer-i işə salmaq üçün

Bir node başlamaq istəmirsinizsə, bu addımı atlaya bilərsiniz. Axı, sınaq və eksperimental şəbəkə var. Ancaq öz nodeunuzu yerləşdirmədən sınaq prosesi uzana bilər.

  • Daim test nişanları olan yeni hesablara ehtiyacınız olacaq. Test şəbəkə kranı hər 10 dəqiqədən bir 10 DALĞA ötürür.
  • Test şəbəkəsində orta bloklama müddəti 1 dəqiqə, qovşaqda isə 15 saniyədir. Bu, əməliyyat bir neçə təsdiq tələb etdikdə xüsusilə nəzərə çarpır.
  • İctimai test qovşaqlarında aqressiv keşləmə mümkündür.
  • Onlar həmçinin texniki xidmətə görə müvəqqəti olaraq əlçatmaz ola bilərlər.

Bundan sonra öz node ilə işlədiyinizi güman edəcəm.

2. Surfboard Command Line Aləti

  • Burada ppa, homebrew və ya exe istifadə edərək Node.js-i endirin və quraşdırın: https://nodejs.org/en/download/.
  • Mövcud node üzərində testlər keçirməyə imkan verən bir vasitə olan Surfboard quraşdırın.

npm install -g @waves/surfboard

3. Visual Studio Code plagini

Əgər siz IDE həvəskarı deyilsinizsə və mətn redaktorlarına üstünlük verirsinizsə, bu addım isteğe bağlıdır. Bütün lazımi alətlər əmr satırı yardım proqramlarıdır. Əgər vim istifadə edirsinizsə, plaqinə diqqət yetirin vim-ride.

Visual Studio Kodunu endirin və quraşdırın: https://code.visualstudio.com/

VS Kodunu açın və waves-ride plaginini quraşdırın:

Waves RIDE dApp-ı necə qurmaq, yerləşdirmək və sınaqdan keçirmək olar

Waves Keeper brauzer uzantısı: https://wavesplatform.com/products-keeper

Bitti!

Node və Waves Explorer-ı işə salın

1. Düyünə başlayın:

docker run -d -p 6869:6869 wavesplatform/waves-private-node

Düyünün REST API vasitəsilə işə salındığından əmin olun http://localhost:6869:

Waves RIDE dApp-ı necə qurmaq, yerləşdirmək və sınaqdan keçirmək olar
Node üçün Swagger REST API

2. Waves Explorer nümunəsini işə salın:

docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer

Bir brauzer açın və gedin http://localhost:3000. Boş lokal node dövrəsinin nə qədər tez qurulduğunu görəcəksiniz.

Waves RIDE dApp-ı necə qurmaq, yerləşdirmək və sınaqdan keçirmək olar
Waves Explorer yerli qovşaq nümunəsini göstərir

RIDE strukturu və Surfboard aləti

Boş bir qovluq yaradın və içindəki əmri işə salın

surfboard init

Komanda layihə strukturu, “salam dünya” proqramları və testləri olan kataloqu işə salır. Bu qovluğu VS Kodu ilə açsanız, görəcəksiniz:

Waves RIDE dApp-ı necə qurmaq, yerləşdirmək və sınaqdan keçirmək olar
Surfboard.config.json

  • ./ride/ qovluğunun altında siz wallet.ride tək faylını tapacaqsınız - dApp kodunun yerləşdiyi qovluq. Növbəti blokda dApp-ları qısaca təhlil edəcəyik.
  • ./test/ qovluğunda siz *.js faylı tapacaqsınız. Testlər burada saxlanılır.
  • ./surfboard.config.json – testləri həyata keçirmək üçün konfiqurasiya faylı.

Envs mühüm bölmədir. Hər bir mühit belə konfiqurasiya edilmişdir:

  • Şəbəkənin dApp və CHAIN_ID-ni işə salmaq üçün istifadə olunacaq qovşağın REST API son nöqtəsi.
  • Test tokenlərinizin mənbəyi olacaq tokenləri olan hesab üçün gizli ifadə.

Gördüyünüz kimi surfboard.config.json defolt olaraq çoxlu mühitləri dəstəkləyir. Defolt yerli mühitdir (defaultEnv açarı dəyişən parametrdir).

Pul kisəsi demo tətbiqi

Bu bölmə RIDE dilinə istinad deyil. Əksinə, blokçeynində nə baş verdiyini daha yaxşı başa düşmək üçün yerləşdirdiyimiz və sınaqdan keçirdiyimiz tətbiqə nəzər salın.

Gəlin sadə Wallet-demo proqramına baxaq. Hər kəs tokenləri dApp ünvanına göndərə bilər. Siz yalnız DALĞALARInızı geri ala bilərsiniz. InvokeScriptTransaction vasitəsilə iki @Callable funksiyası mövcuddur:

  • deposit()WAVES-də əlavə ödəniş tələb olunur
  • withdraw(amount: Int)tokenləri qaytaran

dApp-ın həyat dövrü ərzində struktur (ünvan → məbləğ) saxlanılacaq:

fəaliyyət
Nəticə vəziyyəti

ilkin
boş

Alisa 5 DALĞA qoyur
alice-ünvanı → 500000000

Bob 2 DALĞA qoyur

alice-ünvanı → 500000000
bob-ünvanı → 200000000

Bob 7 DALĞA geri çəkir
RƏND EDİLDİ!

Alisa 4 DALĞA geri çəkir
alice-ünvanı → 100000000
bob-ünvanı → 200000000

Vəziyyəti tam başa düşmək üçün kod budur:

# In this example multiple accounts can deposit their funds and safely take them back. No one can interfere with this.
# An inner state is maintained as mapping `address=>waves`.
{-# STDLIB_VERSION 3 #-}
{-# CONTENT_TYPE DAPP #-}
{-# SCRIPT_TYPE ACCOUNT #-}
@Callable(i)
func deposit() = {
 let pmt = extract(i.payment)
 if (isDefined(pmt.assetId))
    then throw("works with waves only")
    else {
     let currentKey = toBase58String(i.caller.bytes)
     let currentAmount = match getInteger(this, currentKey) {
       case a:Int => a
       case _ => 0
     }
     let newAmount = currentAmount + pmt.amount
     WriteSet([DataEntry(currentKey, newAmount)]) 
   }
 }
@Callable(i)
func withdraw(amount: Int) = {
 let currentKey = toBase58String(i.caller.bytes)
 let currentAmount = match getInteger(this, currentKey) {
   case a:Int => a
   case _ => 0
 }
 let newAmount = currentAmount - amount
 if (amount < 0)
   then throw("Can't withdraw negative amount")
   else if (newAmount < 0)
     then throw("Not enough balance")
     else ScriptResult(
       WriteSet([DataEntry(currentKey, newAmount)]),
       TransferSet([ScriptTransfer(i.caller, amount, unit)])
      )
 }
@Verifier(tx)
func verify() = false

Nümunə kodu da burada tapa bilərsiniz Github.

VSCode plagini faylı redaktə edərkən davamlı kompilyasiyanı dəstəkləyir. Buna görə də, siz həmişə PROBLEMLƏR sekmesinde səhvləri izləyə bilərsiniz.

Waves RIDE dApp-ı necə qurmaq, yerləşdirmək və sınaqdan keçirmək olar
Faylı tərtib edərkən fərqli mətn redaktorundan istifadə etmək istəyirsinizsə, istifadə edin

surfboard compile ride/wallet.ride

Bu, bir sıra base64 tərtib edilmiş RIDE kodunu çıxaracaq.

'wallet.ride' üçün sınaq skripti

Gəlin baxaq test faylı. JavaScript-in Mocha çərçivəsi ilə təchiz edilmişdir. "Əvvəl" funksiyası və üç test var:

  • “Əvvəl” MassTransferTransaction vasitəsilə birdən çox hesabı maliyyələşdirir, skripti tərtib edir və blokçeynə yerləşdirir.
  • “Depozit edə bilər” şəbəkəyə InvokeScriptTransaction göndərir, iki hesabın hər biri üçün depozit() funksiyasını aktivləşdirir.
  • Heç kimin başqalarının tokenlərini oğurlaya bilməyəcəyi “Depozit edilmiş məbləğdən çoxunu geri götürə bilməz” testləri.
  • “Depozit edə bilər” pulun çıxarılmasının düzgün aparıldığını yoxlayır.

Surfboard-dan testlər aparın və nəticələri Waves Explorer-də təhlil edin

Testi həyata keçirmək üçün qaçın

surfboard test

Birdən çox skriptiniz varsa (məsələn, ayrıca yerləşdirmə skriptinə ehtiyacınız var), siz işlədə bilərsiniz

surfboard test my-scenario.js

Surfboard test fayllarını ./test/ qovluğunda toplayacaq və skripti surfboard.config.json-da konfiqurasiya edilmiş node üzərində işlədəcək. Bir neçə saniyədən sonra belə bir şey görəcəksiniz:

wallet test suite
Generating accounts with nonce: ce8d86ee
Account generated: foofoofoofoofoofoofoofoofoofoofoo#ce8d86ee - 3M763WgwDhmry95XzafZedf7WoBf5ixMwhX
Account generated: barbarbarbarbarbarbarbarbarbar#ce8d86ee - 3MAi9KhwnaAk5HSHmYPjLRdpCAnsSFpoY2v
Account generated: wallet#ce8d86ee - 3M5r6XYMZPUsRhxbwYf1ypaTB6MNs2Yo1Gb
Accounts successfully funded
Script has been set
   √ Can deposit (4385ms)
   √ Cannot withdraw more than was deposited
   √ Can withdraw (108ms)
3 passing (15s)

Yaşasın! Testlər keçdi. İndi gəlin Waves Explorer istifadə edərkən nə baş verdiyinə nəzər salaq: bloklara baxın və ya yuxarıdakı ünvanlardan birini axtarışa yapışdırın (məsələn, müvafiq wallet#. Orada əməliyyat tarixini, dApp statusunu, dekompilyasiya edilmiş ikili faylı tapa bilərsiniz.

Waves RIDE dApp-ı necə qurmaq, yerləşdirmək və sınaqdan keçirmək olar
Dalğalar Explorer. Yenicə istifadəyə verilmiş proqram.

Bəzi Surfboard Məsləhətləri:

1. Testnet mühitində test etmək üçün istifadə edin:

surfboard test --env=testnet

Test nişanları alın

2. Əgər tranzaksiyaların JSON versiyalarını və onların qovşaq tərəfindən necə işləndiyini görmək istəyirsinizsə, testi -v ("müfəssəl" deməkdir):

surfboard test -v

Waves Keeper ilə proqramlardan istifadə

1. İşləmək üçün Waves Keeper-i qurun: http://localhost:6869

Waves RIDE dApp-ı necə qurmaq, yerləşdirmək və sınaqdan keçirmək olar
Yerli qovşaqla işləmək üçün Waves Keeper-in qurulması

2. Şəbəkə üçün tokenlərlə məxfi ifadə idxal edilsin? Sadəlik üçün nodeunuzun ilkin toxumundan istifadə edin: waves private node seed with waves tokens. Ünvan: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Siz npm-dən istifadə edərək serversiz tək səhifəli proqramı özünüz işlədə bilərsiniz. Və ya mövcud birinə keçin: chrome-ext.wvservices.com/dapp-wallet.html

4. Test buraxılışından pul kisəsinin ünvanını (yuxarıda altı çizilmiş) dApp ünvanı mətn qutusuna daxil edin

5. “Depozit” sahəsinə kiçik bir məbləğ daxil edin və düyməni basın:

Waves RIDE dApp-ı necə qurmaq, yerləşdirmək və sınaqdan keçirmək olar
Waves Keeper 10 WAVES ödənişi ilə InvokeScriptTransaction imzalamaq üçün icazə tələb edir.

6. Əməliyyatı təsdiq edin:

Waves RIDE dApp-ı necə qurmaq, yerləşdirmək və sınaqdan keçirmək olar
Əməliyyat yaradılır və şəbəkəyə yayımlanır. İndi onun şəxsiyyətini görə bilərsiniz

7. Waves Explorer istifadə edərək əməliyyata nəzarət edin. Axtarış sahəsinə ID daxil edin

Waves RIDE dApp-ı necə qurmaq, yerləşdirmək və sınaqdan keçirmək olar

Nəticələr və əlavə məlumatlar

Dalğalar Platformasında sadə dApp-ların hazırlanması, sınaqdan keçirilməsi, yerləşdirilməsi və istifadəsi üçün alətlərə baxdıq:

  • RIDE dili
  • VS Kod Redaktoru
  • Dalğalar Explorer
  • Surfboard
  • Dalğalar qoruyucusu

RIDE öyrənməyə davam etmək istəyənlər üçün linklər:

Daha çox nümunə
Nümunələr ilə onlayn IDE
Dalğaların Sənədləşdirilməsi
Telegram-da tərtibatçı söhbəti
Dalğalar və stackoverflow-da RIDE
YENİ! Waves Platformasında dApps yaratmaq üçün onlayn kurslar

RIDE mövzusuna daxil olmağa davam edin və ilk dApp-ınızı yaradın!

TL; DR: bit.ly/2YCFnwY

Mənbə: www.habr.com

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