Si sihtoni, zhvilloni dhe testoni aplikacionin Waves RIDE dApp

PĂ«rshĂ«ndetje! NĂ« kĂ«tĂ« artikull do t’ju tregoj se si tĂ« shkruani dhe tĂ« lançoni njĂ« dApp standard nĂ« nodĂ«n Waves. Do tĂ« shqyrtojmĂ« mjetet e nevojshme, metodat dhe njĂ« shembull tĂ« zhvillimit.

Si sihtoni, zhvilloni dhe testoni aplikacionin Waves RIDE dApp

Schema e zhvillimit të dApps dhe aplikacioneve standarde nuk ndryshon shumë:

  • Shkruaj mĂ«nyrĂ«n e kodit
  • Shkruaj testimin automatizuar
  • FillojmĂ« aplikacionin
  • TestojmĂ«

Mjetet

1. docker për të lançuar nodën dhe Waves Explorer

Nëse nuk dëshironi të lançoni nodën, mund ta kaloni këtë hap. Sepse ka një rrjet testues dhe eksperimentues. Por pa ndërtimin e nodës tuaj, procesi i testimit mund të zgjasë.

  • NĂ« vazhdim do t’ju nevojiten vazhdimisht llogari tĂ« reja me tokenat testuese. Krani i rrjetit testues bĂ«n transferimin e 10 WAVES çdo 10 minuta.
  • Koha mesatare e blloqeve nĂ« rrjetin testues Ă«shtĂ« 1 minutĂ«, nĂ« nodĂ« – 15 sekonda. Kjo Ă«shtĂ« veçanĂ«risht e ndjeshme kur transaksioni kĂ«rkon disa konfirmime.
  • NĂ« nodat e testimeve publike ka mundĂ«si pĂ«r njĂ« memorie tĂ« agresive.
  • Ato gjithashtu mund tĂ« jenĂ« pĂ«rkohĂ«sisht tĂ« paarritshme pĂ«r shkak tĂ« mirĂ«mbajtjes teknike.

Më tej do të supozoj se po punoni me nodën tuaj.

2. Mjeti i komandës Surfboard

  • Shkarkoni dhe instaloni Node.js duke pĂ«rdorur ppa, homebrew ose exe kĂ«tu: https://nodejs.org/en/download/.
  • Instaloni Surfboard - njĂ« mjet qĂ« do t'ju lejojĂ« tĂ« nisim provat nĂ« nodin ekzistues.

npm install -g @waves/surfboard

3. Shtesa për Visual Studio Code

Hapi është opsional nëse nuk jeni fans i IDE-ve dhe preferoni redaktorët e tekstit. Të gjitha mjetet e nevojshme janë utilitarë të komandës. Nëse përdorni vim, kontrolloni shtesën vim-ride.

Shkarkoni dhe instaloni Visual Studio Code: https://code.visualstudio.com/

Hapni VS Code dhe instaloni shtesën waves-ride:

Si sihtoni, zhvilloni dhe testoni aplikacionin Waves RIDE dApp

Shtesa e shfletuesit Waves Keeper: https://wavesplatform.com/products-keeper

Gati!

Nisni nodin dhe Waves Explorer

1. Nisni nodin:

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

Sigurohuni që nodi të funksionojë përmes REST API në http://localhost:6869:

Si sihtoni, zhvilloni dhe testoni aplikacionin Waves RIDE dApp
Ndërfaqja Swagger REST API për nodin

2. Nisni një ekzemplar të Waves Explorer:

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

Hapni shfletuesin dhe shkoni në http://localhost:3000. Do të shihni se si ndërttohet shpejt një zinxhir i zbrazët i nodit lokal.

Si sihtoni, zhvilloni dhe testoni aplikacionin Waves RIDE dApp
Waves Explorer tregon një ekzemplar të nodit lokal

Struktura RIDE dhe mjeti Surfboard

Krijoni një direktori të zbrazët dhe ekzekutoni komandën

surfboard init

Komanda inicializon direktorinë me strukturën e projektit, një aplikacion të tipit 'hello world' dhe provat. Nëse e hapni këtë dosje me VS Code, do të shihni:

Si sihtoni, zhvilloni dhe testoni aplikacionin Waves RIDE dApp
Surfboard.config.json

  • NĂ« dosjen ./ride/ do tĂ« gjeni njĂ« skedar tĂ« vetme wallet.ride – drejtorinĂ« ku ndodhet kodi i dApp. Ne do ta analizojmĂ« shkurtimisht dApp nĂ« bllokun tjetĂ«r.
  • NĂ« dosjen ./test/ do tĂ« gjeni skedarin *.js. KĂ«tu ruhen testet.
  • ./surfboard.config.json – skedari i konfigurimit pĂ«r ekzekutimin e testeve.

Envs – njĂ« seksion i rĂ«ndĂ«sishĂ«m. Çdo ambient konfigurohet si:

  • Pika e fundit REST API tĂ« nodĂ«s qĂ« do tĂ« pĂ«rdoret pĂ«r tĂ« nisur dApp dhe CHAIN_ID tĂ« rrjetit.
  • Fraza e sekretit pĂ«r llogarinĂ« me tokenĂ«t qĂ« do tĂ« jenĂ« burim i tokenĂ«ve tĂ« testit tuaj.

Siç e shihni, surfboard.config.json pĂ«r default mbĂ«shtet disa ambiente. Ambienti lokal Ă«shtĂ« vendosur si default (çelĂ«si defaultEnv – parametrat e mundshĂ«m qĂ« mund tĂ« ndryshoni).

Aplikacioni Wallet-demo

Ky seksion nuk është një manual për gjuhën RIDE. Në vend të kësaj, është një shikim në aplikacionin që po zhvillojmë dhe testojmë për të kuptuar më mirë se çfarë ndodh në blockchain.

Le ta shqyrtojmĂ« aplikacionin e thjeshtĂ« Wallet-demo. Çdo njeri mund tĂ« dĂ«rgojĂ« tokenĂ« nĂ« adresĂ«n e dApp. Mund tĂ« tĂ«rhiqni vetĂ«m WAVES tuaj. Dy funksione @Callable janĂ« tĂ« disponueshme pĂ«rmes InvokeScriptTransaction:

  • deposit(), i cili kĂ«rkon njĂ« pagesĂ« tĂ« lidhur nĂ« WAVES
  • withdraw(amount: Int), i cili kthen tokenĂ«t

GjatĂ« gjithĂ« ciklit tĂ« jetĂ«s sĂ« dApp, struktura (address → amount) do tĂ« mbĂ«shtetet:

Veprimi
Gjendja përfundimtare

fillestar
e zbrazët

Alice depoziton 5 WAVES
adresa-alice → 500000000

Bob depoziton 2 WAVES

adresa-alice → 500000000
adresa-bob → 200000000

Bob tërheq 7 WAVES
NDA!

Alice tërheq 4 WAVES
adresa-alice → 100000000
adresa-bob → 200000000

Ja kodi për të kuptuar situatën plotësisht:

# 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

Një shembull kodi mund të gjendet gjithashtu në GitHub.

Plugin-i VSCode mbështet kompilimin e vazhdueshëm gjatë redaktimit të skedarit. Prandaj, mund ta ndiqni gjithmonë gabimin në tabin PROBLEMS.

Si sihtoni, zhvilloni dhe testoni aplikacionin Waves RIDE dApp
Nëse dëshironi të përdorni një redaktues tjetër teksti gjatë kompilimit të skedarit, përdorni

surfboard compile ride/wallet.ride

Kjo do të prodhojë një seri base64 të kodit të kompiluar RIDE.

Skema e testit pĂ«r ‘wallet.ride’

Le tĂ« shikojmĂ« nĂ« skedarin e testit. Punohet mbi kuadrin JavaScript’s Mocha. Ka funksionin «Before» dhe tre teste:

  • «Before» financimon disa llogari pĂ«rmes MassTransferTransaction, kompilon skriptin dhe e vendos atĂ« nĂ« blockchain.
  • «Can deposit» dĂ«rgon nĂ« rrjet InvokeScriptTransaction, duke aktivizuar funksionin deposit() pĂ«r secilĂ«n nga dy llogaritĂ«.
  • «Can’t withdraw more than was deposited» teston qĂ« askush nuk mund tĂ« vjedhĂ« token-at e tjetrit.
  • «Can deposit» kontrollon qĂ« tĂ«rheqjet trajtohen nĂ« mĂ«nyrĂ« korrekte.

Lansimi i testeve me Surfboard dhe analiza e rezultateve në Waves Explorer

Për të nisur testin, kryeni

testin surfboard

Nëse keni disa skenarë (për shembull, nevojitet një skenar i veçantë për nëngjeshje), mund të nisni

surfboard test my-scenario.js

Surfboard do të mbledhë skedarët e testeve në dosjen ./test/ dhe do të ekzekutojë skenarin në noden e caktuar në surfboard.config.json. Pas disa sekondash do të shihni diçka të ngjashme:

suite testi wallet
Duke gjeneruar llogari me nonce: ce8d86ee
Llogaria e gjeneruar: foofoofoofoofoofoofoofoofoofoofoo#ce8d86ee - 3M763WgwDhmry95XzafZedf7WoBf5ixMwhX
Llogaria e gjeneruar: barbarbarbarbarbarbarbarbarbar#ce8d86ee - 3MAi9KhwnaAk5HSHmYPjLRdpCAnsSFpoY2v
Llogaria e gjeneruar: wallet#ce8d86ee - 3M5r6XYMZPUsRhxbwYf1ypaTB6MNs2Yo1Gb
Llogaritë janë financuar me sukses
Skenari është vendosur
   √ Mund tĂ« depozitohet (4385ms)
   √ S'mund tĂ« tĂ«rhiqet mĂ« shumĂ« se sa Ă«shtĂ« depozituar
   √ Mund tĂ« tĂ«rhiqet (108ms)
3 kaluese (15s)

Hurra! Testet kaluan. Tani le të shohim se çfarë ndodh kur përdorim Waves Explorer: të shohim blloket ose të futim një nga adresat e përmendura më lart në kërkim (për shembull, përkatësin wallet#. Aty mund të gjeni historinë e transaksioneve, gjendjen e dApp, skedarin binar të dekompiluar.

Si sihtoni, zhvilloni dhe testoni aplikacionin Waves RIDE dApp
Waves Explorer. Aplikacioni që sapo është nisur.

Disa këshilla për Surfboard:

1. Për të testuar në mjedisin testnet, përdorni:

surfboard test --env=testnet

Merrni tokena testues

2. NĂ«se dĂ«shironi tĂ« shihni versionet JSON tĂ«Transaksioneve dhe si i pĂ«rpunon nodi, ekzekutoni testin me -v (do tĂ« thotĂ« ‘detajuar’):

surfboard test -v

Përdorimi i aplikacioneve me Waves Keeper

1. Konfiguroni Waves Keeper për të punuar: http://localhost:6869

Si sihtoni, zhvilloni dhe testoni aplikacionin Waves RIDE dApp
Konfigurimi i Waves Keeper për të punuar me nodën lokale

2. Importoni fjalëkalimin sekrete me tokens për rrjetin? Për thjeshtësi përdorni seed fillestar të nodës tuaj: waves private node seed with waves tokens. Adresa: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Mund të ekzekutoni një aplikacion pa server njëfaqësh vetë, duke përdorur npm. Ose kaloni te ekzistuesi: chrome-ext.wvservices.com/dapp-wallet.html

4. Shkruani adresën e portofolit nga testimi i nisjes (nënvizuar më lart) në kutinë e adresës dApp

5. Shkruani një shumë të vogël në fushën 'Depozitë' dhe klikoni butonin:

Si sihtoni, zhvilloni dhe testoni aplikacionin Waves RIDE dApp
Waves Keeper kërkon leje për të nënshkruar InvokeScriptTransaction me pagesën 10 WAVES.

6. Konfirmoni transaksionin:

Si sihtoni, zhvilloni dhe testoni aplikacionin Waves RIDE dApp
Transaksioni është krijuar dhe po transmetohet në rrjet. Tani mund ta shihni ID-në e tij

7. Vini re transaksionin me Waves Explorer. Shkruani ID-në në kutinë e kërkimit

Si sihtoni, zhvilloni dhe testoni aplikacionin Waves RIDE dApp

Përfundime dhe informacion shtesë

Ne shqyrtuam mjetet për zhvillim, testim, implementim dhe përdorim të dApps të thjeshtë në Waves Platform:

  • Gjuha RIDE
  • Redaktori i VS Code
  • Waves Explorer
  • Surfboard
  • Waves Keeper

Linket për ata që duan të vazhdojnë të studiojnë RIDE:

Më shumë shembuj
IDE online me shembuj
Dokumentacioni i Waves
Biseda e zhvilluesve në Telegram
Waves dhe RIDE në stackoverflow
NEO! Kurse online për krijimin e dApps në Waves Platform

Vazhdoni të thelloni njohuritë mbi RIDE dhe krijoni dApp-in tuaj të parë!

TL;DR: bit.ly/2YCFnwY

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster