Jinsi ya Kujenga, Kupeleka na Kujaribu Mawimbi RIDE dApp

Habari! Katika makala hii nitakuonyesha jinsi ya kuandika na kuendesha dApp ya kawaida kwenye node ya Waves. Hebu tuangalie zana muhimu, mbinu na mfano wa maendeleo.

Jinsi ya Kujenga, Kupeleka na Kujaribu Mawimbi RIDE dApp

Mpango wa maendeleo wa dApps na programu za kawaida ni karibu sawa:

  • Nambari ya kuandika
  • Kuandika majaribio ya kiotomatiki
  • Kuzindua maombi
  • Kupima

Vyombo vya

1. docker kuendesha nodi na Waves Explorer

Ikiwa hutaki kuanzisha nodi, unaweza kuruka hatua hii. Baada ya yote, kuna mtandao wa majaribio na majaribio. Lakini bila kupeleka nodi yako mwenyewe, mchakato wa majaribio unaweza kuendelea.

  • Utahitaji akaunti mpya kila wakati na tokeni za majaribio. Bomba la mtandao wa majaribio huhamisha WAVES 10 kila baada ya dakika 10.
  • Wakati wa wastani wa kuzuia kwenye mtandao wa mtihani ni dakika 1, katika node - sekunde 15. Hii inaonekana hasa wakati shughuli inahitaji uthibitisho mwingi.
  • Uakibishaji mkali unawezekana kwenye nodi za majaribio za umma.
  • Huenda pia zisipatikane kwa muda kutokana na matengenezo.

Kuanzia sasa nitafikiria kuwa unafanya kazi na nodi yako mwenyewe.

2. Chombo cha Mstari wa Amri ya Surfboard

  • Pakua na usakinishe Node.js kwa kutumia ppa, homebrew au exe hapa: https://nodejs.org/en/download/.
  • Sakinisha Ubao wa Surf, chombo kinachokuwezesha kufanya majaribio kwenye nodi iliyopo.

npm install -g @waves/surfboard

3. Programu-jalizi ya Msimbo wa Visual Studio

Hatua hii ni ya hiari ikiwa wewe si shabiki wa IDE na unapendelea vihariri vya maandishi. Zana zote muhimu ni huduma za mstari wa amri. Ikiwa unatumia vim, makini na programu-jalizi vim-safari.

Pakua na usakinishe Msimbo wa Visual Studio: https://code.visualstudio.com/

Fungua Msimbo wa VS na usakinishe programu-jalizi ya safari ya mawimbi:

Jinsi ya Kujenga, Kupeleka na Kujaribu Mawimbi RIDE dApp

Kiendelezi cha kivinjari cha Waves Keeper: https://wavesplatform.com/products-keeper

Imefanyika!

Anzisha nodi na Waves Explorer

1. Anzisha nodi:

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

Hakikisha kuwa nodi imezinduliwa kupitia REST API ndani http://localhost:6869:

Jinsi ya Kujenga, Kupeleka na Kujaribu Mawimbi RIDE dApp
Swagger REST API ya nodi

2. Anza mfano wa Waves Explorer:

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

Fungua kivinjari na uende http://localhost:3000. Utaona jinsi mzunguko wa nodi wa eneo tupu hujengwa haraka.

Jinsi ya Kujenga, Kupeleka na Kujaribu Mawimbi RIDE dApp
Waves Explorer huonyesha mfano wa nodi za ndani

RIDE muundo na Surfboard chombo

Unda saraka tupu na uendesha amri ndani yake

surfboard init

Amri huanzisha saraka na muundo wa mradi, programu na majaribio ya "hello world". Ukifungua folda hii na Msimbo wa VS, utaona:

Jinsi ya Kujenga, Kupeleka na Kujaribu Mawimbi RIDE dApp
Surfboard.config.json

  • Chini ya ./ride/ folda utapata faili moja wallet.ride - saraka ambapo msimbo wa dApp iko. Tutachambua kwa ufupi dApps katika block inayofuata.
  • Chini ya ./test/ folda utapata faili ya *.js. Majaribio yanahifadhiwa hapa.
  • ./surfboard.config.json - faili ya usanidi kwa ajili ya kufanya majaribio.

Envs ni sehemu muhimu. Kila mazingira yameundwa kama hii:

  • Sehemu ya mwisho ya API ya REST ya nodi ambayo itatumika kuzindua dApp na CHAIN_ID ya mtandao.
  • Neno la siri la akaunti iliyo na tokeni ambazo zitakuwa vyanzo vya tokeni zako za majaribio.

Kama unavyoona, surfboard.config.json inaauni mazingira mengi kwa chaguo-msingi. Chaguo-msingi ni mazingira ya ndani (kitufe cha defaultEnv ni parameta inayoweza kubadilika).

Programu ya onyesho la Wallet

Sehemu hii si rejeleo la lugha ya RIDE. Badala yake, angalia programu ambayo tunatuma na kujaribu ili kuelewa vyema kile kinachotokea kwenye blockchain.

Wacha tuangalie programu rahisi ya onyesho la Wallet. Mtu yeyote anaweza kutuma tokeni kwa anwani ya dApp. Unaweza tu kuondoa MAWIMBI yako. Vitendaji viwili vya @Callable vinapatikana kupitia InvokeScriptTransaction:

  • deposit()ambayo inahitaji malipo yaliyoambatishwa katika WAVES
  • withdraw(amount: Int)ambayo inarudisha ishara

Katika kipindi chote cha maisha ya dApp, muundo (anwani β†’ kiasi) utadumishwa:

hatua
Hali ya matokeo

awali
tupu

Alice amana 5 WAVES
alice-anwani β†’ 500000000

Bob amana 2 WAVES

alice-anwani β†’ 500000000
bob-anwani β†’ 200000000

Bob atoa MAWIMBI 7
IMEKANUSHWA!

Alice atoa MAWIMBI 4
alice-anwani β†’ 100000000
bob-anwani β†’ 200000000

Hapa kuna nambari ya kuelewa hali hiyo kikamilifu:

# 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

Nambari ya sampuli pia inaweza kupatikana kwa GitHub.

Programu-jalizi ya VSCode inasaidia ujumuishaji unaoendelea wakati wa kuhariri faili. Kwa hiyo, unaweza daima kufuatilia makosa katika kichupo cha PROBLEMS.

Jinsi ya Kujenga, Kupeleka na Kujaribu Mawimbi RIDE dApp
Ikiwa unataka kutumia kihariri tofauti cha maandishi wakati wa kuunda faili, tumia

surfboard compile ride/wallet.ride

Hii itatoa msururu wa msimbo wa RIDE uliojumuishwa wa base64.

Hati ya majaribio ya 'wallet.ride'

Hebu tuangalie faili ya mtihani. Inaendeshwa na mfumo wa Mocha wa JavaScript. Kuna chaguo la kukokotoa "Kabla" na majaribio matatu:

  • "Kabla" hufadhili akaunti nyingi kupitia MassTransferTransaction, hukusanya hati na kuipeleka kwa blockchain.
  • "Anaweza kuweka" hutuma InvokeScriptTransaction kwa mtandao, na kuwezesha kipengele cha deposit() kwa kila akaunti mbili.
  • majaribio ya "Haiwezi kutoa zaidi ya ilivyowekwa" ambayo hakuna mtu anayeweza kuiba tokeni za watu wengine.
  • "Anaweza kuweka" hukagua kuwa uondoaji unachakatwa ipasavyo.

Fanya majaribio kutoka Ubao wa Kuvinjari na uchanganue matokeo katika Waves Explorer

Ili kuendesha jaribio, endesha

surfboard test

Ikiwa una hati nyingi (kwa mfano, unahitaji hati tofauti ya kupeleka), unaweza kukimbia

