Hogyan építsünk, telepítsünk és teszteljünk Waves RIDE dApp-ot

Üdvözlöm! A cikkben bemutatom, hogyan írhatunk és indíthatunk el egy egyszerű dApp-ot a Waves nodon. Megvizsgáljuk a szükséges eszközöket, módszereket és egy fejlesztési példát.

Hogyan építsünk, telepítsünk és teszteljünk Waves RIDE dApp-ot

A dApp-ok és a hagyományos alkalmazások fejlesztési folyamata szinte nem tér el egymástól:

  • Kód írása
  • Automatizált tesztelés írása
  • Alkalmazás indítása
  • Tesztelés

Eszközök

1. docker a node és a Waves Explorer elindításához

Ha nem szeretné elindítani a nodot, ezt a lépést kihagyhatja. Létezik teszthálózat és kísérleti hálózat is. De a saját node telepítése nélkül a tesztelési folyamat elhúzódhat.

  • Folyamatosan szüksége lesz új fiókokra teszt tokenekkel. A teszthálózat csapja 10 WAVES-t küld 10 percenként.
  • A blokkátlag idő teszthálózaton 1 perc, nodon 15 másodperc. Ez különösen érezhető, amikor a tranzakció több megerősítést igényel.
  • A nyilvános teszt nodokon agresszív gyorsítótárazás lehetséges.
  • Ezen kívül előfordulhat, hogy technikai karbantartás miatt átmenetileg nem elérhetők.

Továbbiakban úgy fogom feltenni, hogy a saját nodjával dolgozik.

2. Surfboard parancssori eszköz

  • Töltse le és telepítse a Node.js-t ppa, homebrew vagy exe segítségével itt: https://nodejs.org/en/download/.
  • Telepítse a Surfboard-ot – az eszköz, amely lehetővé teszi a tesztek futtatását a meglévő nodon.

npm install -g @waves/surfboard

3. Visual Studio Code bővítmény

Ez a lépés nem kötelező, ha nem rajong az IDE-kért és a szövegszerkesztőket részesíti előnyben. Minden szükséges eszköz parancssori segédprogram. Ha vim-et használ, figyeljen a bővítményre, vim-ride.

Töltse le és telepítse a Visual Studio Code-ot: https://code.visualstudio.com/

Nyissa meg a VS Code-ot, és telepítse a waves-ride bővítményt:

Hogyan építsünk, telepítsünk és teszteljünk Waves RIDE dApp-ot

Böngészőbővítmény: Waves Keeper: https://wavesplatform.com/products-keeper

Kész!

Indítsa el a nodot és a Waves Explorert

1. Indítsa el a nodot:

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

Győződjön meg róla, hogy a node REST API-n keresztül indul el, http://localhost:6869:

Hogyan építsünk, telepítsünk és teszteljünk Waves RIDE dApp-ot
Swagger REST API felület a nodhoz

2. Indítsa el a Waves Explorer példányt:

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

Nyissa meg a böngészőt, és látogasson el ide: http://localhost:3000. Látni fogja, hogyan épül fel a helyi node üres lánca.

Hogyan építsünk, telepítsünk és teszteljünk Waves RIDE dApp-ot
A Waves Explorer megjeleníti a helyi node példányát

A RIDE struktúrája és a Surfboard eszköz

Hozzon létre egy üres könyvtárat, és futtassa benne a parancsot

surfboard init

A parancs inicializálja a könyvtárat a projekt struktúrájával, egy »hello world« típusú alkalmazással és tesztekkel. Ha megnyitja ezt a mappát a VS Code-ban, ezt fogja látni:

Hogyan építsünk, telepítsünk és teszteljünk Waves RIDE dApp-ot
Surfboard.config.json

  • A .\/ride\/ mappában megtalálja az egyetlen wallet.ride fájlt – a dApp kódját tartalmazó könyvtárat. Röviden elemezzük a dApp-ot a következő blokkban.
  • A .\/test\/ mappában találja a *.js fájlokat. Itt tárolják a teszteket.
  • .\/surfboard.config.json – a tesztek futtatásához szükséges konfigurációs fájl.

Envs – egy fontos szekció. Minden környezet így van beállítva:

  • A dApp futtatásához és a hálózat CHAIN_ID-jének használatához szükséges REST API node végpont.
  • A titkos kifejezés a tokenekkel rendelkező fiókhoz, amelyek a tesztje eredményei lesznek.

Ahogy láthatja, a surfboard.config.json alapértelmezés szerint támogatja a különböző környezeteket. Az alapértelmezett környezet a helyi (a defaultEnv kulcs – módosítható paraméter).

Wallet-demo alkalmazás

Ez a szekció nem egy RIDE nyelvszótár. Inkább egy nézőpont az alkalmazásról, amelyet kiépítünk és tesztelünk, hogy jobban megértsük, mi történik a blokkláncon.

Nézzük meg a Wallet-demo egyszerű alkalmazását. Bárki küldhet tokeneket a dApp címére. Csak a saját WAVES-ét lehet kivenni. Két @Callable funkció érhető el az InvokeScriptTransaction-on keresztül:

  • deposit(), amely csatolt WAVES kifizetést igényel
  • withdraw(amount: Int), amely tokeneket ad vissza

A dApp teljes életciklusa alatt a struktúra (cím → összeg) fenntartásra kerül:

Akció
Eredmény állapot

kezdeti
üres

Alice 5 WAVES-t helyez el
alice-address → 500000000

Bob 2 WAVES-t helyez el

alice-address → 500000000
bob-address → 200000000

Bob 7 WAVES-t vesz ki
ELUTASÍTVA!

Alice 4 WAVES-t vesz ki
alice-address → 100000000
bob-address → 200000000

Itt van a kód a helyzet teljes megértéséhez:

# 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

Példakódot a következő címen is találhat: GitHub.

A VSCode plugin támogatja a folyamatos fordítást szerkesztés közben. Így mindig nyomon követheti a hibákat a PROBLEMS fülön.

Hogyan építsünk, telepítsünk és teszteljünk Waves RIDE dApp-ot
Ha másik szövegszerkesztőt szeretne használni a fájl fordításához, használja a következőt:

surfboard compile ride\/wallet.ride

Ez egy base64-es, lefordított RIDE kódot fog kiadni.

Tesztforgató könyv a ‘wallet.ride’-hoz

Nézzük meg a tesztfájlt.JavaScript Mocha keretrendszeren működik. Van egy „Before” funkció és három teszt:

  • A „Before” több fiókot finanszíroz a MassTransferTransaction-en keresztül, lefordítja a szkriptet és telepíti azt a blokkláncra.
  • A „Can deposit” az InvokeScriptTransaction-t küldi a hálózatba, aktiválva a deposit() funkciót mindkét fiók számára.
  • A „Can’t withdraw more than was deposited” teszteli, hogy senki sem tud-e mások tokenjeit eltulajdonítani.
  • A „Can deposit” ellenőrzi, hogy a kifizetések helyesen történnek-e.

Tesztfuttatás Surfboard-dal és az eredmények elemzése a Waves Explorerben

A teszt futtatásához végezze el a következőt:

surfboard test

Ha több forgatókönyve van (például szüksége van egy külön telepítési szkript), indíthatja

surfboard test my-scenario.js

A Surfboard összegyűjti a tesztfájlokat a .\/test\/ mappában, és elindítja a forgatókönyvet a surfboard.config.json fájlban beállított csomóponton. Néhány másodperc múlva ilyesmit fog látni:

wallet tesztcsomag
Fiókok generálása nonce segítségével: ce8d86ee
Fiók létrehozva: foofoofoofoofoofoofoofoofoofoofoo#ce8d86ee - 3M763WgwDhmry95XzafZedf7WoBf5ixMwhX
Fiók létrehozva: barbarbarbarbarbarbarbarbarbar#ce8d86ee - 3MAi9KhwnaAk5HSHmYPjLRdpCAnsSFpoY2v
Fiók létrehozva: wallet#ce8d86ee - 3M5r6XYMZPUsRhxbwYf1ypaTB6MNs2Yo1Gb
Fiókok sikeresen feltöltve
A szkript beállítva
   √ Lehet befizetni (4385ms)
   √ Nem lehet többet kivenni, mint amennyi befizetve lett
   √ Lehet kivenni (108ms)
3 sikeres (15s)

Hurrá! A tesztek sikeresen lezajlottak. Most nézzük meg, mi történik a Waves Explorer használata során: tekintsük át a blokkokat, vagy illesszük be az egyik fent említett címet a keresőbe (például a megfelelőt wallet#. Itt megtalálhatja a tranzakciók történetét, a dApp állapotát, a dekompilált bináris fájlt.

Hogyan építsünk, telepítsünk és teszteljünk Waves RIDE dApp-ot
Waves Explorer. Az alkalmazás, amelyet éppen most telepítettek.

Néhány tipp a Surfboard használatához:

1. A teszteléshez a testnet környezetben használja:

surfboard test --env=testnet

Teszt tokenek megszerzése

2. Ha szeretné megnézni a tranzakciók JSON-verzióit és azt, hogyan dolgozza fel őket a csomópont, indítsa el a tesztet a -v kapcsolóval (ez a 'verbose' jelentése):

surfboard test -v

Alkalmazások használata a Waves Keeperrel

1. Állítsa be a Waves Keeper működését: http://localhost:6869

Hogyan építsünk, telepítsünk és teszteljünk Waves RIDE dApp-ot
A Waves Keeper beállítása egy helyi csomóponttal

2. Importálja a titkos kifejezést a tokenek hálózatához? Egyszerűség kedvéért használja a csomópontja kezdeti seed-jét: waves privately node seed with waves tokens. Cím: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Ön önállóan futtathat egy egyoldalas serverless alkalmazást npm segítségével. Vagy lépjen egy már meglévőhöz: chrome-ext.wvservices.com\/dapp-wallet.html

4. Írja be a tesztelés során generált pénztárca címét (amelyet a fenti szöveg kiemel) a dApp címmezőbe

5. Írjon be egy kis összeget a 'Deposit' mezőbe, majd kattintson a gombra:

Hogyan építsünk, telepítsünk és teszteljünk Waves RIDE dApp-ot
A Waves Keeper engedélyt kér az InvokeScriptTransaction aláírásához, 10 WAVES befizetéssel.

6. Erősítse meg a tranzakciót:

Hogyan építsünk, telepítsünk és teszteljünk Waves RIDE dApp-ot
A tranzakció létrejött és továbbítódik a hálózatba. Most látható az ID-ja

7. Kövesse a tranzakciót a Waves Explorer segítségével. Írja be az ID-t a keresőmezőbe

Hogyan építsünk, telepítsünk és teszteljünk Waves RIDE dApp-ot

Következtetések és további információk

Megvizsgáltuk a fejlesztési, tesztelési, telepítési és egyszerű dApp-ek használatára vonatkozó eszközöket a Waves Platformon:

  • RIDE nyelv
  • VS Code szerkesztő
  • Waves Explorer
  • Surfboard
  • Waves Keeper

Linkek azoknak, akik tovább akarják tanulmányozni a RIDE-ot:

További példák
Online IDE példákkal
Waves Dokumentáció
Fejlesztők Csevegése a Telegramon
Waves és RIDE a Stack Overflow-n
ÚJ! Online tanfolyamok dApp-ok létrehozásáról a Waves Platformon

Folyamatosan mélyedj el a RIDE témájába és készítsd el az első dApp-odat!

TL;DR: bit.ly/2YCFnwY

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster