Kā izveidot, izvietot un pārbaudīt viļņus RIDE dApp

Sveiki! Å ajā rakstā es jums parādÄ«Å”u, kā Waves mezglā uzrakstÄ«t un palaist parastu dApp. ApskatÄ«sim nepiecieÅ”amos rÄ«kus, metodes un attÄ«stÄ«bas piemēru.

Kā izveidot, izvietot un pārbaudīt viļņus RIDE dApp

DApps un parasto lietojumprogrammu izstrādes shēma ir gandrīz vienāda:

  • Koda rakstÄ«Å”ana
  • Automatizētas pārbaudes rakstÄ«Å”ana
  • Lietojumprogrammas palaiÅ”ana
  • TestÄ“Å”ana

Darbarīki

1. docker lai palaistu mezglu un Waves Explorer

Ja nevēlaties sākt mezglu, varat izlaist Å”o darbÄ«bu. Galu galā ir testu un eksperimentu tÄ«kls. Taču, neizvietojot savu mezglu, testÄ“Å”anas process var ievilkties.

  • Jums pastāvÄ«gi bÅ«s nepiecieÅ”ami jauni konti ar testa marÄ·ieriem. Testa tÄ«kla jaucējkrāns ik pēc 10 minÅ«tēm pārraida 10 VIĻŅUS.
  • Vidējais bloÄ·Ä“Å”anas laiks testa tÄ«klā ir 1 minÅ«te, mezglā ā€“ 15 sekundes. Tas ir Ä«paÅ”i pamanāms, ja darÄ«jumam ir nepiecieÅ”ami vairāki apstiprinājumi.
  • Publiskajos testa mezglos ir iespējama agresÄ«va keÅ”atmiņa.
  • Tie var bÅ«t arÄ« Ä«slaicÄ«gi nepieejami apkopes dēļ.

Turpmāk es pieņemÅ”u, ka strādājat ar savu mezglu.

2. Vērfinga komandrindas rīks

  • Lejupielādējiet un instalējiet Node.js, izmantojot ppa, homebrew vai exe Å”eit: https://nodejs.org/en/download/.
  • Instalējiet Surfboard ā€” rÄ«ku, kas ļauj veikt testus esoÅ”ajā mezglā.

npm install -g @waves/surfboard

3. Visual Studio Code spraudnis

Å Ä« darbÄ«ba nav obligāta, ja neesat IDE cienÄ«tājs un dodat priekÅ”roku teksta redaktoriem. Visi nepiecieÅ”amie rÄ«ki ir komandrindas utilÄ«tas. Ja izmantojat vim, pievērsiet uzmanÄ«bu spraudnim vim-ride.

Lejupielādējiet un instalējiet Visual Studio kodu: https://code.visualstudio.com/

Atveriet VS Code un instalējiet spraudni waves-ride:

Kā izveidot, izvietot un pārbaudīt viļņus RIDE dApp

Waves Keeper pārlūkprogrammas paplaŔinājums: https://wavesplatform.com/products-keeper

Gatavs!

Palaidiet mezglu un Waves Explorer

1. Sāciet mezglu:

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

Pārliecinieties, vai mezgls ir palaists, izmantojot REST API http://localhost:6869:

Kā izveidot, izvietot un pārbaudīt viļņus RIDE dApp
Swagger REST API mezglam

2. Sāciet Waves Explorer gadÄ«jumu:

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

Atveriet pārlÅ«kprogrammu un dodieties uz http://localhost:3000. JÅ«s redzēsiet, cik ātri tiek izveidota tukÅ”a lokālā mezgla ķēde.

Kā izveidot, izvietot un pārbaudīt viļņus RIDE dApp
Waves Explorer parāda lokālā mezgla gadījumu

RIDE struktūra un vējdēļa rīks

Izveidojiet tukŔu direktoriju un palaidiet tajā esoŔo komandu

surfboard init

Komanda inicializē direktoriju ar projekta struktÅ«ru, "hello world" lietojumprogrammām un testiem. Ja atverat Å”o mapi ar VS kodu, jÅ«s redzēsit:

Kā izveidot, izvietot un pārbaudīt viļņus RIDE dApp
Surfboard.config.json

  • Zem mapes ./ride/ atradÄ«sit vienu failu wallet.ride ā€” direktoriju, kurā atrodas dApp kods. Nākamajā blokā mēs Ä«si analizēsim dApps.
  • Mapē ./test/ atradÄ«sit *.js failu. Å eit tiek glabāti testi.
  • ./surfboard.config.json ā€” konfigurācijas fails testu veikÅ”anai.

Envs ir svarÄ«ga sadaļa. Katra vide ir konfigurēta Ŕādi:

  • Tā mezgla REST API galapunkts, kas tiks izmantots, lai palaistu dApp un tÄ«kla CHAIN_ID.
  • Slepena frāze kontam ar marÄ·ieriem, kas bÅ«s jÅ«su testa tokenu avoti.

Kā redzat, surfboard.config.json pēc noklusējuma atbalsta vairākas vides. Noklusējums ir lokālā vide (noklusējuma Env atslēga ir maināms parametrs).

Maka demonstrācijas programma

Šī sadaļa nav atsauce uz RIDE valodu. Drīzāk apskatiet lietojumprogrammu, kuru mēs izvietojam un pārbaudām, lai labāk saprastu, kas notiek blokķēdē.

ApskatÄ«sim vienkārÅ”u Maka demonstrācijas lietojumprogrammu. Ikviens var nosÅ«tÄ«t marÄ·ierus uz dApp adresi. JÅ«s varat izņemt tikai savus VIĻŅUS. Izmantojot InvokeScriptTransaction, ir pieejamas divas @Callable funkcijas:

  • deposit()kam nepiecieÅ”ams pievienots maksājums WAVES
  • withdraw(amount: Int)kas atgriež žetonus

Visā dApp dzÄ«ves cikla laikā tiks saglabāta struktÅ«ra (adrese ā†’ summa):

Darbība
Iegūtais stāvoklis

sākuma
tukŔs

Alise nogulda 5 VIĻŅUS
Alises adrese ā†’ 500000000

Bobs nogulda 2 VIĻŅUS

Alises adrese ā†’ 500000000
boba adrese ā†’ 200000000

Bobs izņem 7 VIĻŅUS
NOLIEGTS!

Alise izvelk 4 VIĻŅUS
Alises adrese ā†’ 100000000
boba adrese ā†’ 200000000

Šeit ir kods, lai pilnībā izprastu situāciju:

# 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

Koda paraugu var atrast arī vietnē GitHub.

VSCode spraudnis atbalsta nepārtrauktu kompilāciju faila rediģēŔanas laikā. Tāpēc vienmēr varat pārraudzÄ«t kļūdas cilnē PROBLĒMAS.

Kā izveidot, izvietot un pārbaudīt viļņus RIDE dApp
Ja, veidojot failu, vēlaties izmantot citu teksta redaktoru, izmantojiet

surfboard compile ride/wallet.ride

Tas izvadīs base64 apkopota RIDE koda sēriju.

Testa skripts ā€œwallet.rideā€

ApskatÄ«sim testa fails. Darbojas ar JavaScript Mocha ietvaru. Ir funkcija ā€œPirmsā€ un trÄ«s testi:

  • ā€œPirmsā€ iemaksā vairākus kontus, izmantojot MassTransferTransaction, apkopo skriptu un izvieto to blokķēdē.
  • ā€œVar noguldÄ«tā€ nosÅ«ta tÄ«klam InvokeScriptTransaction, aktivizējot depozÄ«ta () funkciju katram no diviem kontiem.
  • ā€œNevar izņemt vairāk, nekā tika noguldÄ«tsā€ pārbauda, ā€‹ā€‹ka neviens nevar nozagt citu cilvēku žetonus.
  • ā€œVar iemaksātā€ pārbauda, ā€‹ā€‹vai izņemÅ”ana ir pareizi apstrādāta.

Veiciet testus no Surfboard un analizējiet rezultātus programmā Waves Explorer

Lai palaistu testu, palaist

surfboard test

Ja jums ir vairāki skripti (piemēram, jums ir nepiecieÅ”ams atseviŔķs izvietoÅ”anas skripts), varat palaist

surfboard test my-scenario.js

Surfboard apkopos testa failus mapē ./test/ un palaidīs skriptu mezglā, kas ir konfigurēts failā surfboard.config.json. Pēc dažām sekundēm jūs redzēsit kaut ko līdzīgu:

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)

Urrā! PārbaudÄ«jumi nokārtoti. Tagad apskatÄ«sim, kas notiek, izmantojot Waves Explorer: apskatiet blokus vai ielÄ«mējiet kādu no iepriekÅ” minētajām adresēm meklÄ“Å”anā (piemēram, atbilstoÅ”o wallet#. Tur jÅ«s varat atrast darÄ«jumu vēsturi, dApp statusu, dekompilētu bināro failu.

Kā izveidot, izvietot un pārbaudīt viļņus RIDE dApp
Viļņu pētnieks. Lietojumprogramma, kas tikko tika izvietota.

Daži padomi par vējdēļu:

1. Lai pārbaudītu testnet vidē, izmantojiet:

surfboard test --env=testnet

Iegūstiet testa žetonus

2. Ja vēlaties skatÄ«t transakciju JSON versijas un to, kā mezgls tās apstrādā, palaidiet testu ar taustiņu -v (nozÄ«mē 'vērbozs'):

surfboard test -v

Lietotņu izmantoÅ”ana ar Waves Keeper

1. Iestatiet Waves Keeper darbam: http://localhost:6869

Kā izveidot, izvietot un pārbaudīt viļņus RIDE dApp
Waves Keeper iestatÄ«Å”ana darbam ar vietējo mezglu

2. Importēt slepeno frāzi ar marÄ·ieriem tÄ«klam? VienkārŔības labad izmantojiet sava mezgla sākotnējo sēklu: waves private node seed with waves tokens. Adrese: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Varat pats palaist bezservera vienas lapas lietojumprogrammu, izmantojot npm. Vai arī dodieties uz esoŔo: chrome-ext.wvservices.com/dapp-wallet.html

4. DApp adreses tekstlodziņā ievadiet maka adresi no testa darbÄ«bas (pasvÄ«trots iepriekÅ”).

5. Laukā ā€œDepozÄ«tsā€ ievadiet nelielu summu un noklikŔķiniet uz pogas:

Kā izveidot, izvietot un pārbaudīt viļņus RIDE dApp
Waves Keeper pieprasa atļauju parakstīt InvokeScriptTransaction, samaksājot 10 WAVES.

6. Apstipriniet darÄ«jumu:

Kā izveidot, izvietot un pārbaudīt viļņus RIDE dApp
Darījums tiek izveidots un pārraidīts tīklā. Tagad jūs varat redzēt viņas ID

7. Pārraugiet darÄ«jumu, izmantojot Waves Explorer. Ievadiet ID meklÄ“Å”anas laukā

Kā izveidot, izvietot un pārbaudīt viļņus RIDE dApp

Secinājumi un papildu informācija

Mēs apskatÄ«jām rÄ«kus vienkārÅ”u dApps izstrādei, testÄ“Å”anai, izvietoÅ”anai un izmantoÅ”anai platformā Waves:

  • RIDE valoda
  • VS koda redaktors
  • Viļņu pētnieks
  • Vējdēlis
  • Viļņu turētājs

Saites tiem, kas vēlas turpināt mācīties RIDE:

Vairāk piemēru
TieÅ”saistes IDE ar piemēriem
Viļņu dokumentācija
Izstrādātāja tērzÄ“Å”ana pakalpojumā Telegram
Waves un RIDE uz stackoverflow
JAUNUMS! TieŔsaistes kursi par dApps izveidi platformā Waves

Turpiniet iedziļināties tēmā RIDE un izveidojiet savu pirmo dApp!

TL; DR: bit.ly/2YCFnwY

Avots: www.habr.com

Pievieno komentāru