surfboard test my-scenario.js

Surfboard itakusanya faili za majaribio katika ./test/ folda na kuendesha hati kwenye nodi ambayo imesanidiwa katika surfboard.config.json. Baada ya sekunde chache utaona kitu kama hiki:

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! Majaribio yamepita. Sasa hebu tuangalie kile kinachotokea wakati wa kutumia Waves Explorer: angalia vizuizi au ubandike moja ya anwani hapo juu kwenye utaftaji (kwa mfano, inayolingana. wallet#. Huko unaweza kupata historia ya muamala, hali ya dApp, faili ya binary iliyoharibika.

Jinsi ya Kujenga, Kupeleka na Kujaribu Mawimbi RIDE dApp
Waves Explorer. Programu ambayo imetumwa hivi punde.

Baadhi ya Vidokezo vya Ubao wa Kuteleza Mawimbi:

1. Ili kujaribu katika mazingira ya testnet, tumia:

surfboard test --env=testnet

Pata tokeni za majaribio

2. Ikiwa unataka kuona matoleo ya JSON ya shughuli na jinsi yanavyochakatwa na nodi, endesha jaribio na -v (inamaanisha 'verbose'):

surfboard test -v

Kutumia programu zilizo na Waves Keeper

1. Sanidi Kilinda Mawimbi kufanya kazi: http://localhost:6869

Jinsi ya Kujenga, Kupeleka na Kujaribu Mawimbi RIDE dApp
Kuweka Mlinzi wa Waves kufanya kazi na nodi ya ndani

2. Leta maneno ya siri yenye ishara za mtandao? Kwa unyenyekevu, tumia mbegu ya awali ya nodi yako: waves private node seed with waves tokens. Anwani: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Unaweza kuendesha programu tumizi ya ukurasa mmoja isiyo na seva mwenyewe kwa kutumia npm. Au nenda kwa ile iliyopo: chrome-ext.wvservices.com/dapp-wallet.html

4. Ingiza anwani ya pochi kutoka kwa jaribio (iliyopigiwa mstari hapo juu) kwenye kisanduku cha maandishi cha anwani ya dApp.

5. Ingiza kiasi kidogo kwenye uwanja wa "Amana" na ubofye kitufe:

Jinsi ya Kujenga, Kupeleka na Kujaribu Mawimbi RIDE dApp
Waves Keeper anaomba ruhusa ya kutia saini InvokeScriptTransaction kwa malipo ya WAVES 10.

6. Thibitisha shughuli:

Jinsi ya Kujenga, Kupeleka na Kujaribu Mawimbi RIDE dApp
Muamala unaundwa na kutangazwa kwa mtandao. Sasa unaweza kuona kitambulisho chake

7. Fuatilia muamala kwa kutumia Waves Explorer. Ingiza kitambulisho katika sehemu ya utafutaji

Jinsi ya Kujenga, Kupeleka na Kujaribu Mawimbi RIDE dApp

Hitimisho na maelezo ya ziada

Tuliangalia zana za kuunda, kujaribu, kupeleka na kutumia dApps rahisi kwenye Jukwaa la Waves:

  • RIDE lugha
  • Mhariri wa Msimbo wa VS
  • Mawimbi Explorer
  • Ubao wa kuteleza kwenye mawimbi
  • Mawimbi Askari

Viungo kwa wale wanaotaka kuendelea kujifunza RIDE:

Mifano zaidi
IDE ya mtandaoni yenye mifano
Nyaraka za Mawimbi
Gumzo la wasanidi programu kwenye Telegraph
Mawimbi na RIDE kwenye stackoverflow
MPYA! Kozi za mtandaoni za kuunda dApps kwenye Jukwaa la Waves

Endelea kupiga mbizi kwenye mada ya RIDE na uunde dApp yako ya kwanza!

TL; DR: bit.ly/2YCFnwY

Chanzo: mapenzi.com

Kuongeza maoni