Pehea e kūkulu ai, hoʻonohonoho a hoʻāʻo i nā hawewe RIDE dApp

Aloha! Ma kēia ʻatikala e hōʻike wau iā ʻoe pehea e kākau ai a holo i kahi dApp maʻamau ma kahi node Waves. E nānā kākou i nā mea hana pono, nā ʻano hana a me kahi laʻana o ka hoʻomohala ʻana.

Pehea e kūkulu ai, hoʻonohonoho a hoʻāʻo i nā hawewe RIDE dApp

ʻO ka papahana hoʻomohala no nā dApps a me nā noi maʻamau ua aneane like:

  • Kākau helu
  • Ke kākau ʻana i ka hoʻāʻo ʻakomi
  • Ke hoʻouka nei i ka noi
  • Hoʻāʻo

Nā Mea Hana

1. docker e holo i ka node a me Waves Explorer

Inā ʻaʻole ʻoe makemake e hoʻomaka i kahi node, hiki iā ʻoe ke lele i kēia kaʻina. Ma hope o nā mea a pau, aia kahi pūnaewele ho'āʻo a hoʻokolohua. Akā me ka ʻole o ka hoʻohana ʻana i kāu node ponoʻī, hiki ke hoʻomau i ke kaʻina hoʻāʻo.

  • Pono mau ʻoe i nā moʻokāki hou me nā hōʻailona hoʻāʻo. Hoʻololi ka hoʻāʻo ʻana o ka ʻoihana pūnaewele i 10 WAVES i kēlā me kēia 10 mau minuke.
  • ʻO ka awelika manawa poloka ma ka pūnaewele hoʻāʻo he 1 minuke, ma ka node - 15 kekona. ʻIke nui ʻia kēia i ka wā e koi ai ke kālepa i nā hōʻoia he nui.
  • Hiki ke ho'opa'a 'ia ma nā node ho'ā'o lehulehu.
  • Loaʻa ʻole paha lākou no kekahi manawa ma muli o ka mālama ʻana.

Mai kēia manawa e manaʻo wau e hana ana ʻoe me kāu node ponoʻī.

2. Mea Paahana Papa Heenalu

  • Hoʻoiho a hoʻouka iā Node.js me ka hoʻohana ʻana i ka ppa, homebrew a i ʻole exe ma aneʻi: https://nodejs.org/en/download/.
  • E hoʻouka i ka Surfboard, kahi mea hana e hiki ai iā ʻoe ke holo i nā hoʻokolohua ma kahi node e kū nei.

npm install -g @waves/surfboard

3. Pākuʻi Visual Studio Code

He koho kēia ʻanuʻu inā ʻaʻole ʻoe he punahele o IDE a makemake i nā mea hoʻoponopono kikokikona. ʻO nā mea hana pono a pau he mau laina kauoha. Inā ʻoe e hoʻohana i ka vim, e hoʻolohe i ka plugin vim-holo.

Hoʻoiho a hoʻokomo i ka Visual Studio Code: https://code.visualstudio.com/

E wehe i ka VS Code a hoʻokomo i ka plugin waves-ride:

Pehea e kūkulu ai, hoʻonohonoho a hoʻāʻo i nā hawewe RIDE dApp

ʻO ka hoʻonui pūnaewele Waves Keeper: https://wavesplatform.com/products-keeper

Hanaʻia!

E hoʻomaka i ka node a me Waves Explorer

1. E hoʻomaka i ka node:

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

E hōʻoia i ka hoʻomaka ʻana o ka node ma o ka REST API ma http://localhost:6869:

Pehea e kūkulu ai, hoʻonohonoho a hoʻāʻo i nā hawewe RIDE dApp
Swagger REST API no ka node

2. E hoʻomaka i kahi laʻana o Waves Explorer:

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

E wehe i kahi polokalamu kele a hele i http://localhost:3000. E ʻike ʻoe i ka wikiwiki o ke kūkulu ʻia ʻana o kahi kaapuni node kūloko.

Pehea e kūkulu ai, hoʻonohonoho a hoʻāʻo i nā hawewe RIDE dApp
Hōʻike ʻo Waves Explorer i kahi laʻana node kūloko

Hoʻolālā RIDE a me ka mea hana papa heʻe nalu

E hana i kahi papa kuhikuhi hakahaka a holo i ke kauoha i loko

surfboard init

Hoʻomaka ke kauoha i kahi papa kuhikuhi me ka hoʻolālā papahana, nā noi a me nā hoʻāʻo "hello world". Inā wehe ʻoe i kēia waihona me VS Code, e ʻike ʻoe:

Pehea e kūkulu ai, hoʻonohonoho a hoʻāʻo i nā hawewe RIDE dApp
Surfboard.config.json

  • Ma lalo o ka waihona ./ride/ e ʻike ʻoe i kahi faila wallet.ride - ka papa kuhikuhi kahi i loaʻa ai ka code dApp. E nānā pōkole mākou i nā dApps i ka poloka aʻe.
  • Ma lalo o ka waihona ./test/ e ʻike ʻoe i kahi faila *.js. Mālama ʻia nā hoʻāʻo ma ʻaneʻi.
  • ./surfboard.config.json – faila hoʻonohonoho no ka holo ʻana i nā hoʻokolohua.

He ʻāpana koʻikoʻi ʻo Envs. Hoʻonohonoho ʻia kēlā me kēia kaiapuni e like me kēia:

  • REST API hope o ka node e hoʻohana ʻia e hoʻomaka i ka dApp a me CHAIN_ID o ka pūnaewele.
  • ʻO kahi ʻōlelo huna no kahi moʻokāki me nā hōʻailona e lilo i kumu o kāu mau hōʻailona hōʻike.

E like me kāu e ʻike ai, kākoʻo ʻo surfboard.config.json i nā kaiapuni he nui. ʻO ka paʻamau ka kaiapuni kūloko (ʻo ke kī defaultEnv kahi hoʻololi hoʻololi).

Palapala hoʻopalekana-demo

ʻAʻole kēia ʻāpana i ka ʻōlelo RIDE. Akā, e nānā i ka noi a mākou e kau ai a hoʻāʻo e hoʻomaopopo maikaʻi i ka mea e hana nei i ka blockchain.

E nānā kākou i kahi noi Wallet-demo maʻalahi. Hiki i kekahi ke hoʻouna i nā hōʻailona i kahi helu dApp. Hiki iā ʻoe ke unuhi wale i kāu WAVES. Loaʻa nā hana ʻelua @Callable ma o InvokeScriptTransaction:

  • deposit()e koi ana i ka uku pili ma WAVES
  • withdraw(amount: Int)e hoihoi ana i na hoailona

Ma ke ola holoʻokoʻa o dApp, e mālama ʻia ke ʻano (ka helu helu → ka nui):

hana
Mokuaina hopena

loiloi mua
nele

Waiho mai o Alice i 5 NA WAVE
alice-address → 500000000

Waiho ʻo Bob i 2 WAVE

alice-address → 500000000
bob-address → 200000000

Hoʻihoʻi ʻo Bob i 7 WAVE
HOOLE!

Hoʻihoʻi ʻo Alice i 4 WAVE
alice-address → 100000000
bob-address → 200000000

Eia ke code e hoʻomaopopo pono i ke kūlana:

# 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

Hiki ke loaʻa ke code laʻana ma GitHub.

Kākoʻo ka VSCode plugin i ka hoʻopili mau ʻana i ka wā e hoʻoponopono ai i kahi faila. No laila, hiki iā ʻoe ke nānā mau i nā hewa ma ka pā PROBLEMS.

Pehea e kūkulu ai, hoʻonohonoho a hoʻāʻo i nā hawewe RIDE dApp
Inā makemake ʻoe e hoʻohana i kahi hoʻoponopono kikokikona ʻē aʻe i ka wā e hōʻuluʻulu ai i ka faila, e hoʻohana

surfboard compile ride/wallet.ride

E hoʻopuka kēia i kahi pūʻulu o base64 i hōʻuluʻulu ʻia RIDE code.

Hōʻoia i ka palapala no 'wallet.ride'

E nana kakou waihona hoʻāʻo. Hoʻohana ʻia e kā JavaScript's Mocha framework. Aia kahi hana "Ma mua" a ʻekolu mau ho'āʻo:

  • "Ma mua" e hoʻolilo i nā moʻolelo he nui ma o MassTransferTransaction, e hōʻuluʻulu i ka palapala a kau i ka blockchain.
  • "Hiki ke waiho" e hoʻouna i kahi InvokeScriptTransaction i ka pūnaewele, e hoʻāla ana i ka waihona () hana no kēlā me kēia o nā moʻolelo ʻelua.
  • "ʻAʻole hiki ke hoʻihoʻi hou aku ma mua o ka waiho ʻia" ʻaʻole hiki i kekahi ke ʻaihue i nā hōʻailona o nā poʻe ʻē aʻe.
  • "Hiki ke waiho" i nā hōʻoia e hana pololei ʻia nā withdrawals.

Holo i nā hoʻāʻo mai ka Surfboard a hoʻopaʻa i nā hopena ma Waves Explorer

To run the test, run

surfboard test

