Kuidas ehitada, kÀivitada ja testida Waves RIDE dApp-i

Tere! KÀesolevas artiklis nÀitan, kuidas kirjutada ja kÀivitada Wavesi sÔlmes tavaline dApp. Vaatame vajalikke tööriistu, meetodeid ja arenduse nÀidet.

Kuidas ehitada, kÀivitada ja testida Waves RIDE dApp-i

dAppide ja tavarakenduste arendusprotsess ei erine praktiliselt ĂŒldse:

  • Kirjutame koodi
  • Kirjutame automatiseeritud testimise
  • KĂ€ivitame rakenduse
  • Testime

Tööriistad

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 testimis- ja eksperimentaalsed vĂ”rgud. Kuid ilma oma sĂ”lme ĂŒles seadmiseta vĂ”ib testimisprotsess venida.

  • Teil on pidevalt vaja uusi kontosid koos testitokenitega. TestimisvĂ”rgu kraan edastab iga 10 minuti tagant 10 WAVES-i.
  • TestimisvĂ”rgus on plokkide keskmine aeg 1 minut, sĂ”lmes – 15 sekundit. See on eriti mĂ€rgatav, kui tehing nĂ”uab mitu kinnitust.
  • Avalikes testimis sĂ”lmedes on vĂ”imalik agressiivne vahemĂ€llu salvestamine.
  • Samuti vĂ”ivad need olla ajutiselt kĂ€ttesaamatud tehnilise hoolduse tĂ”ttu.

Oletame, et tööteete oma sÔlme.

2. KÀskude rea tööriist Surfboard

  • 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 kĂ€ivitada teste olemasolevas sĂ”lmes.

npm install -g @waves/surfboard

3. Visual Studio Code'i plugin

Samm ei ole kohustuslik, kui te ei ole IDE fÀnn ja eelistate tekstiredaktoreid. KÔik vajalikud tööriistad on kÀsurea utiliidid. Kui kasutate vim-i, pange tÀhele pluginat vim-ride.

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

Avage VS Code ja installige plugin waves-ride:

Kuidas ehitada, kÀivitada ja testida Waves RIDE dApp-i

Brauserilaiendus Waves Keeper: 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 kÀivitub REST API kaudu http://localhost:6869:

Kuidas ehitada, kÀivitada ja testida Waves RIDE dApp-i
Swagger REST API liides sÔlmele

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 http://localhost:3000. NĂ€ete, kui kiiresti lokaalne sĂ”lm tĂŒhja ahelat ĂŒles ehitab.

Kuidas ehitada, kÀivitada ja testida Waves RIDE dApp-i
Waves Explorer kuvab lokaalse sÔlme eksemplari

RIDE struktuur ja tööriist Surfboard

Looge tĂŒhi kataloog ja kĂ€ivitage selles kĂ€sk

surfboard init

KĂ€sk initsialiseerib katalooge, sealhulgas projektistruktuuri, "hello world" tĂŒĂŒpi rakenduse ja testid. Kui avate selle kausta VS Code'is, nĂ€ete:

Kuidas ehitada, kÀivitada ja testida Waves RIDE dApp-i
Surfboard.config.json

  • Kaustas .\/ride\/ leiate ĂŒhe faili wallet.ride – katalooge, kus asub dApp kood. Anname dAppi lĂŒhikese analĂŒĂŒsi jĂ€rgmises blokis.
  • Kausta . /test/ leiate faili *.js. Siin hoitakse teste.
  • . /surfboard.config.json – konfigureerimisfail testide kĂ€ivitamiseks.

Envs – oluline sektsioon. Iga keskkond on seadistatud jĂ€rgmiselt:

  • REST API sĂ”lme lĂ”pp-punkt, mida kasutatakse dApp-i ja vĂ”rgu CHAIN_ID kĂ€ivitamiseks.
  • Salajane fraas konto jaoks, kus on tokenid, mis saavad olema teie testi tokenite allikad.

Nagu nĂ€ete, toetab surfboard.config.json vaikimisi mitmeid keskkondi. Vaikimisi on seadistatud kohalik keskkond (defaultEnv – muudetav parameeter).

Rakendus Wallet-demo

See sektsioon ei ole RIDE keele kÀsiraamat. Pigem on see pilk rakendusele, mida arendame ja testime, et paremini mÔista, mis plokiahelas toimub.

Vaadakem lihtsat rakendust Wallet-demo. IgaĂŒks vĂ”ib saata dApp-aadressile tokeneid. Saab vĂ€lja vĂ”tta ainult oma WAVES-e. Kaks @Callable funktsiooni on saadaval InvokeScriptTransaction kaudu:

  • deposit(), mis nĂ”uab WAVES-i kĂŒlge kinnitatud makset
  • withdraw(amount: Int), mis tagastab tokenid

Terve dApp-i elu jooksul hoitakse struktuuri (aadress → summa):

Toiming
Tulemuslik seisund

algne
tĂŒhi

Alice deponeerib 5 WAVES-i
alice-address → 500000000

Bob deponeerib 2 WAVES-i

alice-address → 500000000
bob-address → 200000000

Bob taandab 7 WAVES-i
KEELATUD!

Alice taandab 4 WAVES-i
alice-address → 100000000
bob-address → 200000000

Siin on kood, et olukorda tÀielikult mÔista:

# 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

KoodinÀidud leiate ka GitHub.

VSCode'i pistikprogramm toetab pidevat kompileerimist faili redigeerimise ajal. SeetÔttu saate alati jÀlgida vigu PROBLEEMID vahekaart.

Kuidas ehitada, kÀivitada ja testida Waves RIDE dApp-i
Kui soovite kasutada muud tekstiredaktorit faili kompileerimise ajal, kasutage

surfboard compile ride/ wallet.ride

See kirjutab vÀlja hulga base64 kompileeritud RIDE koodist.

Teststsenaarium ‘wallet.ride’ jaoks

Vaadake testifaili. Töötab JavaScripti Mocha raamistiku peal. On funktsioon „Before“ ja kolm testi:

  • „Before“ finantseerib mitu kontot lĂ€bi MassTransferTransaction, kompileerib skripti ja juurutab selle plokiahelas.
  • „Can deposit“ saadab vĂ”rgule InvokeScriptTransaction, aktiveerides deposit() funktsiooni iga kahe konto puhul.
  • „Can’t withdraw more than was deposited“ testib, et keegi ei suuda varastada teiste tokenit.
  • „Can deposit“ kontrollib, et vĂ€ljavĂ”tted töödeldakse Ă”igesti.

Testide kĂ€ivitamine Surfboardiga ja tulemuste analĂŒĂŒs Waves Exploreris

Testi kÀivitamiseks tÀitke

surfboard test

Kui teil on mitu stsenaariumi (nÀiteks on vaja eraldi juurutamisskripti), saate jooksutada

surfboard test my-scenario.js

Surfboard kogub testifailid kaustas ./test/ ja kÀivitab skripti sÔlmes, mis on seadistatud failis surfboard.config.json. MÔne sekundi pÀrast nÀete midagi sellist:

rahakoti testikomplekt
Konto genereerimise nonce: ce8d86ee
Konto genereeritud: foofoofoofoofoofoofoofoofoofoofoo#ce8d86ee - 3M763WgwDhmry95XzafZedf7WoBf5ixMwhX
Konto genereeritud: barbarbarbarbarbarbarbarbarbar#ce8d86ee - 3MAi9KhwnaAk5HSHmYPjLRdpCAnsSFpoY2v
Konto genereeritud: rahakott#ce8d86ee - 3M5r6XYMZPUsRhxbwYf1ypaTB6MNs2Yo1Gb
Kontod on eduka rahastamise saanud
Skripti on seadistatud
   √ Saab deponeerida (4385ms)
   √ Ei saa vĂ€lja vĂ”tta rohkem, kui on deponeeritud
   √ Saab vĂ€lja vĂ”tta (108ms)
3 lÀbitud (15s)

Hurraa! Testid on lĂ€bitatud. Vaatame nĂŒĂŒd, mis juhtub, kui kasutame Waves Explorerit: vaatame plokke vĂ”i sisestame ĂŒkskĂ”ik millisest ĂŒlaltoodud aadressilt otsingusse (nĂ€iteks vastav) rahakott#. Seal on vĂ”imalik leida tehingute ajalugu, dApp olek ning dekompileeritud binaarfail.

Kuidas ehitada, kÀivitada ja testida Waves RIDE dApp-i
Waves Explorer. Rakendus, mis just kÀivitati.

MÔned soovitused Surfboardi kohta:

1. Testimiseks testnet keskkonnas kasutage:

surfboard test --env=testnet

Hankige testitooted

2. Kui soovite vaadata tehingute JSON-versioone ja kuidas need sÔlmes töödeldakse, kÀivitage testiparameetriga -v (tÀhendab 'verbose'):

surfboard test -v

Rakenduste kasutamine koos Waves Keeperiga

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

Kuidas ehitada, kÀivitada ja testida Waves RIDE dApp-i
Seadistamine Waves Keeperi jaoks töötama kohaliku sÔlmega

2. Importige vÔti, millel on tokenid vÔrgu jaoks? Lihtsuse huvides kasutage oma sÔlme algset seemet: waves private node seed with waves tokens. Aadress: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Saate kĂ€ivitada ĂŒhe lehega serveriteta rakenduse iseseisvalt, kasutades npm-i. VĂ”i minge olemasolevale: chrome-ext.wvservices.com/dapp-wallet.html

4. Sisestage testkĂ€ivitamise aadress (ĂŒlevalt rĂ”hutatud) dApp aadressi tekstivĂ€lja

5. Sisestage vÀike summa vÀljale 'Deponeerida' ja klÔpsake nuppu:

Kuidas ehitada, kÀivitada ja testida Waves RIDE dApp-i
Waves Keeper kĂŒsib luba InvokeScriptTransaction allkirjastamiseks, mille makse on 10 WAVES.

6. Kinnitage tehing:

Kuidas ehitada, kÀivitada ja testida Waves RIDE dApp-i
Tehing on loodud ja edastatakse vĂ”rgus. NĂŒĂŒd on nĂ€htav selle ID

7. JÀlgige tehingut Waves Exploreri kaudu. Sisestage ID otsinguvÀlja

Kuidas ehitada, kÀivitada ja testida Waves RIDE dApp-i

JĂ€reldused ja lisainformatsioon

Oleme kÀsitlenud arendus-, testimis-, juurutamis- ja lihtsate dApp-de kasutamise tööriistu Waves platvormil:

  • RIDE keel
  • VS Code redaktor
  • Waves Explorer
  • Surfboard
  • Waves Keeper

Lingid neile, kes soovivad jÀtkata RIDE uurimist:

Rohkem nÀiteid
VeebipÔhine IDE nÀidistega
Waves dokumentatsioon
Arendajate vestlus Telegramis
Waves ja RIDE stackoverflow'is
UUS! Veebikursused dApp'ide loomise kohta Waves platvormil

SĂŒvene veel rohkem RIDE teemasse ja loo oma esimene dApp!

TL;DR: bit.ly/2YCFnwY

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster