Momwe Mungamangire, Kutumiza ndi Kuyesa Mafunde RIDE dApp

Moni! M'nkhaniyi ndikuwonetsani momwe mungalembere ndikuyendetsa dApp wamba pa Waves node. Tiyeni tiwone zida zofunika, njira ndi chitsanzo cha chitukuko.

Momwe Mungamangire, Kutumiza ndi Kuyesa Mafunde RIDE dApp

Chiwembu chachitukuko cha dApps ndi kugwiritsa ntchito nthawi zonse chimakhala chofanana:

  • Lembani kodi
  • Kulemba zoyeserera zokha
  • Kukhazikitsa ntchito
  • Kuyesa

Zida

1. docker kuyendetsa mfundo ndi Waves Explorer

Ngati simukufuna kuyambitsa node, mutha kudumpha sitepe iyi. Pambuyo pake, pali kuyesa ndi kuyesa maukonde. Koma popanda kuyika node yanu, kuyesako kumatha kupitilira.

  • Mudzafunika ma akaunti atsopano omwe ali ndi zizindikiro zoyesa. Makina oyesera a netiweki amasamutsa 10 WAVES mphindi 10 zilizonse.
  • Nthawi yapakati pa block network mu network yoyeserera ndi mphindi 1, mu node - masekondi 15. Izi zimawonekera makamaka pamene kugulitsa kumafuna zitsimikizo zingapo.
  • Kusungitsa mwaukali kumatheka pamayesero a anthu.
  • Athanso kukhala osapezeka kwakanthawi chifukwa chokonza.

Kuyambira tsopano ndikuganiza kuti mukugwira ntchito ndi node yanu.

2. Surfboard Command Line Chida

  • Tsitsani ndikuyika Node.js pogwiritsa ntchito ppa, homebrew kapena exe apa: https://nodejs.org/en/download/.
  • Ikani Surfboard, chida chomwe chimakupatsani mwayi woyesa mayeso pa node yomwe ilipo.

npm install -g @waves/surfboard

3. Pulogalamu yowonjezera ya Visual Studio Code

Izi ndizosankha ngati simuli wokonda ma IDE ndipo mumakonda olemba malembedwe. Zida zonse zofunika ndi mzere wolamula. Ngati mugwiritsa ntchito vim, samalani ndi pulogalamu yowonjezera vim-kukwera.

Tsitsani ndikuyika Visual Studio Code: https://code.visualstudio.com/

Tsegulani VS Code ndikuyika pulogalamu yowonjezera ya mafunde:

Momwe Mungamangire, Kutumiza ndi Kuyesa Mafunde RIDE dApp

Waves Keeper msakatuli wowonjezera: https://wavesplatform.com/products-keeper

Zachitika!

Yambani node ndi Waves Explorer

1. Yambitsani mfundo:

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

Onetsetsani kuti node yakhazikitsidwa kudzera pa REST API mkati http://localhost:6869:

Momwe Mungamangire, Kutumiza ndi Kuyesa Mafunde RIDE dApp
Swagger REST API ya node

2. Yambitsani chitsanzo cha Waves Explorer:

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

Tsegulani msakatuli ndikupita ku http://localhost:3000. Mudzawona momwe dera la node lopanda kanthu limapangidwira mwachangu.

Momwe Mungamangire, Kutumiza ndi Kuyesa Mafunde RIDE dApp
Waves Explorer akuwonetsa chitsanzo cha node yakomweko

RIDE kapangidwe ndi Surfboard chida

Pangani bukhu lopanda kanthu ndikuyendetsa lamulo mmenemo

surfboard init

Lamulo limayambitsa chikwatu ndi dongosolo la polojekiti, "hello world" ntchito ndi mayeso. Mukatsegula fodayi ndi VS Code, muwona:

