Kuidas ehitada, juurutada ja testida laineid RIDE dApp

Tere! Selles artiklis näitan teile, kuidas kirjutada ja käivitada tavalist dAppi sõlmes Waves. Vaatame vajalikke tööriistu, meetodeid ja näidet arendusest.

Kuidas ehitada, juurutada ja testida laineid RIDE dApp

dAppide ja tavaliste rakenduste arendusskeem on peaaegu sama:

  • Kirjutame koodi
  • Automatiseeritud testimise kirjutamine
  • Rakenduse käivitamine
  • Testimine

Töövahendid

1. docker sõlme ja Waves Exploreri käivitamiseks

Kui te ei soovi sõlme käivitada, võite selle sammu vahele jätta. Lõppude lõpuks on olemas katse- ja katsevõrgustik. Kuid ilma oma sõlme juurutamata võib testimisprotsess venida.

  • Teil on pidevalt vaja uusi kontosid koos testmärkidega. Testvõrgu segisti edastab 10 LAINET iga 10 minuti järel.
  • Keskmine blokeerimisaeg testvõrgus on 1 minut, sõlmes – 15 sekundit. See on eriti märgatav, kui tehing nõuab mitut kinnitust.
  • Avalikes testsõlmedes on võimalik agressiivne vahemällu salvestamine.
  • Samuti võivad need hoolduse tõttu ajutiselt kättesaamatuks jääda.

Nüüdsest eeldan, et töötate oma sõlmega.

2. Surfilaua käsurea tööriist

  • Laadige alla ja installige Node.js ppa, homebrew või exe abil siit: https://nodejs.org/en/download/.
  • Installige Surfboard, tööriist, mis võimaldab teil testida olemasolevas sõlmes.

npm install -g @waves/surfboard

3. Visual Studio Code plugin

See samm on valikuline, kui te ei ole IDE-de fänn ja eelistate tekstiredaktoreid. Kõik vajalikud tööriistad on käsurea utiliidid. Kui kasutate vimi, pöörake tähelepanu pistikprogrammile vim-sõit.

Laadige alla ja installige Visual Studio kood: https://code.visualstudio.com/

Avage VS Code ja installige waves-ride pistikprogramm:

Kuidas ehitada, juurutada ja testida laineid RIDE dApp

Waves Keeperi brauserilaiendus: https://wavesplatform.com/products-keeper

Valmis!

Käivitage sõlm ja Waves Explorer

1. Käivitage sõlm:

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

Veenduge, et sõlm oleks käivitatud REST API kaudu http://localhost:6869:

Kuidas ehitada, juurutada ja testida laineid RIDE dApp
Swagger REST API sõlme jaoks

2. Käivitage Waves Exploreri eksemplar:

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

Avage brauser ja minge aadressile http://localhost:3000. Näete, kui kiiresti luuakse tühi kohaliku sõlme vooluring.

Kuidas ehitada, juurutada ja testida laineid RIDE dApp
Waves Explorer kuvab kohaliku sõlme eksemplari

RIDE struktuur ja surfilaua tööriist

Looge tühi kataloog ja käivitage selles käsk

surfboard init

Käsk initsialiseerib kataloogi projekti struktuuri, "tere maailm" rakenduste ja testidega. Kui avate selle kausta VS-koodiga, näete järgmist:

Kuidas ehitada, juurutada ja testida laineid RIDE dApp
Surfboard.config.json

  • Kausta ./ride/ alt leiate ühe faili wallet.ride – kataloogi, kus asub dApp kood. Järgmises plokis analüüsime lühidalt dAppsi.
  • Kausta ./test/ alt leiate *.js faili. Testid on siin salvestatud.
  • ./surfboard.config.json – konfiguratsioonifail testide käitamiseks.

Envs on oluline jaotis. Iga keskkond on konfigureeritud järgmiselt:

  • Selle sõlme REST API lõpp-punkt, mida kasutatakse dAppi ja võrgu CHAIN_ID käivitamiseks.
  • Salajane fraas konto jaoks, millel on žetoonid, mis on teie testmärkide allikad.

Nagu näete, toetab surfboard.config.json vaikimisi mitut keskkonda. Vaikimisi on kohalik keskkond (vaikeEnv-võti on muudetav parameeter).

Rahakoti demorakendus

See jaotis ei viita RIDE keelele. Pigem vaadake rakendust, mille juurutame ja testime, et paremini mõista, mis plokiahelas toimub.

Vaatame lihtsat Walleti demorakendust. Igaüks saab žetoone saata dAppi aadressile. Saate välja võtta ainult oma LAINED. InvokeScriptTransactioni kaudu on saadaval kaks @Callable funktsiooni:

  • deposit()mis nõuab manustatud makset WAVES
  • withdraw(amount: Int)mis tagastab märgid

Kogu dApp elutsükli jooksul säilitatakse struktuur (aadress → summa):

tegevus
Tulemuslik olek

esialgne
tühi

Alice hoiustab 5 LAINET
Alice-aadress → 500000000

Bob hoiustab 2 LAINET

Alice-aadress → 500000000
bob-aadress → 200000000

Bob tõmbab 7 LAINET
KEELATUD!

Alice tõmbab välja 4 LAINET
Alice-aadress → 100000000
bob-aadress → 200000000

Siin on kood olukorra täielikuks mõistmiseks:

# 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äidiskoodi leiate ka aadressilt GitHub.

VSCode'i pistikprogramm toetab pidevat kompileerimist faili redigeerimise ajal. Seetõttu saate vahekaardil PROBLEEMID alati vigu jälgida.

Kuidas ehitada, juurutada ja testida laineid RIDE dApp
Kui soovite faili koostamisel kasutada mõnda muud tekstiredaktorit, kasutage

surfboard compile ride/wallet.ride

See väljastab base64 kompileeritud RIDE koodi seeria.

Testskript 'wallet.ride' jaoks

Vaatame edasi testfail. Toetab JavaScripti Mocha raamistik. Seal on funktsioon "Enne" ja kolm testi:

  • "Enne" rahastab MassTransferTransactioni kaudu mitut kontot, kompileerib skripti ja juurutab selle plokiahelasse.
  • „Saab deponeerida” saadab võrku InvokeScriptTransactioni, aktiveerides mõlema konto jaoks funktsiooni deposiit().
  • "Ei saa välja võtta rohkem, kui oli sissemakstud" testib, et keegi ei saa varastada teiste inimeste märke.
  • "Saab sissemakse" kontrollib, kas väljamakseid töödeldakse õigesti.

Käivitage Surfilaua teste ja analüüsige tulemusi Waves Exploreris

Testi käivitamiseks käivitage

surfboard test

Kui teil on mitu skripti (näiteks vajate eraldi juurutusskripti), saate seda käivitada

surfboard test my-scenario.js

Surfboard kogub testfailid kausta ./test/ ja käivitab skripti failis surfboard.config.json konfigureeritud sõlmes. Mõne sekundi pärast näete midagi sellist:

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)

Hurraa! Katsed läbitud. Nüüd vaatame, mis juhtub Waves Exploreri kasutamisel: vaata plokke või kleebi otsingusse üks ülaltoodud aadressidest (näiteks vastav wallet#. Sealt leiate tehingute ajaloo, dApp oleku, dekompileeritud binaarfaili.

Kuidas ehitada, juurutada ja testida laineid RIDE dApp
Lainete uurija. Äsja juurutatud rakendus.

Mõned surfilaua näpunäited:

1. Testneti keskkonnas testimiseks kasutage järgmist:

surfboard test --env=testnet

Hankige testmärgid

2. Kui soovite näha tehingute JSON-versioone ja seda, kuidas sõlm neid töötleb, käivitage test käsuga -v (tähendab "sõnaline"):

surfboard test -v

Rakenduste kasutamine koos Waves Keeperiga

1. Seadistage Waves Keeper töötama. http://localhost:6869

Kuidas ehitada, juurutada ja testida laineid RIDE dApp
Waves Keeperi seadistamine kohaliku sõlmega töötamiseks

2. Kas importida võrgu jaoks žetoonidega salafraasi? Lihtsuse huvides kasutage oma sõlme algset seemet: waves private node seed with waves tokens. Aadress: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Saate ise käivitada serverita ühelehelise rakenduse, kasutades npm-i. Või minge olemasoleva juurde: chrome-ext.wvservices.com/dapp-wallet.html

4. Sisestage dApp-i aadressi tekstikasti rahakoti aadress testkäivitusest (ülal alla joonitud).

5. Sisestage väljale „Sissemakse” väike summa ja klõpsake nuppu:

Kuidas ehitada, juurutada ja testida laineid RIDE dApp
Waves Keeper taotleb luba allkirjastada InvokeScriptTransaction 10 WAVESi maksega.

6. Kinnitage tehing:

Kuidas ehitada, juurutada ja testida laineid RIDE dApp
Tehing luuakse ja edastatakse võrku. Nüüd näete tema ID-d

7. Jälgige tehingut Waves Exploreri abil. Sisesta otsinguväljale ID

Kuidas ehitada, juurutada ja testida laineid RIDE dApp

Järeldused ja lisainfo

Vaatasime tööriistu Waves Platformi lihtsate dAppide arendamiseks, testimiseks, juurutamiseks ja kasutamiseks:

  • RIDE keel
  • VS koodiredaktor
  • Lainete uurija
  • Surfilaud
  • Lainete hoidja

Lingid neile, kes soovivad RIDE'i edasi õppida:

Veel näiteid
Online IDE näidetega
Lainete dokumentatsioon
Arendaja vestlus Telegramis
Waves ja RIDE on stackoverflow
UUS! Veebikursused dAppide loomise kohta platvormil Waves

Jätkake RIDE teemasse sukeldumist ja looge oma esimene dApp!

TL; DR: bit.ly/2YCFnwY

Allikas: www.habr.com

Lisa kommentaar