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.

Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin

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.

2. Amûra Rêzeya Fermandariya Surfboard

  • Node.js bi karanîna ppa, homebrew an exe li vir dakêşin û saz bikin: https://nodejs.org/en/download/.
  • 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/

VS Code vekin û pêveka waves-ride saz bikin:

Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin

Berfirehkirina geroka Waves Keeper: https://wavesplatform.com/products-keeper

Done!

Node û Waves Explorer dest pê bikin

1. Nodê dest pê bikin:

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:

Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin
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.

Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin
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:

Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin
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

Koda nimûneyê jî dikare li vir were dîtin GitHub.

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.

Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin
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.

Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin
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:

surfboard test --env=testnet

Nîşaneyên testê bistî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:

surfboard test -v

Bi Waves Keeper re sepanan bikar tînin

1. Waves Keeper ji bo xebatê saz bikin: http://localhost:6869

Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin
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.

3. Hûn dikarin bi xwe bi karanîna npm serîlêdana yek rûpelek bê server bimeşînin. An jî biçin ya heyî: chrome-ext.wvservices.com/dapp-wallet.html

4. Navnîşana berîka ji ceribandina ceribandinê (li jor hatî xêzkirin) têxe qutiya nivîsê ya navnîşana dApp

5. Di qada "Deposit" de mîqdarek piçûk binivîse û bişkojka bikirtînin:

Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin
Waves Keeper destûr dixwaze ku bi dravdana 10 WAVES ve InvokeScriptTransaction îmze bike.

6. Danûstendinê piştrast bikin:

Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin
Danûstandin tê afirandin û li ser torê tê weşandin. Niha hûn dikarin nasnameya wê bibînin

7. Çavdêriya danûstandinê bi karanîna Waves Explorer. Nasnameyê di qada lêgerînê de binivîse

Meriv çawa pêlan RIDE dApp ava dike, bicîh dike û ceribandin

Encam û agahdariya zêde

Me li amûrên pêşvebirin, ceribandin, bicihkirin û karanîna dAppên hêsan ên li ser Platforma Waves nihêrî:

  • RIDE ziman
  • VS Code Editor
  • Waves Explorer
  • Torgilok
  • Waves Keeper

Girêdanên ji bo kesên ku dixwazin hînbûna RIDE berdewam bikin:

Nimûneyên bêtir
IDE-ya serhêl bi mînakan
Waves Documentation
Di Telegram de sohbeta pêşdebiran
Pêlan û RIDE li ser stackoverflow
NŞH! Kursên serhêl ên li ser çêkirina dApps li ser Platforma Waves

Di mijara RIDE de bidomînin û dApp-a xweya yekem biafirînin!

TL; DR: bit.ly/2YCFnwY

Source: www.habr.com

Add a comment