Inā loaʻa iā ʻoe nā palapala he nui (no ka laʻana, pono ʻoe i kahi palapala hoʻoili ʻokoʻa), hiki iā ʻoe ke holo

surfboard test my-scenario.js

E hōʻiliʻili ka papa heʻe nalu i nā faila hoʻāʻo ma ka waihona ./test/ a holo i ka palapala ma ka node i hoʻonohonoho ʻia ma surfboard.config.json. Ma hope o kekahi mau kekona e ʻike ʻoe i kahi mea penei:

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! Ua hala nā ho'āʻo. I kēia manawa, e nānā kāua i ka mea e hoʻohana ai i ka Waves Explorer: e nānā i nā poloka a i ʻole e hoʻopili i kekahi o nā ʻōlelo ma luna i ka ʻimi (no ka laʻana, ka mea pili. wallet#. Ma laila ʻoe e ʻike ai i ka mōʻaukala kālepa, ke kūlana dApp, decompiled binary file.

Pehea e kūkulu ai, hoʻonohonoho a hoʻāʻo i nā hawewe RIDE dApp
Waves Explorer. He palapala noi i kau ʻia.

ʻO kekahi mau ʻōlelo aʻoaʻo papa heʻe nalu:

1. No ka hoʻāʻo ʻana i ka puni testnet, e hoʻohana:

surfboard test --env=testnet

E kiʻi i nā hōʻailona hoʻāʻo

2. Inā makemake ʻoe e ʻike i nā mana JSON o nā kālepa a pehea e hana ʻia ai e ka node, e holo i ka hoʻāʻo me -v (ʻo ia hoʻi 'verbose'):

surfboard test -v

Ke hoʻohana nei i nā polokalamu me Waves Keeper

1. Hoʻonohonoho i ka Waves Keeper e hana: http://localhost:6869

Pehea e kūkulu ai, hoʻonohonoho a hoʻāʻo i nā hawewe RIDE dApp
Hoʻonohonoho i ka Waves Keeper e hana me kahi node kūloko

2. Hoʻokomo i ka ʻōlelo huna me nā hōʻailona no ka pūnaewele? No ka maʻalahi, e hoʻohana i ka hua mua o kāu node: waves private node seed with waves tokens. Helu helu: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Hiki iā ʻoe ke holo i kahi palapala ʻaoʻao ʻaoʻao ʻole me ka hoʻohana ʻana i ka npm. A i ʻole e hele i ka mea i loaʻa: chrome-ext.wvservices.com/dapp-wallet.html

4. E hoʻokomo i ka helu ʻeke kālā mai ka hoʻāʻo ʻana (i kaha ʻia ma luna) i loko o ka pahu kikokikona dApp address

5. E hoʻokomo i kahi kālā liʻiliʻi ma ke kahua "Deposit" a kaomi i ke pihi:

Pehea e kūkulu ai, hoʻonohonoho a hoʻāʻo i nā hawewe RIDE dApp
Noi ʻo Waves Keeper i ka ʻae e kau inoa i kahi InvokeScriptTransaction me ka uku o 10 WAVES.

6. E hōʻoia i ke kālepa:

Pehea e kūkulu ai, hoʻonohonoho a hoʻāʻo i nā hawewe RIDE dApp
Hana ʻia ke kālepa a hoʻolaha ʻia i ka pūnaewele. I kēia manawa hiki iā ʻoe ke ʻike i kāna ID

7. E nānā i ke kālepa me ka Waves Explorer. E hookomo i ka ID ma ke kahua huli

Pehea e kūkulu ai, hoʻonohonoho a hoʻāʻo i nā hawewe RIDE dApp

Nā hopena a me nā ʻike hou aku

Ua nānā mākou i nā mea hana no ka hoʻomohala ʻana, ka hoʻāʻo ʻana, ka lawe ʻana a me ka hoʻohana ʻana i nā dApps maʻalahi ma ka Waves Platform:

  • ʻōlelo RIDE
  • VS Code Lunahooponopono
  • Waves Explorer
  • Papa heʻe nalu
  • Kahu Nalu

Nā loulou no ka poʻe makemake e hoʻomau i ke aʻo ʻana i ka RIDE:

Nā laʻana hou aʻe
IDE pūnaewele me nā laʻana
Palapala Nalu
Kūkākūkā mea hoʻomohala ma Telegram
Nā nalu a me ka RIDE ma ka stackoverflow
HOU! Nā papa pūnaewele ma ka hana ʻana i nā dApps ma ka Waves Platform

E hoʻomau i ka luʻu ʻana i ke kumuhana RIDE a hana i kāu dApp mua!

Aku; DR: bit.ly/2YCFnwY

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka