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.
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.
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:
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:
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.
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:
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:
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
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.
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.
"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.
Waves Explorer. Fampiharana vao naparitaka.
Soso-kevitra sasany amin'ny Surfboard:
1. Mba hitsapana ao amin'ny tontolo testnet, ampiasao:
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'):