Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp
Kia ora! I roto i tenei tuhinga ka whakaatu ahau ki a koe me pehea te tuhi me te whakahaere i tetahi dApp auau i runga i te Waves node. Me titiro ki nga taputapu e tika ana, nga tikanga me tetahi tauira o te whanaketanga.
He rite tonu te kaupapa whanaketanga mo nga dApps me nga tono auau:
Waehere tuhi
Te tuhi whakamatautau aunoa
Te whakarewa i te tono
Whakamatau
Utauta
1. docker hei whakahaere i te node me te Waves Explorer
Ki te kore koe e pirangi ki te timata i te node, ka taea e koe te peke i tenei taahiraa. I muri i nga mea katoa, he whakamatautau me te whatunga whakamatautau. Engari me te kore e tuku i a koe ake node, ka toia pea te tukanga whakamatautau.
Ka hiahia koe ki nga kaute hou me nga tohu whakamatautau. Ka whakawhitihia e te korere whatunga whakamatautau 10 NGA NGARU ia 10 meneti.
Ko te wa poraka toharite i roto i te whatunga whakamatautau he 1 meneti, i roto i te node - 15 hēkona. Ka tino kitea tenei ina he maha nga whakapumautanga o te tauwhitinga.
Ka taea te keteroki pukuriri i runga i nga waahanga whakamatautau a te iwi.
Karekau pea i te waatea mo te wa poto na te tiaki.
Mai i tenei wa ka whakaaro ahau kei te mahi koe me to ake node.
Tāutahia te Papa Ngarue, he taputapu e taea ai e koe te whakahaere i nga whakamatautau ki runga i tetahi node o naianei.
npm install -g @waves/surfboard
3. Visual Studio Waehere mono mono
Ko tenei taahiraa he mea kowhiri mena kaore koe i te powhiriwhiri ki nga IDE me te pai ki nga kaiwhakatika tuhinga. Ko nga taputapu e tika ana ko nga taputapu raina whakahau. Mena ka whakamahi koe i te vim, whakarongo ki te mono vim-ride.
Tikiake me te tāuta Visual Studio Code: https://code.visualstudio.com/
Whakatuwherahia te Waehere VS me te whakauru i te mono-rere:
docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer
Whakatuwheratia he kaitirotiro ka haere ki http://localhost:3000. Ka kite koe i te tere o te hanga i tetahi ara iahiko node paetata.
Ka whakaatu a Waves Explorer i tetahi tauira node paetata
Hanganga RIDE me te taputapu papa ngaru
Waihangahia he whaiaronga kau ka whakahaere i te whakahau ki roto
surfboard init
Ka arawhiti te whakahau i te raarangi me te hanganga kaupapa, nga tono me nga whakamatautau "kia ora te ao". Mena ka whakatuwhera koe i tenei kōpaki me te VS Code, ka kite koe:
Surfboard.config.json
I raro i te kōpaki ./ride/ ka kitea e koe he putea putea kotahi.ride - te whaiaronga kei reira te waehere dApp. Ka tātari poto matou i nga dApps i te poraka e whai ake nei.
I raro i te kōpaki ./test/ ka kitea he *.js kōnae. Ka penapenahia nga whakamatautau ki konei.
./surfboard.config.json – konae whirihoranga mo nga whakamatautau whakahaere.
Ko Envs tetahi waahanga nui. Kua whirihorahia ia taiao penei:
REST API mutunga o te node ka whakamahia hei whakarewa i te dApp me CHAIN_ID o te whatunga.
He kupu huna mo te kaute me nga tohu ka waiho hei puna mo o tohu whakamatautau.
Ka kite koe, ka tautokohia e surfboard.config.json nga taiao maha ma te taunoa. Ko te taunoa ko te taiao-a-rohe (ko te taviri defaultEnv he tawhā huri).
Tono putea-demo
Ehara tenei wahanga i te korero mo te reo RIDE. Engari, titiro ki te tono ka tukuna e matou ka whakamatautau kia pai ake ai te mohio ki nga mea e tupu ana i roto i te poraka.
Kia titiro tatou ki tetahi tono Pukoro-demo ngawari. Ka taea e te tangata te tuku tohu ki tetahi wahitau dApp. Ka taea e koe te tango i to WAVES anake. E rua nga mahi @Callable e waatea ana ma te InvokeScriptTransaction:
deposit()me whai utu taapiri i WAVES
withdraw(amount: Int)e whakahoki mai ana i nga tohu
Puta noa i te huringa ora o dApp, ka mau tonu te hanganga (whitau → moni):
Mahi
Te ahua hua
tuatahi
kore
E 5 nga ngaru ka tukuna e Alice
wāhitau alice → 500000000
E rua nga ngaru ka tukuna e Bob
wāhitau alice → 500000000
bob-address → 200000000
Ka tangohia e Bob nga ngaru e 7
KAUPAPA!
Ka tangohia e Alice nga ngaru e 4
wāhitau alice → 100000000
bob-address → 200000000
Anei te waehere kia tino mohio ki te ahuatanga:
# 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
Ko te mono VSCode e tautoko ana i te whakahiato tonu i te wa e whakatika ana i tetahi konae. Na reira, ka taea e koe te aro turuki i nga hapa i te ripa PROBLEMS.
Ki te hiahia koe ki te whakamahi i tetahi ētita kuputuhi rereke i te wa e whakahiato ana i te konae, whakamahia
surfboard compile ride/wallet.ride
Ma tenei ka whakaputa i te raupapa o te waehere RIDE kua whakahiatohia e base64.
Whakamātautau hōtuhi mō 'wallet.ride'
Kia titiro tatou ki kōnae whakamātautau. Whakamanahia e te anga Mocha a JavaScript. He mahi "I mua" me nga whakamatautau e toru:
"I mua" ka putea nga kaute maha ma te MassTransferTransaction, ka whakahiatohia te tuhinga ka tukuna ki te poraka.
"Ka taea te whakatakoto" ka tukuna he InvokeScriptTransaction ki te whatunga, ka whakahohe i te mahi putunga() mo ia o nga kaute e rua.
“Kaore e taea te tango atu i nga mea i penapenahia” nga whakamatautau e kore e taea e tetahi te tahae nga tohu a etahi atu.
"Ka taea te whakatakoto" he tirotiro kei te tika te tukatuka o nga tangohanga.
Whakahaerehia nga whakamatautau mai i te Papa Ngaru me te tātari i nga hua i Waves Explorer
Hei whakahaere i te whakamatautau, rere
surfboard test
Mēnā he maha ō hōtuhi (hei tauira, ka hiahia koe ki tētahi hōtuhi whakatakotoranga motuhake), ka taea e koe te whakahaere
surfboard test my-scenario.js
Ka kohia e te papa ngaru nga konae whakamatautau i roto i te kōpaki ./test/ ka whakahaere i te hōtuhi i runga i te pona kua whirihorahia ki surfboard.config.json. Whai muri i etahi hēkona ka kite koe i tetahi 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)
Hore! Kua paahitia nga whakamatautau. Inaianei me titiro tatou ki nga mea ka pa ki te whakamahi Waves Explorer: tirohia nga poraka, whakapiri ranei tetahi o nga wahitau i runga ake nei ki te rapu (hei tauira, wallet#. I reira ka kitea e koe te hitori tauwhitinga, te mana dApp, te konae rua kua whakahiatohia.
Waves Explorer. He tono katahi ano ka tukuna.
Ētahi Tohutohu Papa Ngarue:
1. Hei whakamatautau i te taiao testnet, whakamahia:
2. Ki te hiahia koe ki te kite i nga putanga JSON o nga tauwhitinga me te pehea e whakahaerea ai e te node, whakahaerehia te whakamatautau me te -v (ko te tikanga 'verbose'):
Te whakatu Waves Keeper ki te mahi me te node rohe
2. Kawemai he kupu huna me nga tohu mo te whatunga? Mo te ngawari, whakamahia te kakano tuatahi o to node: waves private node seed with waves tokens. Wāhi noho: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.