Momwe Mungamangire, Kutumiza ndi Kuyesa Mafunde RIDE dApp
Surfboard.config.json

  • Pansi pa ./ride/foda mupeza fayilo imodzi wallet.ride - chikwatu komwe dApp code ilipo. Tisanthula mwachidule dApps mu block yotsatira.
  • Pansi pa ./test/foda mupeza fayilo ya *.js. Mayesero asungidwa apa.
  • ./surfboard.config.json - fayilo yosinthika yoyeserera mayeso.

Envs ndi gawo lofunikira. Chilengedwe chilichonse chimapangidwa motere:

  • REST API mapeto a node yomwe idzagwiritsidwe ntchito poyambitsa dApp ndi CHAIN_ID za netiweki.
  • Mawu achinsinsi a akaunti yomwe ili ndi zizindikiro zomwe zidzakhala magwero a zizindikiro zanu zoyesa.

Monga mukuwonera, surfboard.config.json imathandizira malo angapo mwachisawawa. Chosakhazikika ndi malo akumaloko (kiyi ya defaultEnv ndi parameter yosinthika).

Wallet-demo application

Gawoli silikunena za chilankhulo cha RIDE. M'malo mwake, yang'anani pulogalamu yomwe timayika ndikuyesa kuti timvetsetse bwino zomwe zikuchitika mu blockchain.

Tiyeni tiwone pulogalamu yosavuta ya Wallet-demo. Aliyense akhoza kutumiza zizindikiro ku adilesi ya dApp. Mutha kungochotsa ma WAVES anu. Ntchito ziwiri za @Callable zilipo kudzera pa InvokeScriptTransaction:

  • deposit()zomwe zimafuna malipiro ophatikizidwa mu WAVES
  • withdraw(amount: Int)zomwe zimabwezera zizindikiro

Munthawi yonse ya moyo wa dApp, mawonekedwe (adilesi β†’ kuchuluka) azisungidwa:

Action
Zotsatira zake

koyamba
chopanda kanthu

Alice amaika 5 WAVES
alice-adilesi β†’ 500000000

Bob amaika 2 WAVES

alice-adilesi β†’ 500000000
bob-address β†’ 200000000

Bob amachotsa 7 WAVES
AKANA!

Alice amachotsa 4 WAVES
alice-adilesi β†’ 100000000
bob-address β†’ 200000000

Nayi code kuti mumvetse bwino zomwe zikuchitika:

# 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

Zitsanzo za code zitha kupezekanso pa GitHub.

Pulogalamu yowonjezera ya VSCode imathandizira kuphatikiza kosalekeza mukamakonza fayilo. Chifukwa chake, mutha kuyang'anira zolakwika nthawi zonse pagawo la PROBLEMS.

Momwe Mungamangire, Kutumiza ndi Kuyesa Mafunde RIDE dApp
Ngati mukufuna kugwiritsa ntchito mkonzi wosiyana polemba fayilo, gwiritsani ntchito

surfboard compile ride/wallet.ride

Izi zidzatulutsa ma code RIDE angapo a base64.

Yesani zolemba za 'wallet.ride'

Tiyeni tione test file. Mothandizidwa ndi JavaScript's Mocha framework. Pali ntchito ya "Before" ndi mayeso atatu:

  • "Pamaso" ndalama maakaunti angapo kudzera MassTransferTransaction, amalemba script ndikutumiza ku blockchain.
  • "Can deposit" imatumiza InvokeScriptTransaction ku netiweki, ndikuyambitsa ntchito ya deposit() pa akaunti iliyonse iwiri.
  • "Simungathe kubweza zambiri kuposa zomwe zidayikidwa" mayeso omwe palibe amene angabe zizindikiro za anthu ena.
  • "Kodi kusungitsa" cheke kuti withdrawals kukonzedwa molondola.

Yesani mayeso kuchokera ku Surfboard ndikuwona zotsatira mu Waves Explorer

Kuti muyese mayeso, thamangani

surfboard test

Ngati muli ndi malemba angapo (mwachitsanzo, mukufunikira zolemba zosiyana), mukhoza kuthamanga

surfboard test my-scenario.js

Surfboard idzasonkhanitsa mafayilo oyesera mu ./test/foda ndikuyendetsa script pa node yomwe yakonzedwa mu surfboard.config.json. Pambuyo masekondi angapo mudzawona chonga ichi:

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)

Uwu! Mayeso anapambana. Tsopano tiyeni tiwone zomwe zimachitika mukamagwiritsa ntchito Waves Explorer: yang'anani midadada kapena muime imodzi mwamaadiresi pamwambapa pakufufuza (mwachitsanzo, yofananira. wallet#. Kumeneko mungapeze mbiri yamalonda, mawonekedwe a dApp, fayilo yowonongeka ya binary.

Momwe Mungamangire, Kutumiza ndi Kuyesa Mafunde RIDE dApp
Waves Explorer. Ntchito yomwe yangotumizidwa kumene.

Maupangiri ena pa Surfboard:

1. Kuti muyese malo a testnet, gwiritsani ntchito:

surfboard test --env=testnet

Pezani zizindikiro zoyesa

2. Ngati mukufuna kuwona matembenuzidwe a JSON ndi momwe amasinthidwira ndi node, yesani kuyesa ndi -v (kutanthauza 'verbose'):

surfboard test -v

Kugwiritsa ntchito mapulogalamu okhala ndi Waves Keeper

1. Konzani Waves Keeper kuti agwire ntchito: http://localhost:6869

Momwe Mungamangire, Kutumiza ndi Kuyesa Mafunde RIDE dApp
Kukhazikitsa Waves Keeper kuti azigwira ntchito ndi node yakomweko

2. Lowetsani mawu achinsinsi okhala ndi zizindikiro za netiweki? Kuti mukhale osavuta, gwiritsani ntchito mbewu yoyamba ya node yanu: waves private node seed with waves tokens. Adilesi: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Mutha kugwiritsa ntchito tsamba limodzi lopanda seva pogwiritsa ntchito npm. Kapena pitani ku yomwe ilipo: chrome-ext.wvservices.com/dapp-wallet.html

4. Lowetsani adiresi ya chikwama kuchokera pamayesero (olembedwa pamwamba) mu bokosi la mawu adiresi ya dApp

5. Lowetsani pang'ono mu gawo la "Deposit" ndikudina batani:

Momwe Mungamangire, Kutumiza ndi Kuyesa Mafunde RIDE dApp
Waves Keeper apempha chilolezo kuti asaine InvokeScriptTransaction ndi kulipira 10 WAVES.

6. Tsimikizirani zomwe zachitika:

Momwe Mungamangire, Kutumiza ndi Kuyesa Mafunde RIDE dApp
Ntchitoyi idapangidwa ndikuwulutsidwa ku netiweki. Tsopano mutha kuwona ID yake

7. Yang'anirani zochitikazo pogwiritsa ntchito Waves Explorer. Lowetsani ID mukusaka

Momwe Mungamangire, Kutumiza ndi Kuyesa Mafunde RIDE dApp

Mapeto ndi zina zowonjezera

Tidayang'ana zida zopangira, kuyesa, kutumiza ndi kugwiritsa ntchito ma dApps osavuta pa Waves Platform:

  • RIDE chilankhulo
  • VS Code Editor
  • Mafunde Explorer
  • Zowonjezera
  • Waves Keeper

Maulalo kwa omwe akufuna kupitiliza kuphunzira RIDE:

Zitsanzo zina
Online IDE yokhala ndi zitsanzo
Waves Documentation
Macheza oyambitsa mu Telegraph
Mafunde ndi kukwera pa stackoverflow
CHATSOPANO! Maphunziro a pa intaneti pakupanga dApps pa Waves Platform

Pitilizani kulowa mumutu wa RIDE ndikupanga dApp yanu yoyamba!

TL; DR: bit.ly/2YCFnwY

Source: www.habr.com

Kuwonjezera ndemanga