Tere! KÀesolevas artiklis nÀitan, kuidas kirjutada ja kÀivitada Wavesi sÔlmes tavaline dApp. Vaatame vajalikke tööriistu, meetodeid ja arenduse nÀidet.

dAppide ja tavarakenduste arendusprotsess ei erine praktiliselt ĂŒldse:
- Kirjutame koodi
- Kirjutame automatiseeritud testimise
- KĂ€ivitame rakenduse
- Testime
Tööriistad
1. docker sÔlme ja Waves Exploreri kÀivitamiseks
Kui te ei soovi sĂ”lme kĂ€ivitada, vĂ”ite selle sammu vahele jĂ€tta. LĂ”ppude lĂ”puks on olemas testimis- ja eksperimentaalsed vĂ”rgud. Kuid ilma oma sĂ”lme ĂŒles seadmiseta vĂ”ib testimisprotsess venida.
- Teil on pidevalt vaja uusi kontosid koos testitokenitega. TestimisvÔrgu kraan edastab iga 10 minuti tagant 10 WAVES-i.
- TestimisvĂ”rgus on plokkide keskmine aeg 1 minut, sĂ”lmes â 15 sekundit. See on eriti mĂ€rgatav, kui tehing nĂ”uab mitu kinnitust.
- Avalikes testimis sÔlmedes on vÔimalik agressiivne vahemÀllu salvestamine.
- Samuti vÔivad need olla ajutiselt kÀttesaamatud tehnilise hoolduse tÔttu.
Oletame, et tööteete oma sÔlme.
2. KÀskude rea tööriist Surfboard
- Laadige alla ja installige Node.js ppa, homebrew vÔi exe abil siit: .
- Installige Surfboard â tööriist, mis vĂ”imaldab teil kĂ€ivitada teste olemasolevas sĂ”lmes.
npm install -g @waves/surfboard
3. Visual Studio Code'i plugin
Samm ei ole kohustuslik, kui te ei ole IDE fÀnn ja eelistate tekstiredaktoreid. KÔik vajalikud tööriistad on kÀsurea utiliidid. Kui kasutate vim-i, pange tÀhele pluginat .
Laadige alla ja installige Visual Studio Code:
Avage VS Code ja installige plugin waves-ride:

Brauserilaiendus Waves Keeper:
Valmis!
KÀivitage sÔlm ja Waves Explorer
1. KÀivitage sÔlm:
docker run -d -p 6869:6869 wavesplatform/waves-private-node
Veenduge, et sÔlm kÀivitub REST API kaudu :

Swagger REST API liides sÔlmele
2. KĂ€ivitage Waves Exploreri eksemplar:
docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer
Avage brauser ja minge . NĂ€ete, kui kiiresti lokaalne sĂ”lm tĂŒhja ahelat ĂŒles ehitab.

Waves Explorer kuvab lokaalse sÔlme eksemplari
RIDE struktuur ja tööriist Surfboard
Looge tĂŒhi kataloog ja kĂ€ivitage selles kĂ€sk
surfboard init
KĂ€sk initsialiseerib katalooge, sealhulgas projektistruktuuri, "hello world" tĂŒĂŒpi rakenduse ja testid. Kui avate selle kausta VS Code'is, nĂ€ete:

Surfboard.config.json
- Kaustas .\/ride\/ leiate ĂŒhe faili wallet.ride â katalooge, kus asub dApp kood. Anname dAppi lĂŒhikese analĂŒĂŒsi jĂ€rgmises blokis.
- Kausta . /test/ leiate faili *.js. Siin hoitakse teste.
- . /surfboard.config.json â konfigureerimisfail testide kĂ€ivitamiseks.
Envs â oluline sektsioon. Iga keskkond on seadistatud jĂ€rgmiselt:
- REST API sÔlme lÔpp-punkt, mida kasutatakse dApp-i ja vÔrgu CHAIN_ID kÀivitamiseks.
- Salajane fraas konto jaoks, kus on tokenid, mis saavad olema teie testi tokenite allikad.
Nagu nĂ€ete, toetab surfboard.config.json vaikimisi mitmeid keskkondi. Vaikimisi on seadistatud kohalik keskkond (defaultEnv â muudetav parameeter).
Rakendus Wallet-demo
See sektsioon ei ole RIDE keele kÀsiraamat. Pigem on see pilk rakendusele, mida arendame ja testime, et paremini mÔista, mis plokiahelas toimub.
Vaadakem lihtsat rakendust Wallet-demo. IgaĂŒks vĂ”ib saata dApp-aadressile tokeneid. Saab vĂ€lja vĂ”tta ainult oma WAVES-e. Kaks @Callable funktsiooni on saadaval InvokeScriptTransaction kaudu:
deposit(), mis nĂ”uab WAVES-i kĂŒlge kinnitatud maksetwithdraw(amount: Int), mis tagastab tokenid
Terve dApp-i elu jooksul hoitakse struktuuri (aadress â summa):
Toiming
Tulemuslik seisund
algne
tĂŒhi
Alice deponeerib 5 WAVES-i
alice-address â 500000000
Bob deponeerib 2 WAVES-i
alice-address â 500000000
bob-address â 200000000
Bob taandab 7 WAVES-i
KEELATUD!
Alice taandab 4 WAVES-i
alice-address â 100000000
bob-address â 200000000
Siin on kood, et olukorda tÀielikult mÔista:
# 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() = falseKoodinÀidud leiate ka .
VSCode'i pistikprogramm toetab pidevat kompileerimist faili redigeerimise ajal. SeetÔttu saate alati jÀlgida vigu PROBLEEMID vahekaart.

Kui soovite kasutada muud tekstiredaktorit faili kompileerimise ajal, kasutage
surfboard compile ride/ wallet.ride
See kirjutab vÀlja hulga base64 kompileeritud RIDE koodist.
Teststsenaarium âwallet.rideâ jaoks
Vaadake . Töötab JavaScripti Mocha raamistiku peal. On funktsioon âBeforeâ ja kolm testi:
- âBeforeâ finantseerib mitu kontot lĂ€bi MassTransferTransaction, kompileerib skripti ja juurutab selle plokiahelas.
- âCan depositâ saadab vĂ”rgule InvokeScriptTransaction, aktiveerides deposit() funktsiooni iga kahe konto puhul.
- âCanât withdraw more than was depositedâ testib, et keegi ei suuda varastada teiste tokenit.
- âCan depositâ kontrollib, et vĂ€ljavĂ”tted töödeldakse Ă”igesti.
Testide kĂ€ivitamine Surfboardiga ja tulemuste analĂŒĂŒs Waves Exploreris
Testi kÀivitamiseks tÀitke
surfboard test
Kui teil on mitu stsenaariumi (nÀiteks on vaja eraldi juurutamisskripti), saate jooksutada
surfboard test my-scenario.js
Surfboard kogub testifailid kaustas ./test/ ja kÀivitab skripti sÔlmes, mis on seadistatud failis surfboard.config.json. MÔne sekundi pÀrast nÀete midagi sellist:
rahakoti testikomplekt
Konto genereerimise nonce: ce8d86ee
Konto genereeritud: foofoofoofoofoofoofoofoofoofoofoo#ce8d86ee - 3M763WgwDhmry95XzafZedf7WoBf5ixMwhX
Konto genereeritud: barbarbarbarbarbarbarbarbarbar#ce8d86ee - 3MAi9KhwnaAk5HSHmYPjLRdpCAnsSFpoY2v
Konto genereeritud: rahakott#ce8d86ee - 3M5r6XYMZPUsRhxbwYf1ypaTB6MNs2Yo1Gb
Kontod on eduka rahastamise saanud
Skripti on seadistatud
â Saab deponeerida (4385ms)
â Ei saa vĂ€lja vĂ”tta rohkem, kui on deponeeritud
â Saab vĂ€lja vĂ”tta (108ms)
3 lÀbitud (15s)
Hurraa! Testid on lĂ€bitatud. Vaatame nĂŒĂŒd, mis juhtub, kui kasutame Waves Explorerit: vaatame plokke vĂ”i sisestame ĂŒkskĂ”ik millisest ĂŒlaltoodud aadressilt otsingusse (nĂ€iteks vastav) rahakott#. Seal on vĂ”imalik leida tehingute ajalugu, dApp olek ning dekompileeritud binaarfail.

Waves Explorer. Rakendus, mis just kÀivitati.
MÔned soovitused Surfboardi kohta:
1. Testimiseks testnet keskkonnas kasutage:
surfboard test --env=testnet
2. Kui soovite vaadata tehingute JSON-versioone ja kuidas need sÔlmes töödeldakse, kÀivitage testiparameetriga -v (tÀhendab 'verbose'):
surfboard test -v
Rakenduste kasutamine koos Waves Keeperiga
1. Seadistage Waves Keeper töötama:

Seadistamine Waves Keeperi jaoks töötama kohaliku sÔlmega
2. Importige vÔti, millel on tokenid vÔrgu jaoks? Lihtsuse huvides kasutage oma sÔlme algset seemet: waves private node seed with waves tokens. Aadress: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.
3. Saate kĂ€ivitada ĂŒhe lehega serveriteta rakenduse iseseisvalt, kasutades npm-i. VĂ”i minge olemasolevale:
4. Sisestage testkĂ€ivitamise aadress (ĂŒlevalt rĂ”hutatud) dApp aadressi tekstivĂ€lja
5. Sisestage vÀike summa vÀljale 'Deponeerida' ja klÔpsake nuppu:

Waves Keeper kĂŒsib luba InvokeScriptTransaction allkirjastamiseks, mille makse on 10 WAVES.
6. Kinnitage tehing:

Tehing on loodud ja edastatakse vĂ”rgus. NĂŒĂŒd on nĂ€htav selle ID
7. JÀlgige tehingut Waves Exploreri kaudu. Sisestage ID otsinguvÀlja

JĂ€reldused ja lisainformatsioon
Oleme kÀsitlenud arendus-, testimis-, juurutamis- ja lihtsate dApp-de kasutamise tööriistu Waves platvormil:
- RIDE keel
- VS Code redaktor
- Waves Explorer
- Surfboard
- Waves Keeper
Lingid neile, kes soovivad jÀtkata RIDE uurimist:
SĂŒvene veel rohkem RIDE teemasse ja loo oma esimene dApp!
TL;DR:
Allikas: habr.com
