ProHoster > Blog > Rianachd > Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp
Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp
Halò! San artaigil seo seallaidh mi dhut mar a sgrìobhas tu agus a ruitheas tu dApp cunbhalach air nód Waves. Bheir sinn sùil air na h-innealan, dòighean-obrach agus eisimpleir de leasachadh riatanach.
Tha an sgeama leasachaidh airson dApps agus tagraidhean cunbhalach cha mhòr an aon rud:
Còd a sgrìobhadh
A 'sgrìobhadh deuchainn fèin-ghluasadach
Cuir air bhog an tagradh
Deuchainn
Innealan
1. docker gus an nód agus Waves Explorer a ruith
Mura h-eil thu airson nód a thòiseachadh, faodaidh tu an ceum seo a leum. Às deidh na h-uile, tha lìonra deuchainn agus deuchainneach ann. Ach gun a bhith a’ cleachdadh do nód fhèin, faodaidh am pròiseas deuchainn slaodadh air adhart.
Bidh feum agad an-còmhnaidh air cunntasan ùra le comharran deuchainn. Bidh am faucet lìonra deuchainn a’ gluasad 10 TONS gach 10 mionaidean.
Is e an ùine bloca cuibheasach san lìonra deuchainn 1 mionaid, anns an nód - 15 diogan. Tha seo gu sònraichte follaiseach nuair a dh’ fheumas malairt iomadh dearbhadh.
Tha e comasach tasgadh ionnsaigheach a dhèanamh air nodan deuchainn poblach.
Is dòcha nach bi iad rim faighinn airson ùine air sgàth cumail suas.
Bho seo a-mach gabhaidh mi ris gu bheil thu ag obair leis an nód agad fhèin.
Stàlaich Surfboard, inneal a leigeas leat deuchainnean a ruith air nód a tha ann mu thràth.
npm install -g @waves/surfboard
3. Visual Studio Code plugan
Tha an ceum seo roghainneil mura h-eil thu dèidheil air IDEs agus is fheàrr leat luchd-deasachaidh teacsa. Tha na h-innealan riatanach uile nan goireasan loidhne-àithne. Ma chleachdas tu vim, thoir aire don plugan vim-marcachd.
Luchdaich sìos agus stàlaich Còd Visual Studio: https://code.visualstudio.com/
Fosgail Còd VS agus stàlaich am plugan waves-ride:
docker run -d -p 6869:6869 wavesplatform/waves-private-node
Dèan cinnteach gun tèid an nód a chuir air bhog tron REST API a-steach http://localhost:6869:
Swagger REST API airson nód
2. Tòisich eisimpleir de Waves Explorer:
docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer
Fosgail brabhsair agus rachaibh gu http://localhost:3000. Chì thu cho luath sa thèid cuairteachadh nód ionadail falamh a thogail.
Tha Waves Explorer a’ taisbeanadh eisimpleir nód ionadail
Structar RIDE agus inneal Surfboard
Cruthaich eòlaire falamh agus ruith an àithne ann
surfboard init
Bidh an àithne a’ tòiseachadh eòlaire le structar a’ phròiseict, tagraidhean agus deuchainnean “hello world”. Ma dh'fhosglas tu am pasgan seo le VS Code, chì thu:
Surfboard.config.json
Fon phasgan ./ride/ lorgaidh tu wallet.ride faidhle singilte - an eòlaire far a bheil an còd dApp suidhichte. Nì sinn sgrùdadh goirid air dApps san ath bhloc.
Fon phasgan ./test/ lorgaidh tu faidhle * .js. Tha deuchainnean air an stòradh an seo.
./surfboard.config.json - faidhle rèiteachaidh airson deuchainnean a ruith.
Tha Envs na roinn chudromach. Tha gach àrainneachd air a rèiteachadh mar seo:
REST API crìochnachaidh an nód a thèid a chleachdadh gus an dApp agus CHAIN_ID den lìonra a chuir air bhog.
Abairtean dìomhair airson cunntas le comharran a bhios mar thùs do chomharran deuchainn.
Mar a chì thu, tha surfboard.config.json a’ toirt taic do ghrunn àrainneachdan gu bunaiteach. Is e an àrainneachd ionadail an roghainn bunaiteach (tha an iuchair defaultEnv na paramadair a ghabhas atharrachadh).
Iarrtas wallet-demo
Chan eil an earrann seo a’ toirt iomradh air cànan RIDE. An àite sin, thoir sùil air an aplacaid a bhios sinn a’ cleachdadh agus a’ dèanamh deuchainn gus tuigse nas fheàrr fhaighinn air na tha a’ tachairt anns an blockchain.
Nach toir sinn sùil air tagradh sìmplidh Wallet-demo. Faodaidh duine sam bith comharran a chuir gu seòladh dApp. Chan urrainn dhut ach do WAVES a tharraing air ais. Tha dà ghnìomh @Callable rim faighinn tro InvokeScriptTransaction:
deposit()a dh’ fheumas pàigheadh ceangailte ann an WAVES
withdraw(amount: Int)a thilleas comharran
Tron chuairt-beatha dApp, thèid an structar (seòladh → suim) a chumail suas:
Gnìomh
Staid toradh
a 'chiad
falamh
Tha Alice a 'tasgadh 5 TONS
seòladh alice → 500000000
Tha Bob a' tasgadh 2 TUATH
seòladh alice → 500000000
Seòladh Bob → 200000000
Bidh Bob a’ tarraing air ais 7 TONS
Àicheadh!
Tha Alice a’ tarraing air ais 4 TONS
seòladh alice → 100000000
Seòladh Bob → 200000000
Seo an còd gus an suidheachadh a thuigsinn gu tur:
# 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
Bidh am plugan VSCode a’ toirt taic do chruinneachadh leantainneach fhad ‘s a tha thu a’ deasachadh faidhle. Mar sin, faodaidh tu daonnan sùil a chumail air mearachdan anns an tab PROBLEMS.
Ma tha thu airson deasaiche teacsa eile a chleachdadh nuair a bhios tu a’ cur ri chèile am faidhle, cleachd
surfboard compile ride/wallet.ride
Bheir seo a-mach sreath de chòd RIDE cruinnichte le base64.
Sgriobt deuchainn airson 'wallet.ride'
Bheir sinn sùil air faidhle deuchainn. Le cumhachd bho fhrèam Mocha JavaScript. Tha gnìomh “Roimhe” agus trì deuchainnean ann:
Bidh “Roimhe” a’ maoineachadh grunn chunntasan tro MassTransferTransaction, a’ cur ri chèile an sgriobt agus ga chuir gu blockchain.
Bidh “Can deposit” a’ cur InvokeScriptTransaction chun lìonra, a’ cur an gnìomh tasgadh () airson gach aon den dà chunntas.
Deuchainnean “Cha ghabh barrachd a tharraing air ais na chaidh a thasgadh” nach urrainn do dhuine sam bith comharran dhaoine eile a ghoid.
Sgrùdaidhean “An urrainn tasgadh” gu bheil tarraing air ais air a phròiseasadh gu ceart.
Ruith deuchainnean bho Surfboard agus dèan sgrùdadh air toraidhean ann an Waves Explorer
Gus an deuchainn a ruith, ruith
surfboard test
Ma tha grunn sgriobtaichean agad (mar eisimpleir, feumaidh tu sgriobt cleachdadh air leth), faodaidh tu ruith
surfboard test my-scenario.js
Cruinnichidh Surfboard na faidhlichean deuchainn sa phasgan ./test/ agus ruithidh e an sgriobt air an nód a tha air a rèiteachadh ann an surfboard.config.json. An ceann beagan dhiog chì thu rudeigin mar seo:
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! Chaidh deuchainnean seachad. A-nis leig dhuinn sùil a thoirt air na thachras nuair a bhios tu a’ cleachdadh Waves Explorer: thoir sùil air na blocaichean no cuir a-steach aon de na seòlaidhean gu h-àrd san rannsachadh (mar eisimpleir, am fear co-fhreagarrach wallet#. An sin gheibh thu eachdraidh malairt, inbhe dApp, faidhle binary dì-chompanach.
Waves Explorer. Iarrtas a tha dìreach air a chuir a-steach.
Cuid de mholaidhean surfboard:
1. Gus deuchainn a dhèanamh ann an àrainneachd testnet, cleachd:
2. Ma tha thu airson na dreachan JSON de ghnothaichean fhaicinn agus mar a tha iad air an giullachd leis an nód, ruith an deuchainn le -v (a’ ciallachadh ‘verbose’):
A’ stèidheachadh Neach-gleidhidh Waves gus obrachadh le nód ionadail
2. Import dìomhair abairt le tokens airson an lìonra? Airson sìmplidh, cleachd sìol tùsail do nód: waves private node seed with waves tokens. Seòladh: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.
3. Faodaidh tu aplacaid aon-dhuilleag gun fhrithealaiche a ruith thu fhèin a’ cleachdadh npm. No rachaibh chun fhear a th’ ann mar-thà: chrome-ext.wvservices.com/dapp-wallet.html
4. Cuir a-steach seòladh an wallet bhon ruith deuchainn (air a shoilleireachadh gu h-àrd) a-steach don bhogsa teacsa seòladh dApp
5. Cuir a-steach tuaiream beag san raon “Tasgaidh” agus cliog air a’ phutan:
Bidh Neach-gleidhidh Waves ag iarraidh cead ainm a chuir ri Transaction InvokeScript le pàigheadh de 10 WAVES.
6. Dearbhaich an gnothach:
Tha an gnothach air a chruthachadh agus air a chraoladh chun lìonra. A-nis chì thu an ID aice
7. Cum sùil air a 'ghnothach a' cleachdadh Waves Explorer. Cuir a-steach ID san raon sgrùdaidh
Co-dhùnaidhean agus fiosrachadh a bharrachd
Choimhead sinn air na h-innealan airson leasachadh, deuchainn, cleachdadh agus cleachdadh dApps sìmplidh air Àrd-ùrlar Waves:
cànan RIDE
Deasaiche còd VS
Waves Explorer
Clàr-surfaidh
Neach-gleidhidh nan tonn
Ceanglaichean dhaibhsan a tha airson leantainn air adhart ag ionnsachadh RIDE: