Sawubona! Kulesi sihloko ngizokukhombisa ukuthi ungabhala kanjani futhi usebenzise i-dApp evamile ku-Waves node. Ake sibheke amathuluzi adingekayo, izindlela kanye nesibonelo sokuthuthukiswa.
Uhlelo lokuthuthukisa lwe-dApps nezinhlelo zokusebenza ezijwayelekile lucishe lufane:
- Ikhodi yokubhala
- Ukubhala ukuhlola okuzenzakalelayo
- Kwethulwa uhlelo lokusebenza
- Ukuhlola
Amathuluzi
1. docker
ukusebenzisa i-node kanye ne-Waves Explorer
Uma ungafuni ukuqala i-node, ungeqa lesi sinyathelo. Phela, kukhona ukuhlolwa kanye nenethiwekhi yokuhlola. Kodwa ngaphandle kokukhipha i-node yakho, inqubo yokuhlola ingase iqhubeke.
- Uzodinga njalo ama-akhawunti amasha anamathokheni okuhlola. Umpompi ompompi wenethiwekhi wokuhlola udlulisa ama-WAVES angu-10 njalo emizuzwini eyi-10.
- Isilinganiso sesikhathi sokuvimba kunethiwekhi yokuhlola siyiminithi elingu-1, ku-node - imizuzwana engu-15. Lokhu kubonakala ikakhulukazi uma umsebenzi udinga iziqinisekiso eziningi.
- Ukugcinwa kwesikhashana okunamandla kuyenzeka ezindaweni zokuhlola zomphakathi.
- Angase angatholakali okwesikhashana ngenxa yokulungiswa.
Kusukela manje kuya phambili ngizothatha ngokuthi usebenza nge-node yakho.
2. Ithuluzi le-Surfboard Command Line
- Landa futhi ufake i-Node.js usebenzisa i-ppa, i-homebrew noma i-exe lapha:
https://nodejs.org/en/download/ . - Faka i-Surfboard, ithuluzi elikuvumela ukuthi wenze izivivinyo endaweni ekhona.
npm install -g @waves/surfboard
3. I-plugin ye-Visual Studio Code
Lesi sinyathelo singokuzithandela uma ungeyena umlandeli wama-IDE futhi ukhetha abahleli bombhalo. Wonke amathuluzi adingekayo ayizinsiza zomugqa womyalo. Uma usebenzisa i-vim, naka i-plugin
Landa futhi ufake Ikhodi ye-Visual Studio:
Vula Ikhodi ye-VS bese ufaka i-plugin ye-waves-ride:
Isandiso sesiphequluli se-Waves Keeper:
Kwenziwe!
Qala i-node kanye ne-Waves Explorer
1. Qala i-node:
docker run -d -p 6869:6869 wavesplatform/waves-private-node
Qiniseka ukuthi i-node yethulwa nge-REST API ku
I-Swagger REST API ye-node
2. Qala isibonelo se-Waves Explorer:
docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer
Vula isiphequluli bese uya ku
I-Waves Explorer ibonisa isibonelo se-node yendawo
Isakhiwo se-RIDE kanye nethuluzi le-Surfboard
Dala umkhombandlela ongenalutho bese usebenzisa umyalo kuwo
surfboard init
Umyalo uqalisa uhla lwemibhalo ngesakhiwo sephrojekthi, "sawubona mhlaba" izinhlelo zokusebenza nezivivinyo. Uma uvula le folda nge-VS Code, uzobona:
I-Surfboard.config.json
- Ngaphansi kwefolda ethi ./ride/ uzothola ifayela elilodwa elithi wallet.ride - uhla lwemibhalo lapho ikhodi ye-dApp ikhona. Sizohlaziya kafushane ama-dApps kubhulokhi elandelayo.
- Ngaphansi kwe-./test/ ifolda uzothola ifayela *.js. Izivivinyo zigcinwa lapha.
- ./surfboard.config.json – ifayela lokucushwa lokuqhuba izivivinyo.
I-Evs iyisigaba esibalulekile. Indawo ngayinye ihlelwe kanje:
- Iphoyinti lokugcina le-REST API lenodi ezosetshenziswa ukuqalisa i-dApp kanye ne-CHAIN_ID yenethiwekhi.
- Umusho oyimfihlo we-akhawunti enamathokheni azoba imithombo yamathokheni akho okuhlola.
Njengoba ubona, i-surfboard.config.json isekela izindawo eziningi ngokuzenzakalela. Okuzenzakalelayo indawo yendawo (ukhiye ozenzakalelayo we-Env uyipharamitha eshintshekayo).
Isicelo sedemo ye-wallet
Lesi sigaba asisona ireferensi yolimi lwe-RIDE. Kunalokho, bheka uhlelo lokusebenza esilisebenzisayo futhi silihlole ukuze uqonde kangcono ukuthi kwenzekani ku-blockchain.
Ake sibheke uhlelo lokusebenza olulula lwedemo ye-Wallet. Noma ubani angathumela amathokheni ekhelini le-dApp. Ungakwazi ukuhoxisa kuphela AMAgagasi akho. Imisebenzi emibili ye-@Callable iyatholakala nge-InvokeScriptTransaction:
deposit()
okudinga inkokhelo enamathiselwe kuma-WAVESwithdraw(amount: Int)
ebuyisela amathokheni
Kuwo wonke umjikelezo wempilo we-dApp, isakhiwo (ikheli → inani) sizogcinwa:
Action
Isimo somphumela
kokuqala
Ayinalutho
U-Alice ufaka 5 WAVES
alice-ikheli → 500000000
U-Bob ufaka amagagasi angu-2
alice-ikheli → 500000000
bob-ikheli → 200000000
U-Bob uhoxisa AMAgagasi angu-7
KUNQATSHELWE!
U-Alice uhoxisa AMAgagasi angu-4
alice-ikheli → 100000000
bob-ikheli → 200000000
Nansi ikhodi yokuqonda ngokugcwele isimo:
# 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
Ikhodi yesampula ingatholakala futhi ku
I-plugin ye-VSCode isekela ukuhlanganiswa okuqhubekayo ngenkathi uhlela ifayela. Ngakho-ke, ungahlala uqapha amaphutha kuthebhu ethi IZINKINGA.
Uma ufuna ukusebenzisa isihleli sombhalo esihlukile lapho uhlanganisa ifayela, sebenzisa
surfboard compile ride/wallet.ride
Lokhu kuzokhipha uchungechunge lwekhodi ye-RIDE ehlanganisiwe ye-base64.
Isikripthi sokuhlola se-'wallet.ride'
Ake sibheke
- "Ngaphambi" ixhasa ama-akhawunti amaningi nge-MassTransferTransaction, ihlanganisa iskripthi futhi isithumele ku-blockchain.
- I-"Can deposit" ithumela i-InvokeScriptTransaction kunethiwekhi, ivule umsebenzi wediphozi() we-akhawunti ngayinye kulawa amabili.
- “Awukwazi ukukhipha okungaphezu kwalokho obekufakiwe” okungekho muntu ongantshontsha amathokheni abanye abantu.
- "Ingakwazi ukufaka" ihlola ukuthi ukuhoxiswa kucutshungulwa ngendlela efanele.
Yenza izivivinyo kusuka ku-Surfboard futhi uhlaziye imiphumela ku-Waves Explorer
Ukuze uqalise ukuhlolwa, gijima
surfboard test
Uma unemibhalo eminingi (isibonelo, udinga iskripthi sokuphakelwa esihlukile), ungaqalisa
surfboard test my-scenario.js
I-Surfboard izoqoqa amafayela okuhlola ku-./test/ ifolda futhi isebenzise iskripthi kunodi elungiselelwe kokuthi surfboard.config.json. Ngemva kwemizuzwana uzobona into efana nale:
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! Izivivinyo ziphumelele. Manje ake sibheke ukuthi kwenzekani uma usebenzisa i-Waves Explorer: bheka amabhlogo noma unamathisele elinye lamakheli angenhla ekusesheni (isibonelo, elihambisanayo. wallet#
. Lapho ungathola umlando wokwenziwe, isimo se-dApp, ifayela kanambambili elihlakaziwe.
Amagagasi Explorer. Isicelo esisanda kuthunyelwa.
Amanye amathiphu e-Surfboard:
1. Ukuze uhlole endaweni ye-testnet, sebenzisa:
surfboard test --env=testnet
2. Uma ufuna ukubona izinguqulo ze-JSON zemisebenzi nokuthi zicutshungulwa kanjani ngendawo, qalisa ukuhlola ngokuthi -v (kusho 'i-verbose'):
surfboard test -v
Ukusebenzisa izinhlelo zokusebenza ezine-Waves Keeper
1. Setha i-Waves Keeper ukuthi isebenze:
Ukusetha i-Waves Keeper ukuze isebenze ngendawo yasendaweni
2. Ngenisa umusho oyimfihlo namathokheni enethiwekhi? Ukwenza kube lula, sebenzisa imbewu yokuqala yenodi yakho: waves private node seed with waves tokens
. Ikheli: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF
.
3. Ungaqalisa uhlelo lokusebenza lwekhasi elilodwa elingenasiphakeli ngokwakho usebenzisa i-npm. Noma iya kwekhona:
4. Faka ikheli lesikhwama semali kusukela ekuhlolweni (okudwetshwe ngenhla) ebhokisini lombhalo lekheli le-dApp
5. Faka inani elincane endaweni ethi “Idiphozithi” bese uchofoza inkinobho:
I-Waves Keeper icela imvume yokusayina i-InvokeScriptTransaction enenkokhelo engu-10 WAVES.
6. Qinisekisa umsebenzi:
Okwenziwayo kuyadalwa futhi kusakazwe kunethiwekhi. Manje usungakwazi ukubona i-ID yakhe
7. Gada okwenziwayo usebenzisa i-Waves Explorer. Faka i-ID endaweni yokusesha
Iziphetho nolwazi olwengeziwe
Sibheke amathuluzi okuthuthukisa, ukuhlola, ukuthumela nokusebenzisa ama-dApp alula ku-Waves Platform:
- Ulimi lwe-RIDE
- I-VS Code Editor
- Amagagasi Explorer
- I-Surfboard
- Amagagasi umgcini
Izixhumanisi zalabo abafuna ukuqhubeka nokufunda i-RIDE:
Qhubeka ungene esihlokweni se-RIDE bese udala i-dApp yakho yokuqala!
TL; DR:
Source: www.habr.com