Kuidas ehitada, juurutada ja teste teha Waves RIDE dApp

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

Kuidas ehitada, juurutada ja teste teha Waves RIDE dApp

dApp-ide ja tavapĂ€raste rakenduste arenduse skeem ei erine peaaegu ĂŒldse:

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

Tööriistad

1. docker sÔlme ja Waves Explorer'i kÀivitamiseks

Kui te ei soovi sÔlme kÀivitada, vÔite selle sammu vahele jÀtta. On olemas testimis- ja eksperimentaalvÔrk. Kuid ilma oma sÔlme seadistamata vÔib testimisprotsess venida.

  • Teil on pidevalt vaja uusi kontosid testitavate tokenitega. TestimisvĂ”rgu kraan kannab ĂŒle 10 WAVES-i iga 10 minuti tagant.
  • Keskmine plokkide aeg testimisvĂ”rgus on 1 minut, sĂ”lmes 15 sekundit. See on eriti mĂ€rgatav, kui tehing nĂ”uab mitmeid kinnitusi.
  • Avalikes testimis-sĂ”lmedes on vĂ”imalik agressiivne vahemĂ€lu.
  • Need vĂ”ivad samuti ajutiselt olla kĂ€ttesaamatud tehnilise hoolduse tĂ”ttu.

Edasi eelduse all, et töötate oma sÔlmega.

2. Surfboard kÀsurea tööriist

  • Laadige alla ja installige Node.js, kasutades ppa, homebrew vĂ”i exe siit: https://nodejs.org/en/download/.
  • Install Surfboard – a tool that will allow you to run tests on an existing node.

npm install -g @waves/surfboard

3. Visual Studio Code Plugin

This step is optional if you are not an IDE fan and prefer text editors. All necessary tools are command-line utilities. If you use vim, pay attention to the plugin vim-ride.

Download and install Visual Studio Code: https://code.visualstudio.com/

Open VS Code and install the waves-ride plugin:

Kuidas ehitada, juurutada ja teste teha Waves RIDE dApp

Waves Keeper Browser Extension: https://wavesplatform.com/products-keeper

Valmis!

Run the node and Waves Explorer

1. Start the node:

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

Make sure the node is running via the REST API at http://localhost:6869:

Kuidas ehitada, juurutada ja teste teha Waves RIDE dApp
Swagger REST API interface for the node

2. Start an instance of Waves Explorer:

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

Open your browser and go to http://localhost:3000. You will see how quickly an empty chain of the local node is built.

Kuidas ehitada, juurutada ja teste teha Waves RIDE dApp
Waves Explorer displays the instance of the local node

RIDE Structure and Surfboard Tool

Create an empty directory and run the command in it

surfboard init

The command initializes the directory with the project structure, a "hello world" type application, and tests. If you open this folder with VS Code, you will see:

Kuidas ehitada, juurutada ja teste teha Waves RIDE dApp
Surfboard.config.json

  • Kaust ./ride/ alt Leiate ĂŒhekordse faili wallet.ride – katalooge, kus asub dApp kood. AnalĂŒĂŒsime dAppi lĂŒhidalt jĂ€rgmises osas.
  • Kaust ./test/ alt Leiate faili *.js. Siin hoitakse teste.
  • ./surfboard.config.json – konfiguratsioonifail testide kĂ€ivitamiseks.

Envs – oluline sektsioon. Iga keskkond seadistatakse nii:

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

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

Rakendus Wallet-demo

See sektsioon ei ole RIDE keele kĂ€siraamat. Pigem on see ĂŒlevaade rakendusest, mida arendame ja testime, et paremini mĂ”ista, mis plokiahelas toimub.

Vaadakem lihtsat rakendust Wallet-demo. IgaĂŒks saab saata dAppi aadressile tokeneid. VĂ€ljavĂ”tt vĂ”ib toimuda ainult oma WAVES'e puhul. Kaks @Callable funktsiooni on saadaval lĂ€bi InvokeScriptTransaction:

  • deposit(), mis nĂ”uab WAVES's kinnitatud makset
  • withdraw(amount: Int), mis tagastab tokenid

dApp kogu elutsĂŒkli jooksul sĂ€ilitatakse struktuuri (aadress → summa):

Action
Tulemuslik olek

algne
tĂŒhi

Alice deponeerib 5 WAVES
alice-address → 500000000

Bob deponeerib 2 WAVES

alice-address → 500000000
bob-address → 200000000

Bob tÔmbab vÀlja 7 WAVES
KEELATUD!

Alice tÔmbab vÀlja 4 WAVES
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Àidet saab samuti leida GitHub.

VSCode plugina toetab pidevat kompileerimist faili redigeerimise ajal. Seega saate alati jÀlgida vigu VAHETUS.

Kuidas ehitada, juurutada ja teste teha Waves RIDE dApp
Kui soovite faili kompileerimisel kasutada teist tekstiredaktorit, kasutage

surfboard compile ride/wallet.ride

See vÀljastab rida base64 kompileeritud RIDE-i koodist.

Teststsenaarium ‘wallet.ride’ jaoks

Vaatame testfaili. Töötab JavaScripti Mocha raamistikus. Seal on funktsioon «Before» ja kolm testi:

  • «Before» rahastab mitmeid kontosid MassTransferTransactioni kaudu, kompileerib skripti ja juurutab selle plokiahelasse.
  • «Can deposit» saadab vĂ”rku InvokeScriptTransactioni, aktiveerides funktsiooni deposit() iga kahe konto jaoks.
  • «Can’t withdraw more than was deposited» testib, et keegi ei saa varastada teiste tokenite.
  • «Can deposit» kontrollib, et vĂ€ljamaksed töödeldakse korrektselt.

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

Testi kÀivitamiseks tÀitke

surfboard test

Kui teil on mitu stsenaariumi (nÀiteks vajate eraldi projektiskripti), vÔite kÀivitada

surfboard test my-scenario.js

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

rahakoti testikomplekt
Konto genereerimine nonce'iga: ce8d86ee
Konto genereeritud: foofoofoofoofoofoofoofoofoofoofoo#ce8d86ee - 3M763WgwDhmry95XzafZedf7WoBf5ixMwhX
Konto genereeritud: barbarbarbarbarbarbarbarbarbar#ce8d86ee - 3MAi9KhwnaAk5HSHmYPjLRdpCAnsSFpoY2v
Konto genereeritud: wallet#ce8d86ee - 3M5r6XYMZPUsRhxbwYf1ypaTB6MNs2Yo1Gb
Kontod on edukalt rahastatud
Skript on seadistatud
   √ Saab sissemakse teha (4385ms)
   √ Ei saa vĂ€lja vĂ”tta rohkem, kui on sisse pandud
   √ Saab vĂ€lja vĂ”tta (108ms)
3 lÀbis (15s)

HĂ€id uudiseid! Testid on lĂ€bitud. Vaadakem, mis toimub Waves Exploreris: vaatame plokke vĂ”i sisestame ĂŒhte eelnevalt nimetatud aadressidest otsingusse (nt vastavat rahakotile#. Siit leiate tehingute ajalugu, dApp oleku, dekompileeritud binaarfaili.

Kuidas ehitada, juurutada ja teste teha Waves RIDE dApp
Waves Explorer. Rakendus, mis just Àsja juurutati.

MÔned soovitused Surfboardi jaoks:

1. Testimise jaoks testnet keskkonnas kasutage:

surfboard test --env=testnet

Saada testtokenid

2. Kui soovite vaadata JSON-versione tehingutest ja kuidas node neid töödelda, kÀivitage test -v (tÀhendab 'verbose'):

surfboard test -v

Rakenduste kasutamine Waves Keeperiga

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

Kuidas ehitada, juurutada ja teste teha Waves RIDE dApp
Waves Keeperi seadistamine kohalikku node'iga tööle

2. Kas soovite importida salajase fraasi tokenitega vÔrgu jaoks? Lihtsuse huvides kasutage oma node'i algset seed'i: waves private node seed with waves tokens. Aadress: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Saate kĂ€ivitada ĂŒhe lehe serverita rakenduse ise, kasutades npm-i. VĂ”i minge olemasolevasse: chrome-ext.wvservices.com/dapp-wallet.html

4. Sisestage testimise kÀivitamise aadress (allpool kÔrge) dAppi aadressi tekstivÀlja

5. Sisestage vÀike summa 'Deposit' vÀljade ja vajutage nuppu:

Kuidas ehitada, juurutada ja teste teha Waves RIDE dApp
Waves Keeper kĂŒsib luba InvokeScriptTransactioni allkirjastamiseks 10 WAVES maksega.

6. Kinnitage tehing:

Kuidas ehitada, juurutada ja teste teha Waves RIDE dApp
Tehing on loodud ja edastatakse vĂ”rku. NĂŒĂŒd on nĂ€ha selle ID

7. JÀlgige tehingut Waves Exploreri abil. Sisestage ID otsinguvÀljale

Kuidas ehitada, juurutada ja teste teha Waves RIDE dApp

KokkuvÔtted ja tÀiendav teave

Oleme vaadanud arendustööriistu, testimist, juurutamist ja lihtsate dAppide kasutamist Waves Platvormil:

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

Lingid, kes soovivad RIDE't rohkem uurida:

Rohkem nÀiteid
VeebipÔhine IDE koos nÀidetega
Waves dokumentatsioon
Arendajate vestlus Telegramis
Waves ja RIDE stackoverflow's
UUS! Veebikursused dAppide loomise kohta Waves platvormil

SĂŒvenege rohkem RIDE teema ja looge oma esimene dApp!

LĂŒhikokkuvĂ”te: bit.ly/2YCFnwY

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster