Hvernig á að smíða, dreifa og prófa Waves RIDE dApp

Halló! Í þessari grein mun ég sýna þér hvernig á að skrifa og keyra venjulegan dApp á Waves hnút. Skoðum nauðsynleg tæki, aðferðir og dæmi um þróun.

Hvernig á að smíða, dreifa og prófa Waves RIDE dApp

Þróunarkerfi fyrir dApps og venjuleg forrit er nánast það sama:

  • Við skrifum kóðann
  • Að skrifa sjálfvirk próf
  • Að ræsa forritið
  • Prófanir

Verkfæri

1. docker til að keyra hnútinn og Waves Explorer

Ef þú vilt ekki hefja hnút geturðu sleppt þessu skrefi. Eftir allt saman, það er próf og tilrauna net. En án þess að nota eigin hnút getur prófunarferlið dregist á langinn.

  • Þú þarft stöðugt nýja reikninga með prófunartáknum. Prófunarnetblöndunartækið flytur 10 BYLGJUR á 10 mínútna fresti.
  • Meðallokunartími í prófunarnetinu er 1 mínúta, í hnútnum - 15 sekúndur. Þetta er sérstaklega áberandi þegar viðskipti þurfa margar staðfestingar.
  • Árásargjarn skyndiminni er möguleg á opinberum prófhnútum.
  • Þeir gætu einnig verið tímabundið ótiltækir vegna viðhalds.

Héðan í frá mun ég gera ráð fyrir að þú sért að vinna með þinn eigin hnút.

2. Surfboard Command Line Tool

  • Sæktu og settu upp Node.js með ppa, homebrew eða exe hér: https://nodejs.org/en/download/.
  • Settu upp Surfboard, tól sem gerir þér kleift að keyra próf á núverandi hnút.

npm install -g @waves/surfboard

3. Visual Studio Code viðbót

Þetta skref er valfrjálst ef þú ert ekki aðdáandi IDE og kýst textaritla. Öll nauðsynleg verkfæri eru skipanalínutól. Ef þú notar vim skaltu fylgjast með viðbótinni vim-riði.

Hladdu niður og settu upp Visual Studio Code: https://code.visualstudio.com/

Opnaðu VS kóða og settu upp waves-ride viðbótina:

Hvernig á að smíða, dreifa og prófa Waves RIDE dApp

Waves Keeper vafraviðbót: https://wavesplatform.com/products-keeper

Gert!

Ræstu hnútinn og Waves Explorer

1. Ræstu hnútinn:

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

Gakktu úr skugga um að hnúturinn sé ræstur í gegnum REST API í http://localhost:6869:

Hvernig á að smíða, dreifa og prófa Waves RIDE dApp
Swagger REST API fyrir hnút

2. Byrjaðu tilvik af Waves Explorer:

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

Opnaðu vafra og farðu í http://localhost:3000. Þú munt sjá hversu fljótt tóm staðbundin hnút hringrás er byggð.

Hvernig á að smíða, dreifa og prófa Waves RIDE dApp
Waves Explorer sýnir staðbundið hnútatilvik

RIDE uppbygging og brimbrettaverkfæri

Búðu til tóma möppu og keyrðu skipunina í henni

surfboard init

Skipunin frumstillir möppu með uppbyggingu verkefnisins, „halló heimur“ forritum og prófum. Ef þú opnar þessa möppu með VS kóða muntu sjá:

Hvernig á að smíða, dreifa og prófa Waves RIDE dApp
Surfboard.config.json

  • Undir ./ride/ möppunni finnurðu eina skrá wallet.ride - möppuna þar sem dApp kóðinn er staðsettur. Við munum greina dApps stuttlega í næstu blokk.
  • Undir ./test/ möppunni finnurðu *.js skrá. Próf eru geymd hér.
  • ./surfboard.config.json – stillingarskrá til að keyra próf.

Envs er mikilvægur hluti. Hvert umhverfi er stillt svona:

  • REST API endapunktur hnútsins sem verður notaður til að ræsa dApp og CHAIN_ID netsins.
  • Leynileg setning fyrir reikning með táknum sem verða uppsprettur prófunartáknanna þinna.

Eins og þú sérð styður surfboard.config.json sjálfgefið mörg umhverfi. Sjálfgefið er staðbundið umhverfi (defaultEnv lykillinn er breytilegur breytu).

Veski-sýnisforrit

Þessi hluti er ekki tilvísun í RIDE tungumálið. Frekar að skoða forritið sem við sendum inn og prófum til að skilja betur hvað er að gerast í blockchain.

Við skulum skoða einfalt Wallet-demo forrit. Hver sem er getur sent tákn á dApp heimilisfang. Þú getur aðeins afturkallað WAVES. Tvær @Callable aðgerðir eru fáanlegar í gegnum InvokeScriptTransaction:

  • deposit()sem krefst meðfylgjandi greiðslu í WAVES
  • withdraw(amount: Int)sem skilar táknum

Í gegnum dApp líftímann verður uppbyggingunni (heimilisfang → magn) viðhaldið:

aðgerð
Staðan sem myndast

byrjunar
tómur

Alice leggur inn 5 BYLGJUR
alice-heimilisfang → 500000000

Bob leggur inn 2 BYLGJUR

alice-heimilisfang → 500000000
bob-heimilisfang → 200000000

Bob dregur 7 BYLGJUR til baka
HAFIÐ!

Alice dregur 4 BYLGJUR til baka
alice-heimilisfang → 100000000
bob-heimilisfang → 200000000

Hér er kóðinn til að skilja ástandið að fullu:

# 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

Dæmi um kóða er einnig að finna á GitHub.

VSCode viðbótin styður samfellda söfnun meðan verið er að breyta skrá. Þess vegna geturðu alltaf fylgst með villum í PROBLEMS flipanum.

Hvernig á að smíða, dreifa og prófa Waves RIDE dApp
Ef þú vilt nota annan textaritil þegar þú safnar saman skránni skaltu nota

surfboard compile ride/wallet.ride

Þetta mun gefa út röð af base64 samansettum RIDE kóða.

Prófunarforskrift fyrir 'wallet.ride'

Við skulum skoða próf skrá. Keyrt af Mokka ramma JavaScript. Það er „Áður“ aðgerð og þrjú próf:

  • „Áður“ fjármagnar marga reikninga í gegnum MassTransferTransaction, setur saman handritið og setur það á blockchain.
  • „Getur lagt inn“ sendir InvokeScriptTransaction til netsins og virkjar inná() aðgerðina fyrir hvern reikninganna tveggja.
  • „Getur ekki tekið út meira en lagt var inn“ próf sem enginn getur stolið táknum annarra.
  • „Getur lagt inn“ athugar að úttektir séu unnar á réttan hátt.

Keyrðu próf frá Surfboard og greindu niðurstöður í Waves Explorer

Til að keyra prófið skaltu keyra

surfboard test

Ef þú ert með margar forskriftir (til dæmis, þú þarft sérstakt dreifingarforskrift) geturðu keyrt

surfboard test my-scenario.js

Surfboard mun safna prófunarskránum í ./test/ möppunni og keyra skriftuna á hnútnum sem er stilltur í surfboard.config.json. Eftir nokkrar sekúndur muntu sjá eitthvað á þessa leið:

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)

Húrra! Próf stóðust. Nú skulum við skoða hvað gerist þegar Waves Explorer er notað: skoðaðu blokkirnar eða límdu eitt af vistföngunum hér að ofan í leitina (til dæmis samsvarandi wallet#. Þar geturðu fundið viðskiptasögu, dApp stöðu, afsamlaða tvíundarskrá.

Hvernig á að smíða, dreifa og prófa Waves RIDE dApp
Waves Explorer. Forrit sem er nýbúið að dreifa.

Nokkur ábendingar um brimbretti:

1. Til að prófa í testnet umhverfinu, notaðu:

surfboard test --env=testnet

Fáðu prufumerki

2. Ef þú vilt sjá JSON útgáfur af færslum og hvernig þær eru unnar af hnútnum skaltu keyra prófið með -v (þýðir 'orðtak'):

surfboard test -v

Notkun forrita með Waves Keeper

1. Settu Waves Keeper upp til að virka: http://localhost:6869

Hvernig á að smíða, dreifa og prófa Waves RIDE dApp
Uppsetning Waves Keeper til að vinna með staðbundnum hnút

2. Flytja inn leynilega setningu með táknum fyrir netið? Til einföldunar, notaðu upphafsfræ hnútsins þíns: waves private node seed with waves tokens. Heimilisfang: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Þú getur sjálfur keyrt miðlaralaust forrit á einni síðu með því að nota npm. Eða farðu í þann sem fyrir er: chrome-ext.wvservices.com/dapp-wallet.html

4. Sláðu inn veskis heimilisfangið úr prufukeyrslunni (undirstrikað hér að ofan) í dApp heimilisfang textareitinn

5. Sláðu inn litla upphæð í reitinn „Innborgun“ og smelltu á hnappinn:

Hvernig á að smíða, dreifa og prófa Waves RIDE dApp
Waves Keeper óskar eftir leyfi til að skrifa undir InvokeScriptTransaction með greiðslu upp á 10 WAVES.

6. Staðfestu viðskiptin:

Hvernig á að smíða, dreifa og prófa Waves RIDE dApp
Færslan er búin til og send út á netið. Nú geturðu séð skilríki hennar

7. Fylgstu með viðskiptunum með Waves Explorer. Sláðu inn auðkenni í leitarreitinn

Hvernig á að smíða, dreifa og prófa Waves RIDE dApp

Niðurstöður og viðbótarupplýsingar

Við skoðuðum verkfærin til að þróa, prófa, dreifa og nota einföld dApps á Waves pallinum:

  • RIDE tungumál
  • VS kóða ritstjóri
  • Waves Explorer
  • Brimbretti
  • Waves Keeper

Tenglar fyrir þá sem vilja halda áfram að læra RIDE:

Fleiri dæmi
IDE á netinu með dæmum
Waves Documentation
Þróunarspjall í Telegram
Bylgjur og RIDE á staflaflæði
NÝTT! Netnámskeið um að búa til dApps á Waves pallinum

Haltu áfram að kafa inn í RIDE efnið og búðu til fyrsta dAppið þitt!

TL; DR: bit.ly/2YCFnwY

Heimild: www.habr.com

Bæta við athugasemd