Otu esi ewulite, nyefee ma nwalee Waves RIDE dApp

Nnọọ! N'isiokwu a, m ga-egosi gị otu esi ede ma na-agba ọsọ dApp mgbe niile na ọnụ mmiri Waves. Ka anyị lelee ngwaọrụ ndị dị mkpa, ụzọ na ihe atụ nke mmepe.

Otu esi ewulite, nyefee ma nwalee Waves RIDE dApp

Atụmatụ mmepe maka dApps na ngwa oge niile fọrọ nke nta ka ọ bụrụ otu:

  • Koodu ederede
  • Na-ede ule akpaghị aka
  • Ịmalite ngwa ahụ
  • Nnwale

Ngwaọrụ

1. docker na-agba ọsọ node na Waves Explorer

Ọ bụrụ na ịchọghị ịmalite ọnụ ụzọ, ị nwere ike ịgafe nzọụkwụ a. E kwuwerị, enwere ule na netwọk nnwale. Mana na-etinyeghị ọnụ nke aka gị, usoro nnwale ahụ nwere ike na-aga n'ihu.

  • Ị ga-achọ akaụntụ ọhụrụ mgbe niile nwere akara ule. Igwe mmiri netwọkụ nnwale na-ebufe WAVES 10 kwa nkeji iri ọ bụla.
  • Ogologo oge nkwụsị na netwọk ule bụ 1 nkeji, na ọnụ - 15 sekọnd. Nke a na-apụta ìhè karịsịa mgbe azụmahịa chọrọ ọtụtụ nkwenye.
  • Enwere ike idobe ihe ike na ọnụ ule ọha.
  • Ha nwekwara ike ghara ịdị nwa oge n'ihi mmezi.

Site ugbu a gaa n'ihu, m ga-eche na ị na-arụ ọrụ na ọnụ nke gị.

2. Ngwá ọrụ Line Command Surfboard

  • Budata ma wụnye Node.js site na iji ppa, homebrew ma ọ bụ exe ebe a: https://nodejs.org/en/download/.
  • Wụnye Surfboard, ngwá ọrụ na-enye gị ohere ịme ule na ọnụ dị adị.

npm install -g @waves/surfboard

3. Ihe mgbakwunye Visual Studio Code

Nzọụkwụ a bụ nhọrọ ma ọ bụrụ na ị bụghị onye na-akwado IDE ma na-ahọrọ ndị ndezi ederede. Ngwa niile dị mkpa bụ ngwa ahịrị iwu. Ọ bụrụ na ị na-eji vim, ṅaa ntị na ngwa mgbakwunye vim-anya.

Budata ma wụnye Code Visual Studio: https://code.visualstudio.com/

Mepee koodu VS ma wụnye ngwa mgbakwunye waves-ride:

Otu esi ewulite, nyefee ma nwalee Waves RIDE dApp

Mgbatị ihe nchọgharị Waves Keeper: https://wavesplatform.com/products-keeper

Emela!

Mepee node na Waves Explorer

1. Malite ọnụ:

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

Gbaa mbọ hụ na ewepụtara ọnụ ọnụ site na REST API in http://localhost:6869:

Otu esi ewulite, nyefee ma nwalee Waves RIDE dApp
Swagger REST API maka ọnụ

2. Malite ihe atụ nke Waves Explorer:

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

Mepee ihe nchọgharị wee gaa na http://localhost:3000. Ị ga-ahụ ka esi wuo sekit ọnụ ọnụ obodo efu.

Otu esi ewulite, nyefee ma nwalee Waves RIDE dApp
Waves Explorer na-egosiputa ihe atụ ọnụ mpaghara

Nhazi RIDE na ngwa sọfụfụ

Mepụta ndekọ efu wee mee iwu n'ime ya

surfboard init

Iwu ahụ na-ebunye ndekọ aha ya na usoro oru ngo, ngwa "hello ụwa" na ule. Ọ bụrụ na imepe folda a na koodu VS, ị ga-ahụ:

Otu esi ewulite, nyefee ma nwalee Waves RIDE dApp
Surfboard.config.json

  • N'okpuru ./ride/ nchekwa ị ga-ahụ otu faịlụ wallet.ride - ndekọ ebe koodu dApp dị. Anyị ga-enyocha nkenke dApps na ngọngọ na-esote.
  • N'okpuru ./test/ nchekwa ị ga-ahụ faịlụ * .js. A na-echekwa ule ebe a.
  • ./surfboard.config.json – faịlụ nhazi maka ule na-agba ọsọ.

Envs bụ akụkụ dị mkpa. A haziri gburugburu ọ bụla dịka nke a:

  • REST API njedebe nke ọnụ nke a ga-eji malite dApp na CHAIN_ID nke netwọk.
  • Akpaokwu nzuzo maka akaụntụ nwere akara ga-abụ isi mmalite nke akara ule gị.

Dịka ị na-ahụ, surfboard.config.json na-akwado ọtụtụ gburugburu na ndabara. Ihe ndabara bụ gburugburu mpaghara (igodoEnv nke ndabara bụ oke mgbanwe).

Ngwa obere akpa-demo

Akụkụ a abụghị ntụaka maka asụsụ RIDE. Kama, lelee ngwa anyị na-ebuga wee nwalee ka ọ ghọta nke ọma ihe na-eme na blockchain.

Ka anyị leba anya na ngwa Wallet-demo dị mfe. Onye ọ bụla nwere ike izipu token na adreesị dApp. Ị nwere ike iwepụ ebili mmiri gị. Ọrụ @Callable abụọ dị site na InvokeScriptTransaction:

  • deposit()nke chọrọ nkwụnye ego agbakwunyere na WAVES
  • withdraw(amount: Int)nke na-alaghachi token

N'ime okirikiri ndụ dApp, a ga-edobe ihe owuwu ahụ (adreesị → ego):

Action
Ọnọdụ pụta

mbụ
efu

Alice na-edebe 5 WAVES
Alice-adreesị → 500000000

Bob na-etinye ego 2 WAVES

Alice-adreesị → 500000000
bob-adreesị → 200000000

Bob wepụrụ ebili mmiri 7
Gọọrọ agọ!

Alice wepụrụ 4 WAVES
Alice-adreesị → 100000000
bob-adreesị → 200000000

Nke a bụ koodu iji ghọta ọnọdụ ahụ nke ọma:

# 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

Enwere ike ịhụ koodu nlele na GitHub.

Ihe mgbakwunye VSCode na-akwado mkpokọta na-aga n'ihu ka ị na-edezi faịlụ. Ya mere, ị nwere ike nyochaa njehie mgbe niile na taabụ PROBLEMS.

Otu esi ewulite, nyefee ma nwalee Waves RIDE dApp
Ọ bụrụ na ịchọrọ iji editọ ederede dị iche mgbe ị na-achịkọta faịlụ, jiri

surfboard compile ride/wallet.ride

Nke a ga-ewepụta usoro koodu RIDE chịkọtara base64.

Nnwale edemede maka 'wallet.ride'

Ka anyị lee anya ule faịlụ. Kwadoro site na Javascript's Mocha framework. Enwere ọrụ "Tupu" yana ule atọ:

  • "Tupu" na-enweta ego ọtụtụ akaụntụ site na MassTransferTransaction, na-achịkọta edemede ahụ ma tinye ya na blockchain.
  • "Enwere ike itinye ego" na-eziga InvokeScriptTransaction na netwọk, na-arụ ọrụ nkwụnye ego () maka akaụntụ abụọ ahụ.
  • "Enweghị ike ịwepụ karịa ka echekwara" ule na ọ dịghị onye nwere ike izuru akara ndị ọzọ.
  • "Enwere ike itinye ego" ndenye ego na-edozi nke ọma.

Gbaa ule site na sọọfụ wee nyochaa nsonaazụ na Waves Explorer

Iji gbaa ule, gbaa ọsọ

surfboard test

Ọ bụrụ na ị nwere ọtụtụ scripts (dịka ọmụmaatụ, ịchọrọ script nsonye dị iche), ị nwere ike ịgba ọsọ

surfboard test my-scenario.js

Ụgbọ mmiri ga-anakọta faịlụ ule na nchekwa ./test/ ma mee edemede ahụ na ọnụ nke ahaziri na surfboard.config.json. Mgbe sekọnd ole na ole gachara, ị ga-ahụ ihe dịka nke a:

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ụ! Ule gafere. Ugbu a, ka anyị leba anya n'ihe na-eme mgbe ị na-eji Waves Explorer: lelee blocks ma ọ bụ mado otu n'ime adreesị dị n'elu n'ime ọchụchọ ahụ (dịka ọmụmaatụ, nke kwekọrọ. wallet#. N'ebe ahụ ị nwere ike ịhụ akụkọ ihe mere eme azụmahịa, ọnọdụ dApp, faịlụ ọnụọgụ abụọ ekpokọtara.

Otu esi ewulite, nyefee ma nwalee Waves RIDE dApp
Waves Explorer. Ngwa etinyegoro ugbu a.

Ụfọdụ ndụmọdụ sọfụfụ:

1. Iji nwalee na gburugburu testnet, jiri:

surfboard test --env=testnet

Nweta akara ule

2. Ọ bụrụ na ịchọrọ ịhụ ụdị azụmahịa JSON na otu esi ahazi ya site na ọnụ ọnụ, mee ule ahụ na -v (pụtara 'verbose'):

surfboard test -v

Iji ngwa nwere Waves Keeper

1. Hazie Waves Keeper ka ọ rụọ ọrụ: http://localhost:6869

Otu esi ewulite, nyefee ma nwalee Waves RIDE dApp
Ịtọlite ​​​​Waves Keeper ka ọ rụọ ọrụ na ọnụ ọnụ mpaghara

2. Bubata akpaokwu nzuzo nwere akara maka netwọkụ? Maka mfe, jiri mkpụrụ mbụ nke ọnụ gị: waves private node seed with waves tokens. adreesị: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Ị nwere ike iji npm rụọ otu ngwa na-enweghị ihe nkesa n'onwe gị. Ma ọ bụ gaa na nke dị: chrome-ext.wvservices.com/dapp-wallet.html

4. Tinye adreesị obere akpa site na ọsọ ule (nke edobere n'elu) n'ime igbe ederede dApp

5. Tinye obere ego na mpaghara "Nkwụnye ego" wee pịa bọtịnụ:

Otu esi ewulite, nyefee ma nwalee Waves RIDE dApp
Waves Keeper na-arịọ ikike ịbanye InvokeScriptTransaction na ịkwụ ụgwọ WAVES 10.

6. Kwanyere azụmahịa ahụ:

Otu esi ewulite, nyefee ma nwalee Waves RIDE dApp
A na-emepụta azụmahịa ma gbasaa na netwọk. Ugbu a ị nwere ike ịhụ ID ya

7. Nyochaa azụmahịa ahụ site na iji Waves Explorer. Tinye ID n'ọhịa ọchụchọ

Otu esi ewulite, nyefee ma nwalee Waves RIDE dApp

Mkpebi na ozi ndị ọzọ

Anyị lere anya ngwaọrụ maka ịmepụta, ịnwale, ibunye na iji dApps dị mfe na Waves Platform:

  • Asụsụ ịgba ịnyịnya
  • VS Code Editor
  • Waves Explorer
  • Sọọbụ
  • Onye na-edebe Waves

Njikọ maka ndị chọrọ ịga n'ihu na-amụ RIDE:

Ihe atụ ndị ọzọ
IDE dị n'ịntanetị nwere ọmụmaatụ
Akwụkwọ ebili mmiri
Mkparịta ụka onye nrụpụta na Telegram
Ebili mmiri na RIDE na oke oke mmiri
ỌHỤRỤ! Ọmụmụ ihe n'ịntanetị na ịmepụta dApps na Platform Waves

Gaa n'ihu ịbanye n'ime isiokwu RIDE wee mepụta dApp mbụ gị!

TL; DR: bit.ly/2YCFnwY

isi: www.habr.com

Tinye a comment