Ahoana ny fananganana, fametrahana ary fitsapana Waves RIDE dApp

Salama! Ato amin'ity lahatsoratra ity dia hasehoko anao ny fomba fanoratana sy fampandehanana dApp mahazatra amin'ny node Waves. Andeha hojerentsika ny fitaovana ilaina, ny fomba ary ny ohatra iray amin'ny fampandrosoana.

Ahoana ny fananganana, fametrahana ary fitsapana Waves RIDE dApp

Ny drafitra fampandrosoana ho an'ny dApps sy ny fampiharana mahazatra dia saika mitovy:

  • Kaody fanoratana
  • Manoratra fitiliana mandeha ho azy
  • Famoahana ny fampiharana
  • fizahan-toetra

fitaovana

1. docker hampandehanana node sy Waves Explorer

Raha tsy te hanomboka node ianao dia azonao atao ny mitsambikina ity dingana ity. Misy tokoa mantsy ny tambazotra andrana sy andrana. Saingy raha tsy mampiasa ny node anao manokana, dia mety hihemotra ny fizotran'ny fitsapana.

  • Mila kaonty vaovao misy marika fitsapana ianao. Mamindra 10 WAVES isaky ny 10 minitra ny faucet tambajotra andrana.
  • Ny salan'isan'ny sakana ao amin'ny tambajotra fitsapana dia 1 minitra, ao amin'ny node - 15 segondra. Tena tsikaritra izany rehefa mitaky fanamafisana maromaro ny fifampiraharahana.
  • Azo atao ny caching mahery vaika amin'ny node andrana ho an'ny daholobe.
  • Mety tsy ho afaka vonjimaika ihany koa izy ireo noho ny fikojakojana.

Manomboka izao dia hihevitra aho fa miasa amin'ny node anao manokana ianao.

2. Fitaovana baikon'ny Surfboard

  • Ampidino ary apetraho ny Node.js mampiasa ppa, homebrew na exe eto: https://nodejs.org/en/download/.
  • Mametraka Surfboard, fitaovana ahafahanao manao fitsapana amin'ny node efa misy.

npm install -g @waves/surfboard

3. Visual Studio Code plugin

Ity dingana ity dia azo atao raha tsy mpankafy IDE ianao ary tianao ny mpamoaka lahatsoratra. Ny fitaovana ilaina rehetra dia fitaovana an-tariby baiko. Raha mampiasa vim ianao dia tandremo ny plugin vim-ride.

Misintona ary mametraka Visual Studio Code: https://code.visualstudio.com/

Sokafy ny VS Code ary apetraho ny plugin waves-ride:

Ahoana ny fananganana, fametrahana ary fitsapana Waves RIDE dApp

Fanitarana navigateur Waves Keeper: https://wavesplatform.com/products-keeper

Nataon'i!

Alefaso ny node sy Waves Explorer

1. Atombohy ny node:

docker run -d -p 6869:6869 wavesplatform/waves-private-node

Ataovy azo antoka fa natomboka tamin'ny alàlan'ny REST API ny node http://localhost:6869:

Ahoana ny fananganana, fametrahana ary fitsapana Waves RIDE dApp
Swagger REST API ho an'ny node

2. Manomboha ohatra amin'ny Waves Explorer:

docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer

Sokafy navigateur ary mandehana any http://localhost:3000. Ho hitanao ny haingan'ny fananganana faritra node eo an-toerana.

Ahoana ny fananganana, fametrahana ary fitsapana Waves RIDE dApp
Ny Waves Explorer dia mampiseho ohatra node eo an-toerana

Rafitra RIDE sy fitaovana Surfboard

Mamorona lahatahiry tsy misy na inona na inona ary ataovy ny baiko ao anatiny

surfboard init

Ny baiko dia manomboka lahatahiry miaraka amin'ny firafitry ny tetikasa, fampiharana sy fitsapana "hello world". Raha manokatra ity lahatahiry ity miaraka amin'ny VS Code ianao dia ho hitanao:

Ahoana ny fananganana, fametrahana ary fitsapana Waves RIDE dApp
Surfboard.config.json

  • Eo ambanin'ny fampirimana ./ride/ dia hahita rakitra tokana ianao wallet.ride - ny lahatahiry misy ny code dApp. Hanadihady fohifohy ny dApps amin'ny sakana manaraka.
  • Eo ambanin'ny fampirimana ./test/ dia hahita rakitra *.js ianao. Tehirizina eto ny fitsapana.
  • ./surfboard.config.json – rakitra fikirakirana ho an'ny fitsapana.

Envs dia fizarana manan-danja. Ny tontolo tsirairay dia voarindra toy izao:

  • REST API fifaranan'ny node izay hampiasaina hanombohana ny dApp sy CHAIN_ID an'ny tambajotra.
  • Andian-teny miafina ho an'ny kaonty misy famantarana izay ho loharanon'ny mari-panadinanao.

Araka ny hitanao, ny surfboard.config.json dia manohana tontolo maro amin'ny alàlan'ny default. Ny toerana misy azy dia ny tontolo iainana eo an-toerana (ny fanalahidy defaultEnv dia parameter azo ovaina).

Fampiharana amin'ny poketra-demo

Ity fizarana ity dia tsy manondro ny fiteny RIDE. Raha ny tokony ho izy, jereo ny fampiharana izay apetrakay ary andramana mba hahatakarana bebe kokoa ny zava-mitranga ao amin'ny blockchain.

Andeha hojerentsika ny fampiharana tsotra Wallet-demo. Na iza na iza dia afaka mandefa famantarana amin'ny adiresy dApp. Azonao atao ihany ny misintona ny WAVES anao. Ny fiasa roa @Callable dia azo alaina amin'ny InvokeScriptTransaction:

  • deposit()izay mitaky fandoavam-bola mipetaka amin'ny WAVES
  • withdraw(amount: Int)izay mamerina famantarana

Mandritra ny androm-piainan'ny dApp, ny rafitra (adiresy → vola) dia hotazonina:

Action
Fanjakana vokatr'izany

voalohany
foana

Nametraka 5 WAVES i Alice
alice-adiresy → 500000000

Nametraka 2 WAVES i Bob

alice-adiresy → 500000000
bob-adiresy → 200000000

Nisintona WAVES 7 i Bob
NANDÀ!

Nisintona WAVES 4 i Alice
alice-adiresy → 100000000
bob-adiresy → 200000000

Ity ny code mba hahatakarana tsara ny toe-javatra:

# 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

Sample code dia azo jerena ao amin'ny GitHub.

Ny plugin VSCode dia manohana ny fanangonana tsy tapaka mandritra ny fanovana rakitra. Noho izany, azonao atao ny manara-maso ny lesoka ao amin'ny tabilao PROBLEMS.

Ahoana ny fananganana, fametrahana ary fitsapana Waves RIDE dApp
Raha te hampiasa tonian-dahatsoratra hafa ianao rehefa manangona ny rakitra dia ampiasao

surfboard compile ride/wallet.ride

Izany dia hamoaka andian-dahatsoratra base64 natambatra kaody RIDE.

Script andrana momba ny 'wallet.ride'

Andeha hojerentsika fichier test. Powered by JavaScript's Mocha framework. Misy fiasa "Alohan'ny" ary fitsapana telo:

  • "Alohan'ny" dia mamatsy kaonty marobe amin'ny alàlan'ny MassTransferTransaction, manangona ny script ary mametraka izany amin'ny blockchain.
  • Ny "Afaka mametraka" dia mandefa InvokeScriptTransaction amin'ny tambajotra, manetsika ny petra-bola () ho an'ny tsirairay amin'ireo kaonty roa.
  • Fitsapana “Tsy afaka misintona mihoatra noho ny napetraka” izay tsy misy afaka mangalatra ny mariky ny olon-kafa.
  • "Afaka mametraka" manamarina fa voalamina tsara ny fisintonana.

Manaova fitsapana avy amin'ny Surfboard ary diniho ny valiny ao amin'ny Waves Explorer

Mba hanaovana ny fitsapana, mihazakazaka

surfboard test

Raha manana script maromaro ianao (ohatra, mila script fanaparitahana misaraka) dia afaka mihazakazaka ianao

surfboard test my-scenario.js

Ny Surfboard dia hanangona ireo rakitra fitsapana ao amin'ny lahatahiry ./test/ ary hampandeha ny script eo amin'ny node izay namboarina ao amin'ny surfboard.config.json. Rehefa afaka segondra vitsy dia hahita zavatra toy izao ianao:

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! Nandalo ny fitsapana. Andeha hojerentsika izay mitranga rehefa mampiasa Waves Explorer: jereo ireo sakana na apetaho amin'ny fikarohana ny iray amin'ireo adiresy etsy ambony (ohatra, wallet#. Ao no ahitanao ny tantaran'ny fifanakalozana, ny satan'ny dApp, ny rakitra binary decompiled.

Ahoana ny fananganana, fametrahana ary fitsapana Waves RIDE dApp
Waves Explorer. Fampiharana vao naparitaka.

Soso-kevitra sasany amin'ny Surfboard:

1. Mba hitsapana ao amin'ny tontolo testnet, ampiasao:

surfboard test --env=testnet

Mahazoa mari-pamantarana fitsapana

2. Raha te-hahita ny dikan-teny JSON momba ny fifampiraharahana sy ny fomba fiasan'ny node ianao, dia ataovy ny fitsapana miaraka amin'ny -v (midika hoe 'verbose'):

surfboard test -v

Mampiasa fampiharana miaraka amin'ny Waves Keeper

1. Amboary ny Waves Keeper hiasa: http://localhost:6869

Ahoana ny fananganana, fametrahana ary fitsapana Waves RIDE dApp
Mametraka Waves Keeper hiasa amin'ny node eo an-toerana

2. Manafatra andian-teny miafina miaraka amin'ny famantarana ho an'ny tambajotra? Mba hanatsorana, ampiasao ny voa voalohany amin'ny node anao: waves private node seed with waves tokens. Adiresy: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Azonao atao ny mampiasa ny npm fampiharana pejy tokana tsy misy mpizara. Na mandehana any amin'ny efa misy: chrome-ext.wvservices.com/dapp-wallet.html

4. Ampidiro ao amin'ny boaty lahatsoratra adiresy dApp ny adiresin'ny kitapom-bola avy amin'ny fitsapana (tsipitsipika etsy ambony).

5. Ampidiro vola kely ao amin'ny saha "Deposito" ary tsindrio ny bokotra:

Ahoana ny fananganana, fametrahana ary fitsapana Waves RIDE dApp
Mangataka alalana hanao sonia InvokeScriptTransaction miaraka amin'ny fandoavana WAVES 10 ny Waves Keeper.

6. Hamafiso ny fifampiraharahana:

Ahoana ny fananganana, fametrahana ary fitsapana Waves RIDE dApp
Ny fifampiraharahana dia noforonina ary alefa amin'ny tambajotra. Hitanao izao ny karapanondrony

7. Araho ny fifampiraharahana amin'ny fampiasana Waves Explorer. Ampidiro ny ID eo amin'ny sehatry ny fikarohana

Ahoana ny fananganana, fametrahana ary fitsapana Waves RIDE dApp

Fehiny sy fanazavana fanampiny

Nijery ny fitaovana amin'ny famolavolana, fitiliana, fametrahana ary fampiasana dApps tsotra ao amin'ny Waves Platform izahay:

  • fiteny RIDE
  • VS Code Editor
  • Waves Explorer
  • solaitrabe surf
  • Waves Keeper

Rohy ho an'ireo izay te hanohy hianatra RIDE:

Ohatra bebe kokoa
IDE an-tserasera misy ohatra
Waves Documentation
Resaka developer amin'ny Telegram
Waves sy RIDE amin'ny stackoverflow
VAOVAO! Fianarana an-tserasera momba ny famoronana dApps amin'ny Waves Platform

Tohizo ny fidirana amin'ny lohahevitra RIDE ary mamorona dApp voalohany anao!

TL, DR: bit.ly/2YCFnwY

Source: www.habr.com

Add a comment