ProHoster > Blog > Rêveberî > Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin
Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin
Slav! Di vê gotarê de ez ê nîşanî we bidim ka meriv çawa li ser nodek Waves dAppek birêkûpêk binivîsîne û bimeşîne. Ka em li amûr, rêbaz û mînakek pêşveçûnê ya pêwîst binêrin.
Plana pêşkeftinê ji bo dApps û serîlêdanên birêkûpêk hema hema yek e:
Koda nivîsandinê
Nivîsandina ceribandina otomatîkî
Serîlêdanê dest pê bikin
Testing
Amûr
1. docker ji bo rêvekirina nodek û Waves Explorer
Heke hûn nexwazin ku nodek dest pê bikin, hûn dikarin vê gavê derbas bikin. Jixwe, tora ceribandin û ceribandinê heye. Lê bêyî belavkirina girêka xwe, dibe ku pêvajoya ceribandinê bikişîne.
Hûn ê bi berdewamî hewceyê hesabên nû yên bi nîşaneyên ceribandinê bikin. Sermaseya torê ya ceribandinê her 10 hûrdem 10 WAVES vediguhezîne.
Dema blokê ya navîn di tora ceribandinê de 1 hûrdem e, di girêkê de - 15 çirke. Ev bi taybetî dema ku danûstendinek gelek pejirandin hewce dike ev yek tê xuyang kirin.
Veşartina aggressive li ser girêkên ceribandina gelemperî gengaz e.
Di heman demê de dibe ku ew ji ber lênihêrînê bi demkî ne amade bin.
Ji niha û pê ve ez ê texmîn bikim ku hûn bi girêka xwe re dixebitin.
Surfboard saz bikin, amûrek ku dihêle hûn ceribandinan li ser girêkek heyî bimeşînin.
npm install -g @waves/surfboard
3. Pêveka Visual Studio Code
Ev gav vebijarkî ye heke hûn ne heyranê IDE-yê ne û edîtorên nivîsê tercîh dikin. Hemî amûrên pêwîst karûbarên xeta fermanê ne. Ger hûn vim bikar bînin, bala xwe bidin pêvekê vim-ride.
Koda Visual Studio dakêşin û saz bikin: https://code.visualstudio.com/
docker run -d -p 6869:6869 wavesplatform/waves-private-node
Piştrast bikin ku girêk bi navgîniya REST API-yê tê destpêkirin http://localhost:6869:
Swagger REST API ji bo nodê
2. Mînakek Waves Explorer dest pê bikin:
docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer
Gerokek vekin û biçin http://localhost:3000. Hûn ê bibînin ka çiqas zû zincîreyek nodek herêmî ya vala tê çêkirin.
Waves Explorer mînakek girêkek herêmî nîşan dide
Struktura RIDE û amûra Surfboard
Peldankek vala biafirînin û fermanê tê de bimeşînin
surfboard init
Ferman pelrêçek bi avahiya projeyê, serîlêdan û ceribandinên "silav cîhan" dest pê dike. Ger hûn vê peldankê bi VS Code vekin, hûn ê bibînin:
Surfboard.config.json
Di bin peldanka ./ride/ de hûn ê pelek yek wallet.ride bibînin - pelrêça ku koda dApp lê ye. Em ê di bloka paşîn de bi kurtî dApps analîz bikin.
Di bin peldanka ./test/ de hûn ê pelek *.js bibînin. Test li vir têne tomar kirin.
./surfboard.config.json - pelê veavakirinê ji bo ceribandinên xebitandinê.
Envs beşek girîng e. Her hawîrdor bi vî rengî tête saz kirin:
REST API xala dawiya girêka ku dê ji bo destpêkirina dApp û CHAIN_ID ya torê were bikar anîn.
Gotina veşartî ji bo hesabek bi nîşanan re ku dê bibin çavkaniyên nîşaneyên ceribandina we.
Wekî ku hûn dikarin bibînin, surfboard.config.json ji hêla xwerû ve gelek hawîrdoran piştgirî dike. Vebijêrk hawîrdora herêmî ye (bişkojka defaultEnv pîvanek guhêrbar e).
Serlêdana Wallet-demo
Ev beş ne referansa zimanê RIDE ye. Berevajî vê yekê, nihêrînek li serîlêdana ku em dakêşin û ceribandinê dikin da ku çêtir fam bikin ka di zincîra blokê de çi diqewime.
Ka em li serîlêdana Wallet-demo ya hêsan binêrin. Her kes dikare nîşanekan bişîne navnîşanek dApp. Hûn dikarin tenê WAVES-ên xwe vekişînin. Du fonksiyonên @Callable bi InvokeScriptTransaction ve têne peyda kirin:
deposit()ya ku di WAVES de dravê pêvekirî hewce dike
withdraw(amount: Int)ku nîşanekan vedigerîne
Li seranserê çerxa jiyanê ya dApp, avahî (navnîşan → mîqdar) dê were domandin:
Çalakî
Encama dewletê
destpêkî
vala
Alice 5 WAVES razandine
alice-adresa → 500000000
Depoyên Bob 2 WAVES
alice-adresa → 500000000
bob-navnîşan → 200000000
Bob vekişîne 7 WAVES
Înkarkirin!
Alice vekişîne 4 WAVES
alice-adresa → 100000000
bob-navnîşan → 200000000
Li vir kodek heye ku rewşê bi tevahî fêm bike:
# 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
Pêveka VSCode di dema sererastkirina pelê de berhevkirina domdar piştgirî dike. Ji ber vê yekê, hûn dikarin her gav xeletiyên di tabloya PROBLEMS de bişopînin.
Heke hûn dixwazin dema berhevkirina pelê edîtorek nivîsê ya cûda bikar bînin, bikar bînin
surfboard compile ride/wallet.ride
Ev ê rêzek koda RIDE ya berhevkirî ya base64 derxe.
Nivîsara testê ji bo 'wallet.ride'
Ka em lê binêrin pelê testê. Ji hêla çarçoveya Mocha ya JavaScript ve hatî hêz kirin. Fonksiyonek "Berî" û sê ceribandin hene:
"Berî" bi navgîniya MassTransferTransaction gelek hesaban drav dike, skrîptê berhev dike û li zincîra blokê datîne.
"Dikare depo bike" InvokeScriptTransaction ji torê re dişîne, ji bo her du hesaban fonksiyona depo() çalak dike.
Testên "nikare ji ya ku hatî razandin zêdetir bikişîne" ku kes nikare nîşaneyên kesên din dizîne.
"Dikare depo bike" kontrol dike ku vekêşan rast têne kirin.
Testên ji Surfboard-ê bimeşînin û encaman di Waves Explorer de analîz bikin
Ji bo ceribandinê bimeşînin, birevin
surfboard test
Ger çend nivîsarên we hebin (mînak, ji we re skrîptek veqetandinek veqetandî hewce ye), hûn dikarin bimeşînin
surfboard test my-scenario.js
Surfboard dê pelên testê yên di peldanka ./test/ de kom bike û skrîptê li ser girêka ku di surfboard.config.json de hatî mîheng kirin bimeşîne. Piştî çend hûrdeman hûn ê tiştek weha bibînin:
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! Îmtîhan derbas bûn. Naha em mêze bikin dema ku Waves Explorer bikar tînin çi diqewime: li blokan binihêrin an yek ji navnîşanên jorîn di lêgerînê de bixin (mînak, ya têkildar wallet#. Li wir hûn dikarin dîroka danûstendinê, statûya dApp, pelê binaryê decompiled bibînin.
Waves Explorer. Serlêdanek ku nû hatî bicîh kirin.
Hin Serişteyên Surfboard:
1. Ji bo ceribandina di hawîrdora testnetê de, bikar bînin:
2. Heke hûn dixwazin guhertoyên danûstendinê yên JSON-ê bibînin û ka ew çawa ji hêla nodê ve têne pêvajo kirin, ceribandinê bi -v (tê wateya 'werbose') bimeşînin:
Damezrandina Waves Keeper ku bi nodek herêmî re bixebite
2. Ji bo torê hevoka nehênî bi nîşanan tê import kirin? Ji bo sadebûnê, tovê destpêkê ya girêka xwe bikar bînin: waves private node seed with waves tokens. Navnîşan: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.