ProHoster > Blog > Pulega > Auala e Fausia ai, Fa'atino ma Su'e Galu RIDE dApp
Auala e Fausia ai, Fa'atino ma Su'e Galu RIDE dApp
Talofa! I lenei tusiga o le a ou faʻaali atu ia te oe pe faapefea ona tusi ma faʻatautaia se dApp masani i luga o le Waves node. Sei o tatou tilotilo i meafaigaluega talafeagai, metotia ma se faʻataʻitaʻiga o le atinaʻe.
Ole polokalame ole atina'e mo dApps ma talosaga masani e toetoe lava tutusa:
Fa'ailoga tusitusi
Tusitusi otometi su'ega
Tatala le talosaga
Su'ega
Meafaigaluega
1. docker e taufetuli le node ma Waves Explorer
Afai e te le mana'o e amata se node, e mafai ona e fa'ase'e le la'asaga lea. A uma mea uma, o loʻo i ai se suʻega ma faʻataʻitaʻiga fesoʻotaʻiga. Ae a aunoa ma le fa'aogaina o lau lava node, e mafai ona fa'asolosolo le faiga o su'ega.
E te mana'omia i taimi uma ni tala fou ma fa'ailoga su'ega. Ole paipa feso'ota'iga su'ega e fesiita'i 10 GALU i 10 minute uma.
Ole taimi ole poloka ile suʻega ole suʻega ole 1 minute, ile node - 15 sekone. E matua iloga lava lenei mea pe a mana'omia e se fefa'ataua'iga ni fa'amaoniga se tele.
E mafai ona fa'asao fa'amalosi i nodes su'ega lautele.
E mafai fo'i ona le avanoa mo se taimi le tumau ona o le tausiga.
Mai le taimi nei o le a ou manatu o loʻo e galue i lau lava node.
Fa'apipi'i le Surfboard, o se meafaigaluega e mafai ai ona e su'e su'ega i se node o iai.
npm install -g @waves/surfboard
3. Visual Studio Code plugin
O lenei laasaga e filifili pe afai e le o oe o se tagata IDE ma e te manaʻo e faʻatonu tusitusiga. O meafaigaluega mana'omia uma o fa'atonuga fa'atonu. Afai e te faʻaogaina vim, faʻalogo i le plugin vim-ti'eti'e.
La'u mai ma fa'apipi'i le Visual Studio Code: https://code.visualstudio.com/
docker run -d -p 6869:6869 wavesplatform/waves-private-node
Ia mautinoa o loʻo faʻalauiloa le node e ala i le REST API i totonu http://localhost:6869:
Swagger REST API mo node
2. Amata se fa'ata'ita'iga o Waves Explorer:
docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer
Tatala se browser ma alu i http://localhost:3000. O le a e va'ai i le vave ona fausia o se ta'amilosaga node fa'apitonu'u gaogao.
Waves Explorer fa'aalia se fa'ata'ita'iga node i le lotoifale
fausaga RIDE ma mea faigaluega laupapa faasee
Fausia se lisi gaogao ma fa'atonu le fa'atonuga i totonu
surfboard init
O le fa'atonuga e amatalia ai se fa'atonuga fa'atasi ai ma le fa'atulagaga o le poloketi, "hello world" talosaga ma su'ega. Afai e te tatalaina lenei faila i le VS Code, o le a e vaʻai:
Surfboard.config.json
I lalo o le ./ride/ folder o le ae maua ai se faila faila e tasi wallet.ride - o le lisi o loʻo i ai le code dApp. O le a matou auiliiliina faʻapuupuu dApps i le isi poloka.
I lalo o le ./test/ folder o le ae maua ai se faila *.js. O su'ega o lo'o teuina iinei.
./surfboard.config.json – faila fa'atulagaina mo su'ega fa'atino.
Envs o se vaega taua. O si'osi'omaga ta'itasi ua fa'atulaga e pei o lenei:
REST API pito pito o le node o le a faʻaaoga e faʻalauiloa ai le dApp ma CHAIN_ID o le fesoʻotaʻiga.
O se fuaitau faalilolilo mo se tala o loʻo i ai faʻailoga o le a avea ma faʻapogai o au faʻailoga suʻega.
E pei ona e va'ai, e lagolagoina e surfboard.config.json le tele o si'osi'omaga ona o le faaletonu. O le faaletonu o le si'osi'omaga fa'apitonu'u (le defaultEnv key o se parakalafa e mafai ona suia).
Talosaga fa'atupe-temo
O lenei vaega e le o se faasinomaga i le gagana RIDE. Nai lo lena, se'i va'ai i le talosaga matou te fa'atinoina ma fa'ata'ita'i ina ia malamalama atili i mea o lo'o tupu i le poloka poloka.
Se'i o tatou va'ai i se talosaga fa'atau-fa'aliga faigofie. So'o se tasi e mafai ona lafo fa'ailoga i se tuatusi dApp. E na'o lou ave'ese o lau WAVES. E lua @Callable galuega e maua ile InvokeScriptTransaction:
deposit()lea e mana'omia ai se totogi fa'apipi'i ile WAVES
withdraw(amount: Int)lea e toe faafoi mai ai faailoga
I le olaga atoa o le dApp, o le fausaga (tuatusi → aofaiga) o le a tausia:
faatinoga
Tulaga i'uga
muamua
leai se mea
Ua teuina e Alice 5 GALU
Alice-tuatusi → 500000000
E teuina e Bob 2 GALU
Alice-tuatusi → 500000000
tuatusi bob → 200000000
Ua aveese e Bob le 7 GALU
FAAfitia!
Ua aveese e Alisa 4 GALU
Alice-tuatusi → 100000000
tuatusi bob → 200000000
O le code lea e malamalama atoatoa ai i le tulaga:
# 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
Fa'ata'ita'iga code e mafai fo'i ona maua ile GitHub.
O le VSCode plugin e lagolagoina le faʻapipiʻi faʻaauau aʻo faʻasaʻo se faila. O le mea lea, e mafai ona e mata'ituina mea sese i le PROBLEMS tab.
Afai e te manaʻo e faʻaoga se isi faʻamatalaga tusitusia pe a tuʻufaʻatasia le faila, faʻaoga
surfboard compile ride/wallet.ride
Ole mea lea ole a maua mai ai se fa'asologa o le code RIDE tu'ufa'atasia base64.
Tusi su'ega mo 'wallet.ride'
Sei o tatou vaavaai i faila su'ega. Fa'aola e le JavaScript's Mocha framework. O loʻo i ai se "Muamua" galuega ma tolu suʻega:
"A'o le'i" fa'atupe le tele o fa'amatalaga e ala i le MassTransferTransaction, tu'ufa'atasia le fa'amaumauga ma tu'uina atu i le poloka poloka.
"E mafai ona teuina" auina atu se InvokeScriptTransaction i le fesoʻotaʻiga, faʻagaoioia le tupe teu() galuega mo tala taitasi e lua.
“E le mafai ona tala i tua le sili atu nai lo le mea na teuina” suega e le mafai e se tasi ona gaoia faailoga a isi tagata.
"E mafai ona teu" siaki o tala faauigaina o loʻo faʻagasolo saʻo.
Fa'atino su'ega mai le Surfboard ma au'ili'ili i'uga ile Waves Explorer
Ina ia faia le suega, tamoe
surfboard test
Afai e tele au tusitusiga (mo se faʻataʻitaʻiga, e te manaʻomia se faʻasalalauga tuʻufaʻatasia), e mafai ona e tamoe
surfboard test my-scenario.js
O le a aoina e le Surfboard faila o su'ega i le ./test/ folder ma fa'agasolo le fa'amaumauga i luga o le node o lo'o fa'atulagaina i le surfboard.config.json. A maeʻa ni nai sekone o le a e vaʻai i se mea e pei o lenei:
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)
Talofa! Na pasi su'ega. Seʻi o tatou vaʻai i le mea e tupu pe a faʻaaogaina Waves Explorer: vaʻai i poloka pe faapipii se tasi o tuatusi o loʻo i luga i le sailiga (mo se faʻataʻitaʻiga, o le fetaui wallet#. O iina e mafai ona e maua ai le talafaasolopito o fefaʻatauaiga, tulaga o le dApp, faila faila binary decompiled.
Galu Su'esu'e. O se talosaga faatoa uma ona fa'atinoina.
Nisi Fautuaga Laupapa Ta'avale:
1. Ina ia fa'ata'ita'i ile siosiomaga testnet, fa'aoga:
2. Afai e te manaʻo e vaʻai i le JSON versions o fefaʻatauaiga ma pe faʻafefea ona faʻaogaina e le node, faʻataʻitaʻi le suʻega ma -v (o lona uiga 'verbose'):
Fa'atulaga Waves Keeper e galue ma se node i le lotoifale
2. Fa'aulufale mai fuaitau faalilolilo ma fa'ailoga mo le feso'ota'iga? Mo le faigofie, faʻaaoga le fatu muamua o lau node: waves private node seed with waves tokens. tuatusi: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.