Yadda ake Gina, Sanya da Gwajin Waves RIDE dApp

Sannu! A cikin wannan labarin zan nuna muku yadda ake rubutu da gudanar da dApp na yau da kullun akan kullin Waves. Bari mu dubi kayan aikin da ake bukata, hanyoyin da misali na ci gaba.

Yadda ake Gina, Sanya da Gwajin Waves RIDE dApp

Tsarin haɓakawa na dApps da aikace-aikacen yau da kullun kusan iri ɗaya ne:

  • Lambar rubutu
  • Rubutun gwaji ta atomatik
  • Kaddamar da aikace -aikacen
  • Gwaji

Kayan aiki

1. docker don gudanar da node da Waves Explorer

Idan ba kwa son fara kumburi, zaku iya tsallake wannan matakin. Bayan haka, akwai cibiyar sadarwa na gwaji da gwaji. Amma ba tare da ƙaddamar da kumburin ku ba, tsarin gwaji na iya ja.

  • Kuna buƙatar sabbin asusu koyaushe tare da alamun gwaji. Fautar cibiyar sadarwar gwaji tana canja wurin WAVES 10 kowane minti 10.
  • Matsakaicin lokacin toshewa a cikin hanyar sadarwar gwaji shine minti 1, a cikin kumburi - 15 seconds. Wannan abin lura ne musamman lokacin da ma'amala ke buƙatar tabbatarwa da yawa.
  • Ana iya yin caching mai ƙarfi akan nodes na gwaji na jama'a.
  • Hakanan ƙila ba su samuwa na ɗan lokaci saboda kulawa.

Daga yanzu zan ɗauka cewa kuna aiki da kullin ku.

2. Kayan Aikin Layin Layin Surfboard

  • Zazzage kuma shigar da Node.js ta amfani da ppa, homebrew ko exe anan: https://nodejs.org/en/download/.
  • Shigar da Surfboard, kayan aiki wanda ke ba ku damar gudanar da gwaje-gwaje akan kullin da ke akwai.

npm install -g @waves/surfboard

3. Visual Studio Code plugin

Wannan matakin na zaɓi ne idan ba ku da masu sha'awar IDE kuma kun fi son masu gyara rubutu. Duk kayan aikin da ake buƙata sune abubuwan amfani da layin umarni. Idan kuna amfani da vim, kula da plugin ɗin vim-ride.

Zazzage kuma shigar da Kayayyakin Kayayyakin Kayayyakin Kaya: https://code.visualstudio.com/

Bude lambar VS kuma shigar da kayan aikin waves-ride:

Yadda ake Gina, Sanya da Gwajin Waves RIDE dApp

Waves Keeper tsawo na mai bincike: https://wavesplatform.com/products-keeper

Anyi!

Kaddamar da node da Waves Explorer

1. Fara kumburi:

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

Tabbatar cewa an ƙaddamar da kumburi ta hanyar REST API a ciki http://localhost:6869:

Yadda ake Gina, Sanya da Gwajin Waves RIDE dApp
API ɗin Swagger REST don kumburi

2. Fara misalin Waves Explorer:

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

Bude mai bincike kuma je zuwa http://localhost:3000. Za ku ga yadda sauri an gina da'irar kuɗaɗen gida mara komai.

Yadda ake Gina, Sanya da Gwajin Waves RIDE dApp
Waves Explorer yana nuna misalin kumburin gida

Tsarin RIDE da kayan aikin Surfboard

Ƙirƙiri kundin shugabanci mara komai kuma gudanar da umarni a ciki

surfboard init

Umurnin yana ƙaddamar da kundin adireshi tare da tsarin aikin, aikace-aikacen "sannu duniya" da gwaje-gwaje. Idan ka bude wannan babban fayil da lambar VS, za ka ga:

Yadda ake Gina, Sanya da Gwajin Waves RIDE dApp
Surfboard.config.json

  • A ƙarƙashin ./ride/ babban fayil za ku sami fayil guda ɗaya wallet.ride - directory inda code dApp yake. Za mu ɗan bincika dApps a cikin toshe na gaba.
  • A ƙarƙashin ./test/ babban fayil za ku sami fayil * .js. Ana adana gwaje-gwaje anan.
  • ./surfboard.config.json – fayil ɗin sanyi don gudanar da gwaje-gwaje.

Envs yanki ne mai mahimmanci. An tsara kowane yanayi kamar haka:

  • REST API na ƙarshen kumburin da za a yi amfani da shi don ƙaddamar da dApp da CHAIN_ID na hanyar sadarwa.
  • Kalmomin sirri don asusu tare da alamun da zasu zama tushen alamun gwajin ku.

Kamar yadda kake gani, surfboard.config.json yana goyan bayan mahalli da yawa ta tsohuwa. Tsohuwar ita ce muhallin gida (maɓallin tsohoEnv shine siga mai canzawa).

Aikace-aikacen walat-demo

Wannan sashe ba magana ce ga harshen RIDE ba. Maimakon haka, duba aikace-aikacen da muke turawa da gwadawa don ƙarin fahimtar abin da ke faruwa a cikin blockchain.

Mu kalli aikace-aikacen demo mai sauƙi na Wallet-demo. Kowa na iya aika alamu zuwa adireshin dApp. Zaku iya janye GUWAN naku kawai. Ana samun ayyuka @Callable guda biyu ta InvokeScriptTransaction:

  • deposit()wanda ke buƙatar biyan haɗe-haɗe a WAVES
  • withdraw(amount: Int)wanda ke mayar da alamomi

Duk tsawon rayuwar dApp, tsarin (adireshin → adadin) za a kiyaye shi:

Action
Sakamakon jihar

farko
komai

Alice ta ajiye 5 WAVES
Alice-adireshin → 500000000

Bob ajiya 2 WAVES

Alice-adireshin → 500000000
bob-address → 200000000

Bob ya janye 7 WAVES
AN KARYA!

Alice ta janye WAVES 4
Alice-adireshin → 100000000
bob-address → 200000000

Ga lambar don cikakken fahimtar halin da ake ciki:

# 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

Hakanan ana iya samun lambar samfurin a GitHub.

VSCode plugin yana tallafawa ci gaba da haɗawa yayin gyara fayil. Don haka, koyaushe kuna iya sa ido kan kurakurai a cikin MATSALOLIN.

Yadda ake Gina, Sanya da Gwajin Waves RIDE dApp
Idan kana son amfani da wani editan rubutu na daban lokacin tattara fayil ɗin, yi amfani da

surfboard compile ride/wallet.ride

Wannan zai fitar da jerin lambar tushe64 da aka harhada RIDE.

Rubutun gwaji don 'wallet.ride'

Mu duba gwajin fayil. Ƙaddamar da tsarin Mocha na JavaScript. Akwai aikin "Kafin" da gwaje-gwaje uku:

  • “Kafin” yana ba da asusu da yawa ta hanyar MassTransferTransaction, yana tattara rubutun kuma a tura shi zuwa blockchain.
  • "Za a iya ajiya" yana aika InvokeScriptTransaction zuwa cibiyar sadarwar, yana kunna aikin ajiya () ga kowane asusun biyu.
  • "Ba za a iya janye fiye da abin da aka ajiye" gwaje-gwajen da babu wanda zai iya satar sauran mutane ta token.
  • "Za a iya ajiyewa" cak cewa an sarrafa kuɗin da aka cire daidai.

Gudanar da gwaje-gwaje daga Surfboard kuma bincika sakamakon a cikin Waves Explorer

Don gudanar da gwajin, gudu

surfboard test

Idan kuna da rubutun da yawa (misali, kuna buƙatar rubutun turawa daban), kuna iya gudu

surfboard test my-scenario.js

Surfboard zai tattara fayilolin gwaji a cikin babban fayil ɗin ./test/ kuma ya gudanar da rubutun akan kumburin da aka saita a surfboard.config.json. Bayan 'yan dakiku za ku ga wani abu kamar haka:

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)

Hooray! Gwaje-gwaje sun wuce. Yanzu bari mu kalli abin da ke faruwa yayin amfani da Waves Explorer: duba tubalan ko liƙa ɗaya daga cikin adiresoshin da ke sama a cikin binciken (misali, masu dacewa). wallet#. A can za ku iya nemo tarihin ma'amala, matsayin dApp, fayil ɗin binary da ba a gama ba.

Yadda ake Gina, Sanya da Gwajin Waves RIDE dApp
Waves Explorer. Aikace-aikacen da aka tura kwanan nan.

Wasu Nasihu na Surfboard:

1. Don gwadawa a cikin mahallin testnet, yi amfani da:

surfboard test --env=testnet

Samu alamun gwaji

2. Idan kana son ganin nau'ikan ma'amala na JSON da yadda ake sarrafa su ta hanyar kumburi, gudanar da gwajin tare da -v (yana nufin 'verbose'):

surfboard test -v

Amfani da apps tare da Waves Keeper

1. Saita Waves Keeper don aiki: http://localhost:6869

Yadda ake Gina, Sanya da Gwajin Waves RIDE dApp
Saita Waves Keeper don aiki tare da kumburin gida

2. Shigo da kalmar sirri tare da alamu don hanyar sadarwa? Don sauƙi, yi amfani da iri na farko na kumburin ku: waves private node seed with waves tokens. Adireshi: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Kuna iya gudanar da aikace-aikacen shafi ɗaya mara sabar da kanku ta amfani da npm. Ko kuma je zuwa ga wanda yake: chrome-ext.wvservices.com/dapp-wallet.html

4. Shigar da adireshin walat daga gwajin gwajin (wanda aka lakafta a sama) cikin akwatin rubutu na dApp

5. Shigar da ƙaramin kuɗi a cikin filin "Deposit" kuma danna maɓallin:

Yadda ake Gina, Sanya da Gwajin Waves RIDE dApp
Waves Keeper ya nemi izini don shiga InvokeScriptTransaction tare da biyan WAVES 10.

6. Tabbatar da ciniki:

Yadda ake Gina, Sanya da Gwajin Waves RIDE dApp
An ƙirƙira ma'amala da watsawa zuwa cibiyar sadarwa. Yanzu kuna iya ganin ID dinta

7. Kula da ma'amala ta amfani da Waves Explorer. Shigar da ID a cikin filin bincike

Yadda ake Gina, Sanya da Gwajin Waves RIDE dApp

Ƙarshe da ƙarin bayani

Mun kalli kayan aikin don haɓakawa, gwaji, turawa da amfani da sauƙi dApps akan Platform Waves:

  • Harshen YIN HAUWA
  • VS Code Editan
  • Waves Explorer
  • Jirgin ruwa
  • Waves Keeper

Hanyoyin haɗi ga waɗanda suke son ci gaba da koyon RIDE:

Karin misalai
IDE na kan layi tare da misalai
Takardun Waves
Taɗi mai haɓakawa a cikin Telegram
Raƙuman ruwa da RIDE akan magudanar ruwa
SABO! Darussan kan layi akan ƙirƙirar dApps akan Platform Waves

Ci gaba da nutsewa cikin batun RIDE kuma ƙirƙirar dApp na farko!

TL, DR: bit.ly/2YCFnwY

source: www.habr.com

Add a comment