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.
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ị.
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:
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.
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ụ:
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
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.
Ọ 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.
Ị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.