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.
ʻ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ʻī.
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:
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.
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:
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
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.
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.
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:
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.