Kuinka rakentaa, ottaa käyttöön ja testata Waves RIDE dApp -sovellusta

Hei! Tässä artikkelissa näytän sinulle, kuinka tavallinen dApp kirjoitetaan ja suoritetaan Waves-solmussa. Katsotaanpa tarvittavia työkaluja, menetelmiä ja esimerkki kehittämisestä.

Kuinka rakentaa, ottaa käyttöön ja testata Waves RIDE dApp -sovellusta

Kehityskaavio dAppsille ja tavallisille sovelluksille on lähes sama:

  • Kirjoitamme koodin
  • Automatisoidun testauksen kirjoittaminen
  • Käynnistä sovellus
  • Testaus

Työkalut

1. docker suorittaaksesi solmun ja Waves Explorerin

Jos et halua aloittaa solmua, voit ohittaa tämän vaiheen. Loppujen lopuksi on olemassa testi- ja kokeellinen verkosto. Mutta ilman oman solmun käyttöönottoa testausprosessi voi venyä.

  • Tarvitset jatkuvasti uusia tilejä testitunnuksilla. Testiverkkohana siirtää 10 AALTOA 10 minuutin välein.
  • Keskimääräinen estoaika testiverkossa on 1 minuutti, solmussa - 15 sekuntia. Tämä on erityisen havaittavissa, kun tapahtuma vaatii useita vahvistuksia.
  • Aggressiivinen välimuisti on mahdollista julkisissa testisolmuissa.
  • Ne voivat myös olla tilapäisesti poissa käytöstä huollon vuoksi.

Tästä eteenpäin oletan, että työskentelet oman solmusi kanssa.

2. Surffilaudan komentorivityökalu

  • Lataa ja asenna Node.js käyttämällä ppa-, homebrew- tai exe-ohjelmaa täältä: https://nodejs.org/en/download/.
  • Asenna Surfboard, työkalu, jonka avulla voit suorittaa testejä olemassa olevassa solmussa.

npm install -g @waves/surfboard

3. Visual Studio Code -laajennus

Tämä vaihe on valinnainen, jos et ole IDE-fani ja mieluummin tekstieditorit. Kaikki tarvittavat työkalut ovat komentorivin apuohjelmia. Jos käytät vimia, kiinnitä huomiota liitännäiseen vim-ajelu.

Lataa ja asenna Visual Studio Code: https://code.visualstudio.com/

Avaa VS Code ja asenna waves-ride plugin:

Kuinka rakentaa, ottaa käyttöön ja testata Waves RIDE dApp -sovellusta

Waves Keeper -selainlaajennus: https://wavesplatform.com/products-keeper

Valmis!

Käynnistä solmu ja Waves Explorer

1. Käynnistä solmu:

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

Varmista, että solmu käynnistetään REST API:n kautta http://localhost:6869:

Kuinka rakentaa, ottaa käyttöön ja testata Waves RIDE dApp -sovellusta
Swagger REST API solmulle

2. Käynnistä Waves Explorerin esiintymä:

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

Avaa selain ja siirry kohtaan http://localhost:3000. Näet kuinka nopeasti tyhjä paikallinen solmupiiri rakennetaan.

Kuinka rakentaa, ottaa käyttöön ja testata Waves RIDE dApp -sovellusta
Waves Explorer näyttää paikallisen solmun esiintymän

RIDE rakenne ja surffilautatyökalu

Luo tyhjä hakemisto ja suorita siinä oleva komento

surfboard init

Komento alustaa hakemiston, jossa on projektirakenne, "hello world" -sovellukset ja testit. Jos avaat tämän kansion VS-koodilla, näet:

Kuinka rakentaa, ottaa käyttöön ja testata Waves RIDE dApp -sovellusta
Surfboard.config.json

  • ./ride/-kansion alta löydät yhden tiedoston wallet.ride - hakemiston, jossa dApp-koodi sijaitsee. Analysoimme lyhyesti dApppeja seuraavassa lohkossa.
  • ./test/-kansion alta löydät *.js-tiedoston. Testit tallennetaan tänne.
  • ./surfboard.config.json – määritystiedosto testien suorittamista varten.

Envs on tärkeä osa. Jokainen ympäristö on määritetty seuraavasti:

  • Solmun REST API -päätepiste, jota käytetään käynnistämään verkon dApp ja CHAIN_ID.
  • Salainen lause tilille, jossa on tokeneita, jotka ovat testitokeniesi lähteitä.

Kuten näet, surfboard.config.json tukee oletuksena useita ympäristöjä. Oletus on paikallinen ympäristö (oletusEnv-avain on muutettava parametri).

Lompakko-demo-sovellus

Tämä osio ei viittaa RIDE-kieleen. Pikemminkin katso sovellus, jonka otamme käyttöön ja testaamme ymmärtääksesi paremmin, mitä lohkoketjussa tapahtuu.

Katsotaanpa yksinkertaista Wallet-demo-sovellusta. Kuka tahansa voi lähettää tokeneja dApp-osoitteeseen. Voit vain nostaa WAVESi. Kaksi @Callable-toimintoa on käytettävissä InvokeScriptTransactionin kautta:

  • deposit()joka vaatii liitteenä olevan maksun WAVESissa
  • withdraw(amount: Int)joka palauttaa tokeneja

Koko dAppin elinkaaren ajan rakenne (osoite → määrä) säilyy:

Toiminta
Tuloksena oleva tila

ensimmäinen
tyhjä

Alice tallettaa 5 AALTOA
alice-osoite → 500000000

