PĂ«rshĂ«ndetje! NĂ« kĂ«tĂ« artikull do tâju tregoj se si tĂ« shkruani dhe tĂ« lançoni njĂ« dApp standard nĂ« nodĂ«n Waves. Do tĂ« shqyrtojmĂ« mjetet e nevojshme, metodat dhe njĂ« shembull tĂ« zhvillimit.

Schema e zhvillimit të dApps dhe aplikacioneve standarde nuk ndryshon shumë:
- Shkruaj mënyrën e kodit
- Shkruaj testimin automatizuar
- Fillojmë aplikacionin
- Testojmë
Mjetet
1. docker për të lançuar nodën dhe Waves Explorer
Nëse nuk dëshironi të lançoni nodën, mund ta kaloni këtë hap. Sepse ka një rrjet testues dhe eksperimentues. Por pa ndërtimin e nodës tuaj, procesi i testimit mund të zgjasë.
- NĂ« vazhdim do tâju nevojiten vazhdimisht llogari tĂ« reja me tokenat testuese. Krani i rrjetit testues bĂ«n transferimin e 10 WAVES çdo 10 minuta.
- Koha mesatare e blloqeve nĂ« rrjetin testues Ă«shtĂ« 1 minutĂ«, nĂ« nodĂ« â 15 sekonda. Kjo Ă«shtĂ« veçanĂ«risht e ndjeshme kur transaksioni kĂ«rkon disa konfirmime.
- Në nodat e testimeve publike ka mundësi për një memorie të agresive.
- Ato gjithashtu mund të jenë përkohësisht të paarritshme për shkak të mirëmbajtjes teknike.
Më tej do të supozoj se po punoni me nodën tuaj.
2. Mjeti i komandës Surfboard
- Shkarkoni dhe instaloni Node.js duke përdorur ppa, homebrew ose exe këtu: .
- Instaloni Surfboard - një mjet që do t'ju lejojë të nisim provat në nodin ekzistues.
npm install -g @waves/surfboard
3. Shtesa për Visual Studio Code
Hapi është opsional nëse nuk jeni fans i IDE-ve dhe preferoni redaktorët e tekstit. Të gjitha mjetet e nevojshme janë utilitarë të komandës. Nëse përdorni vim, kontrolloni shtesën .
Shkarkoni dhe instaloni Visual Studio Code:
Hapni VS Code dhe instaloni shtesën waves-ride:

Shtesa e shfletuesit Waves Keeper:
Gati!
Nisni nodin dhe Waves Explorer
1. Nisni nodin:
docker run -d -p 6869:6869 wavesplatform/waves-private-node
Sigurohuni që nodi të funksionojë përmes REST API në :

Ndërfaqja Swagger REST API për nodin
2. Nisni një ekzemplar të Waves Explorer:
docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer
Hapni shfletuesin dhe shkoni në . Do të shihni se si ndërttohet shpejt një zinxhir i zbrazët i nodit lokal.

Waves Explorer tregon një ekzemplar të nodit lokal
Struktura RIDE dhe mjeti Surfboard
Krijoni një direktori të zbrazët dhe ekzekutoni komandën
surfboard init
Komanda inicializon direktorinë me strukturën e projektit, një aplikacion të tipit 'hello world' dhe provat. Nëse e hapni këtë dosje me VS Code, do të shihni:

Surfboard.config.json
- NĂ« dosjen ./ride/ do tĂ« gjeni njĂ« skedar tĂ« vetme wallet.ride â drejtorinĂ« ku ndodhet kodi i dApp. Ne do ta analizojmĂ« shkurtimisht dApp nĂ« bllokun tjetĂ«r.
- Në dosjen ./test/ do të gjeni skedarin *.js. Këtu ruhen testet.
- ./surfboard.config.json â skedari i konfigurimit pĂ«r ekzekutimin e testeve.
Envs â njĂ« seksion i rĂ«ndĂ«sishĂ«m. Ădo ambient konfigurohet si:
- Pika e fundit REST API të nodës që do të përdoret për të nisur dApp dhe CHAIN_ID të rrjetit.
- Fraza e sekretit për llogarinë me tokenët që do të jenë burim i tokenëve të testit tuaj.
Siç e shihni, surfboard.config.json pĂ«r default mbĂ«shtet disa ambiente. Ambienti lokal Ă«shtĂ« vendosur si default (çelĂ«si defaultEnv â parametrat e mundshĂ«m qĂ« mund tĂ« ndryshoni).
Aplikacioni Wallet-demo
Ky seksion nuk është një manual për gjuhën RIDE. Në vend të kësaj, është një shikim në aplikacionin që po zhvillojmë dhe testojmë për të kuptuar më mirë se çfarë ndodh në blockchain.
Le ta shqyrtojmĂ« aplikacionin e thjeshtĂ« Wallet-demo. Ădo njeri mund tĂ« dĂ«rgojĂ« tokenĂ« nĂ« adresĂ«n e dApp. Mund tĂ« tĂ«rhiqni vetĂ«m WAVES tuaj. Dy funksione @Callable janĂ« tĂ« disponueshme pĂ«rmes InvokeScriptTransaction:
deposit(), i cili kërkon një pagesë të lidhur në WAVESwithdraw(amount: Int), i cili kthen tokenët
GjatĂ« gjithĂ« ciklit tĂ« jetĂ«s sĂ« dApp, struktura (address â amount) do tĂ« mbĂ«shtetet:
Veprimi
Gjendja përfundimtare
fillestar
e zbrazët
Alice depoziton 5 WAVES
adresa-alice â 500000000
Bob depoziton 2 WAVES
adresa-alice â 500000000
adresa-bob â 200000000
Bob tërheq 7 WAVES
NDA!
Alice tërheq 4 WAVES
adresa-alice â 100000000
adresa-bob â 200000000
Ja kodi për të kuptuar situatën plotësisht:
# 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() = falseNjë shembull kodi mund të gjendet gjithashtu në .
Plugin-i VSCode mbështet kompilimin e vazhdueshëm gjatë redaktimit të skedarit. Prandaj, mund ta ndiqni gjithmonë gabimin në tabin PROBLEMS.

Nëse dëshironi të përdorni një redaktues tjetër teksti gjatë kompilimit të skedarit, përdorni
surfboard compile ride/wallet.ride
Kjo do të prodhojë një seri base64 të kodit të kompiluar RIDE.
Skema e testit pĂ«r âwallet.rideâ
Le tĂ« shikojmĂ« nĂ« . Punohet mbi kuadrin JavaScriptâs Mocha. Ka funksionin «Before» dhe tre teste:
- «Before» financimon disa llogari përmes MassTransferTransaction, kompilon skriptin dhe e vendos atë në blockchain.
- «Can deposit» dërgon në rrjet InvokeScriptTransaction, duke aktivizuar funksionin deposit() për secilën nga dy llogaritë.
- «Canât withdraw more than was deposited» teston qĂ« askush nuk mund tĂ« vjedhĂ« token-at e tjetrit.
- «Can deposit» kontrollon që tërheqjet trajtohen në mënyrë korrekte.
Lansimi i testeve me Surfboard dhe analiza e rezultateve në Waves Explorer
Për të nisur testin, kryeni
testin surfboard
Nëse keni disa skenarë (për shembull, nevojitet një skenar i veçantë për nëngjeshje), mund të nisni
surfboard test my-scenario.js
Surfboard do të mbledhë skedarët e testeve në dosjen ./test/ dhe do të ekzekutojë skenarin në noden e caktuar në surfboard.config.json. Pas disa sekondash do të shihni diçka të ngjashme:
suite testi wallet
Duke gjeneruar llogari me nonce: ce8d86ee
Llogaria e gjeneruar: foofoofoofoofoofoofoofoofoofoofoo#ce8d86ee - 3M763WgwDhmry95XzafZedf7WoBf5ixMwhX
Llogaria e gjeneruar: barbarbarbarbarbarbarbarbarbar#ce8d86ee - 3MAi9KhwnaAk5HSHmYPjLRdpCAnsSFpoY2v
Llogaria e gjeneruar: wallet#ce8d86ee - 3M5r6XYMZPUsRhxbwYf1ypaTB6MNs2Yo1Gb
Llogaritë janë financuar me sukses
Skenari është vendosur
â Mund tĂ« depozitohet (4385ms)
â S'mund tĂ« tĂ«rhiqet mĂ« shumĂ« se sa Ă«shtĂ« depozituar
â Mund tĂ« tĂ«rhiqet (108ms)
3 kaluese (15s)
Hurra! Testet kaluan. Tani le të shohim se çfarë ndodh kur përdorim Waves Explorer: të shohim blloket ose të futim një nga adresat e përmendura më lart në kërkim (për shembull, përkatësin wallet#. Aty mund të gjeni historinë e transaksioneve, gjendjen e dApp, skedarin binar të dekompiluar.

Waves Explorer. Aplikacioni që sapo është nisur.
Disa këshilla për Surfboard:
1. Për të testuar në mjedisin testnet, përdorni:
surfboard test --env=testnet
2. NĂ«se dĂ«shironi tĂ« shihni versionet JSON tĂ«Transaksioneve dhe si i pĂ«rpunon nodi, ekzekutoni testin me -v (do tĂ« thotĂ« âdetajuarâ):
surfboard test -v
Përdorimi i aplikacioneve me Waves Keeper
1. Konfiguroni Waves Keeper për të punuar:

Konfigurimi i Waves Keeper për të punuar me nodën lokale
2. Importoni fjalëkalimin sekrete me tokens për rrjetin? Për thjeshtësi përdorni seed fillestar të nodës tuaj: waves private node seed with waves tokens. Adresa: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.
3. Mund të ekzekutoni një aplikacion pa server njëfaqësh vetë, duke përdorur npm. Ose kaloni te ekzistuesi:
4. Shkruani adresën e portofolit nga testimi i nisjes (nënvizuar më lart) në kutinë e adresës dApp
5. Shkruani një shumë të vogël në fushën 'Depozitë' dhe klikoni butonin:

Waves Keeper kërkon leje për të nënshkruar InvokeScriptTransaction me pagesën 10 WAVES.
6. Konfirmoni transaksionin:

Transaksioni është krijuar dhe po transmetohet në rrjet. Tani mund ta shihni ID-në e tij
7. Vini re transaksionin me Waves Explorer. Shkruani ID-në në kutinë e kërkimit

Përfundime dhe informacion shtesë
Ne shqyrtuam mjetet për zhvillim, testim, implementim dhe përdorim të dApps të thjeshtë në Waves Platform:
- Gjuha RIDE
- Redaktori i VS Code
- Waves Explorer
- Surfboard
- Waves Keeper
Linket për ata që duan të vazhdojnë të studiojnë RIDE:
Vazhdoni të thelloni njohuritë mbi RIDE dhe krijoni dApp-in tuaj të parë!
TL;DR:
Burimi: habr.com
