Ü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.

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: .
- 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, .
Töltse le és telepítse a Visual Studio Code-ot:
Nyissa meg a VS Code-ot, és telepítse a waves-ride bővítményt:

Böngészőbővítmény: Waves 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, :

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: . Látni fogja, hogyan épül fel a helyi node üres lánca.

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:

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ényelwithdraw(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() = falsePéldakódot a következő címen is találhat: .
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.

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

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
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:

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:
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:

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:

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

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:
Folyamatosan mélyedj el a RIDE témájába és készítsd el az első dApp-odat!
TL;DR:
Forrás: habr.com
