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.

Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp

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.

2. Surfboard Command Loidhne Inneal

  • Luchdaich sìos agus stàlaich Node.js a’ cleachdadh ppa, homebrew no exe an seo: https://nodejs.org/en/download/.
  • 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:

Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp

Leudachadh brabhsair Waves Keeper: https://wavesplatform.com/products-keeper

Done!

Cuir air bhog an nód agus Waves Explorer

1. Tòisich an nód:

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:

Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp
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.

Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp
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:

Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp
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

Gheibhear còd sampall cuideachd aig GitHub.

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.

Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp
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.

Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp
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:

surfboard test --env=testnet

Faigh comharran deuchainn

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’):

surfboard test -v

A’ cleachdadh aplacaidean le Waves Keeper

1. Stèidhich Waves Keeper gu obair: http://localhost:6869

Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp
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:

Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp
Bidh Neach-gleidhidh Waves ag iarraidh cead ainm a chuir ri Transaction InvokeScript le pàigheadh ​​​​de 10 WAVES.

6. Dearbhaich an gnothach:

Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp
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

Mar a thogas tu, a chleachdas agus a nì thu deuchainn air Waves RIDE dApp

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:

Barrachd eisimpleirean
IDE air-loidhne le eisimpleirean
Sgrìobhainnean Waves
Còmhradh luchd-leasachaidh ann an Telegram
Tonnan agus RIDE air stackoverflow
ÙR! Cùrsaichean air-loidhne air cruthachadh dApps air Àrd-ùrlar Waves

Lean air adhart a ’dàibheadh ​​​​a-steach don chuspair RIDE agus cruthaich a’ chiad dApp agad!

TL; DR: bit.ly/2YCFnwY

Source: www.habr.com

Cuir beachd ann