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.
2. Utauta Raina Whakahau Papa Ngaru
- Tikiake me te whakauru i a Node.js ma te whakamahi ppa, homebrew, exe ranei i konei: .
- 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 .
Tikiake me te tāuta Visual Studio Code:
Whakatuwherahia te Waehere VS me te whakauru i te mono-rere:

Toronga pūtirotiro Waves Keeper:
Kua oti!
Tīmatahia te kōpuku me te Waves Explorer
1. Tīmatahia te kōpuku:
docker run -d -p 6869:6869 wavesplatform/waves-private-node
Kia mohio kei te whakarewahia te node ma te REST API in :

Swagger REST API mo te node
2. Tīmatahia he tauira o Waves Explorer:
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 . 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 WAVESwithdraw(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() = falseKa kitea hoki te waehere tauira i .
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 . 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:
surfboard test --env=testnet
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'):
surfboard test -v
Te whakamahi taupānga me Waves Keeper
1. Whakaritea te Waves Keeper ki te mahi:

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.
3. Ka taea e koe te whakahaere i tetahi tono wharangi korekore ma te whakamahi npm. Haere ranei ki te mea o mua:
4. Whakauruhia te wahitau putea mai i te oma whakamatautau (kua tohua ki runga ake nei) ki roto i te pouaka kuputuhi wahitau dApp
5. Whakauruhia he moni iti ki te mara "Tapu" ka paato i te paatene:

Ka tono whakaaetanga a Waves Keeper ki te haina i tetahi InvokeScriptTransaction me te utu 10 WAVES.
6. Whakaū te tauwhitinga:

Ka hangaia te tauwhitinga me te haapurorohia ki te whatunga. Inaianei ka kite koe i tana ID
7. Aroturuki i te tauwhitinga ma te Waves Explorer. Whakauruhia he ID ki te waahi rapu

Nga whakatau me etahi atu korero
I titiro matou ki nga taputapu mo te whakawhanake, te whakamatautau, te whakamahi me te whakamahi i nga dApps ngawari i runga i te Waves Platform:
- reo RIDE
- VS Kaiwhakatika Waehere
- Waves Explorer
- Papa Papaata
- Kaitiaki Ngaru
He hononga mo te hunga e hiahia ana ki te ako tonu i te RIDE:
Haere tonu ki te ruku ki te kaupapa RIDE me te hanga i to dApp tuatahi!
TL; DR:
Source: will.com