Bob tallettaa 2 AALTOA

alice-osoite → 500000000
bob-osoite → 200000000

Bob vetää 7 AALTOA
KIELLETTY!

Alice vetää pois 4 AALTOA
alice-osoite → 100000000
bob-osoite → 200000000

Tässä on koodi tilanteen täydelliseksi ymmärtämiseksi:

# 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

Esimerkkikoodi löytyy myös osoitteesta GitHub.

VSCode-laajennus tukee jatkuvaa kääntämistä tiedoston muokkauksen aikana. Siksi voit aina tarkkailla virheitä ONGELMAT-välilehdellä.

Kuinka rakentaa, ottaa käyttöön ja testata Waves RIDE dApp -sovellusta
Jos haluat käyttää toista tekstieditoria tiedoston kääntämisessä, käytä

surfboard compile ride/wallet.ride

Tämä tulostaa sarjan base64-käännettyä RIDE-koodia.

Wallet.ride-testiohjelma

Katsotaanpa testitiedosto. Powered by JavaScriptin Mocha-kehys. Siellä on "Ennen"-toiminto ja kolme testiä:

  • "Ennen" rahoittaa useita tilejä MassTransferTransactionin kautta, kokoaa skriptin ja ottaa sen käyttöön lohkoketjussa.
  • "Voi tallettaa" lähettää InvokeScriptTransactionin verkkoon aktivoiden deposit()-toiminnon kummallekin tilille.
  • "Ei voi nostaa enemmän kuin talletettiin" testaa, ettei kukaan voi varastaa muiden tokeneja.
  • "Voi tallettaa" tarkistaa, että kotiutukset käsitellään oikein.

Suorita testejä Surfboardista ja analysoi tulokset Waves Explorerissa

Suorita testi suorittamalla

surfboard test

Jos sinulla on useita komentosarjoja (tarvitset esimerkiksi erillisen käyttöönottokomentosarjan), voit suorittaa sen

surfboard test my-scenario.js

Surfboard kerää testitiedostot ./test/-kansioon ja suorittaa komentosarjan solmussa, joka on määritetty surfboard.config.json-tiedostossa. Muutaman sekunnin kuluttua näet jotain tällaista:

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! Testit meni läpi. Katsotaan nyt, mitä tapahtuu käytettäessä Waves Exploreria: katso lohkoja tai liitä jokin yllä olevista osoitteista hakuun (esim. wallet#. Sieltä löydät tapahtumahistorian, dApp-tilan, puretun binaaritiedoston.

Kuinka rakentaa, ottaa käyttöön ja testata Waves RIDE dApp -sovellusta
Waves Explorer. Sovellus, joka on juuri otettu käyttöön.

Muutamia surffilautavinkkejä:

1. Testaaksesi testnet-ympäristössä käytä:

surfboard test --env=testnet

Hanki testitunnukset

2. Jos haluat nähdä tapahtumien JSON-versiot ja kuinka solmu käsittelee ne, suorita testi komennolla -v (tarkoittaa "sanallista"):

surfboard test -v

Sovellusten käyttäminen Waves Keeperin kanssa

1. Aseta Waves Keeper toimimaan: http://localhost:6869

Kuinka rakentaa, ottaa käyttöön ja testata Waves RIDE dApp -sovellusta
Waves Keeperin määrittäminen toimimaan paikallisen solmun kanssa

2. Tuodaanko salainen lause verkkotunnuksella? Käytä yksinkertaisuuden vuoksi solmusi alkusiementä: waves private node seed with waves tokens. Osoite: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Voit suorittaa palvelimettoman yksisivuisen sovelluksen itse käyttämällä npm:ää. Tai siirry olemassa olevaan: chrome-ext.wvservices.com/dapp-wallet.html

4. Syötä koekäytön lompakon osoite (alleviivattu yllä) dApp-osoitetekstiruutuun

5. Kirjoita pieni summa "Talletus"-kenttään ja napsauta painiketta:

Kuinka rakentaa, ottaa käyttöön ja testata Waves RIDE dApp -sovellusta
Waves Keeper pyytää lupaa allekirjoittaa InvokeScriptTransaction 10 WAVESin maksulla.

6. Vahvista tapahtuma:

Kuinka rakentaa, ottaa käyttöön ja testata Waves RIDE dApp -sovellusta
Tapahtuma luodaan ja lähetetään verkkoon. Nyt näet hänen henkilöllisyystodistuksensa

7. Tarkkaile tapahtumaa Waves Explorerin avulla. Syötä ID hakukenttään

Kuinka rakentaa, ottaa käyttöön ja testata Waves RIDE dApp -sovellusta

Johtopäätökset ja lisätiedot

Tarkastelimme työkaluja yksinkertaisten dAppien kehittämiseen, testaamiseen, käyttöönottoon ja käyttöön Waves Platformissa:

  • RIDE-kieli
  • VS-koodieditori
  • Waves Explorer
  • Surffilauta
  • Waves Keeper

Linkkejä niille, jotka haluavat jatkaa RIDEn oppimista:

Lisää esimerkkejä
Online IDE esimerkkejä
Waves-dokumentaatio
Kehittäjäkeskustelu Telegramissa
Waves ja RIDE on stackoverflow
UUSI! Verkkokurssit dApps-sovellusten luomisesta Waves-alustalla

Jatka sukeltamista RIDE-aiheeseen ja luo ensimmäinen dApp!

TL; DR: bit.ly/2YCFnwY

Lähde: will.com

Lisää kommentti