Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp

Kia ora! I roto i tenei tuhinga ka whakaatu ahau ki a koe me pehea te tuhi me te whakahaere i tetahi dApp auau i runga i te Waves node. Me titiro ki nga taputapu e tika ana, nga tikanga me tetahi tauira o te whanaketanga.

Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp

He rite tonu te kaupapa whanaketanga mo nga dApps me nga tono auau:

  • Waehere tuhi
  • Te tuhi whakamatautau aunoa
  • Te whakarewa i te tono
  • Whakamatau

Utauta

1. docker hei whakahaere i te node me te Waves Explorer

Ki te kore koe e pirangi ki te timata i te node, ka taea e koe te peke i tenei taahiraa. I muri i nga mea katoa, he whakamatautau me te whatunga whakamatautau. Engari me te kore e tuku i a koe ake node, ka toia pea te tukanga whakamatautau.

  • Ka hiahia koe ki nga kaute hou me nga tohu whakamatautau. Ka whakawhitihia e te korere whatunga whakamatautau 10 NGA NGARU ia 10 meneti.
  • Ko te wa poraka toharite i roto i te whatunga whakamatautau he 1 meneti, i roto i te node - 15 hēkona. Ka tino kitea tenei ina he maha nga whakapumautanga o te tauwhitinga.
  • Ka taea te keteroki pukuriri i runga i nga waahanga whakamatautau a te iwi.
  • Karekau pea i te waatea mo te wa poto na te tiaki.

Mai i tenei wa ka whakaaro ahau kei te mahi koe me to ake node.

2. Utauta Raina Whakahau Papa Ngaru

  • Tikiake me te whakauru i a Node.js ma te whakamahi ppa, homebrew, exe ranei i konei: https://nodejs.org/en/download/.
  • Tāutahia te Papa Ngarue, he taputapu e taea ai e koe te whakahaere i nga whakamatautau ki runga i tetahi node o naianei.

npm install -g @waves/surfboard

3. Visual Studio Waehere mono mono

Ko tenei taahiraa he mea kowhiri mena kaore koe i te powhiriwhiri ki nga IDE me te pai ki nga kaiwhakatika tuhinga. Ko nga taputapu e tika ana ko nga taputapu raina whakahau. Mena ka whakamahi koe i te vim, whakarongo ki te mono vim-ride.

Tikiake me te tāuta Visual Studio Code: https://code.visualstudio.com/

Whakatuwherahia te Waehere VS me te whakauru i te mono-rere:

Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp

Toronga pūtirotiro Waves Keeper: https://wavesplatform.com/products-keeper

Kua oti!

Tīmatahia te kōpuku me te Waves Explorer

1. Tīmatahia te kōpuku:

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

Kia mohio kei te whakarewahia te node ma te REST API in http://localhost:6869:

Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp
Swagger REST API mo te node

2. Tīmatahia he tauira o Waves Explorer:

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

Whakatuwheratia he kaitirotiro ka haere ki http://localhost:3000. Ka kite koe i te tere o te hanga i tetahi ara iahiko node paetata.

Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp
Ka whakaatu a Waves Explorer i tetahi tauira node paetata

Hanganga RIDE me te taputapu papa ngaru

Waihangahia he whaiaronga kau ka whakahaere i te whakahau ki roto

surfboard init

Ka arawhiti te whakahau i te raarangi me te hanganga kaupapa, nga tono me nga whakamatautau "kia ora te ao". Mena ka whakatuwhera koe i tenei kōpaki me te VS Code, ka kite koe:

Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp
Surfboard.config.json

  • I raro i te kōpaki ./ride/ ka kitea e koe he putea putea kotahi.ride - te whaiaronga kei reira te waehere dApp. Ka tātari poto matou i nga dApps i te poraka e whai ake nei.
  • I raro i te kōpaki ./test/ ka kitea he *.js kōnae. Ka penapenahia nga whakamatautau ki konei.
  • ./surfboard.config.json – konae whirihoranga mo nga whakamatautau whakahaere.

Ko Envs tetahi waahanga nui. Kua whirihorahia ia taiao penei:

  • REST API mutunga o te node ka whakamahia hei whakarewa i te dApp me CHAIN_ID o te whatunga.
  • He kupu huna mo te kaute me nga tohu ka waiho hei puna mo o tohu whakamatautau.

Ka kite koe, ka tautokohia e surfboard.config.json nga taiao maha ma te taunoa. Ko te taunoa ko te taiao-a-rohe (ko te taviri defaultEnv he tawhā huri).

Tono putea-demo

Ehara tenei wahanga i te korero mo te reo RIDE. Engari, titiro ki te tono ka tukuna e matou ka whakamatautau kia pai ake ai te mohio ki nga mea e tupu ana i roto i te poraka.

Kia titiro tatou ki tetahi tono Pukoro-demo ngawari. Ka taea e te tangata te tuku tohu ki tetahi wahitau dApp. Ka taea e koe te tango i to WAVES anake. E rua nga mahi @Callable e waatea ana ma te InvokeScriptTransaction:

  • deposit()me whai utu taapiri i WAVES
  • withdraw(amount: Int)e whakahoki mai ana i nga tohu

Puta noa i te huringa ora o dApp, ka mau tonu te hanganga (whitau → moni):

Mahi
Te ahua hua

tuatahi
kore

E 5 nga ngaru ka tukuna e Alice
wāhitau alice → 500000000

E rua nga ngaru ka tukuna e Bob

wāhitau alice → 500000000
bob-address → 200000000

Ka tangohia e Bob nga ngaru e 7
KAUPAPA!

Ka tangohia e Alice nga ngaru e 4
wāhitau alice → 100000000
bob-address → 200000000

Anei te waehere kia tino mohio ki te ahuatanga:

# 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

Ka kitea hoki te waehere tauira i GitHub.

Ko te mono VSCode e tautoko ana i te whakahiato tonu i te wa e whakatika ana i tetahi konae. Na reira, ka taea e koe te aro turuki i nga hapa i te ripa PROBLEMS.

Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp
Ki te hiahia koe ki te whakamahi i tetahi ētita kuputuhi rereke i te wa e whakahiato ana i te konae, whakamahia

surfboard compile ride/wallet.ride

Ma tenei ka whakaputa i te raupapa o te waehere RIDE kua whakahiatohia e base64.

Whakamātautau hōtuhi mō 'wallet.ride'

Kia titiro tatou ki kōnae whakamātautau. Whakamanahia e te anga Mocha a JavaScript. He mahi "I mua" me nga whakamatautau e toru:

  • "I mua" ka putea nga kaute maha ma te MassTransferTransaction, ka whakahiatohia te tuhinga ka tukuna ki te poraka.
  • "Ka taea te whakatakoto" ka tukuna he InvokeScriptTransaction ki te whatunga, ka whakahohe i te mahi putunga() mo ia o nga kaute e rua.
  • “Kaore e taea te tango atu i nga mea i penapenahia” nga whakamatautau e kore e taea e tetahi te tahae nga tohu a etahi atu.
  • "Ka taea te whakatakoto" he tirotiro kei te tika te tukatuka o nga tangohanga.

Whakahaerehia nga whakamatautau mai i te Papa Ngaru me te tātari i nga hua i Waves Explorer

Hei whakahaere i te whakamatautau, rere

surfboard test

Mēnā he maha ō hōtuhi (hei tauira, ka hiahia koe ki tētahi hōtuhi whakatakotoranga motuhake), ka taea e koe te whakahaere

surfboard test my-scenario.js

Ka kohia e te papa ngaru nga konae whakamatautau i roto i te kōpaki ./test/ ka whakahaere i te hōtuhi i runga i te pona kua whirihorahia ki surfboard.config.json. Whai muri i etahi hēkona ka kite koe i tetahi mea penei:

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)

Hore! Kua paahitia nga whakamatautau. Inaianei me titiro tatou ki nga mea ka pa ki te whakamahi Waves Explorer: tirohia nga poraka, whakapiri ranei tetahi o nga wahitau i runga ake nei ki te rapu (hei tauira, wallet#. I reira ka kitea e koe te hitori tauwhitinga, te mana dApp, te konae rua kua whakahiatohia.

Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp
Waves Explorer. He tono katahi ano ka tukuna.

Ētahi Tohutohu Papa Ngarue:

1. Hei whakamatautau i te taiao testnet, whakamahia:

surfboard test --env=testnet

Tikina nga tohu whakamatautau

2. Ki te hiahia koe ki te kite i nga putanga JSON o nga tauwhitinga me te pehea e whakahaerea ai e te node, whakahaerehia te whakamatautau me te -v (ko te tikanga 'verbose'):

surfboard test -v

Te whakamahi taupānga me Waves Keeper

1. Whakaritea te Waves Keeper ki te mahi: http://localhost:6869

Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp
Te whakatu Waves Keeper ki te mahi me te node rohe

2. Kawemai he kupu huna me nga tohu mo te whatunga? Mo te ngawari, whakamahia te kakano tuatahi o to node: waves private node seed with waves tokens. Wāhi noho: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Ka taea e koe te whakahaere i tetahi tono wharangi korekore ma te whakamahi npm. Haere ranei ki te mea o mua: chrome-ext.wvservices.com/dapp-wallet.html

4. Whakauruhia te wahitau putea mai i te oma whakamatautau (kua tohua ki runga ake nei) ki roto i te pouaka kuputuhi wahitau dApp

5. Whakauruhia he moni iti ki te mara "Tapu" ka paato i te paatene:

Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp
Ka tono whakaaetanga a Waves Keeper ki te haina i tetahi InvokeScriptTransaction me te utu 10 WAVES.

6. Whakaū te tauwhitinga:

Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp
Ka hangaia te tauwhitinga me te haapurorohia ki te whatunga. Inaianei ka kite koe i tana ID

7. Aroturuki i te tauwhitinga ma te Waves Explorer. Whakauruhia he ID ki te waahi rapu

Me pehea te Hanga, te Hoatu me te Whakamatau Ngaru RIDE dApp

Nga whakatau me etahi atu korero

I titiro matou ki nga taputapu mo te whakawhanake, te whakamatautau, te whakamahi me te whakamahi i nga dApps ngawari i runga i te Waves Platform:

  • reo RIDE
  • VS Kaiwhakatika Waehere
  • Waves Explorer
  • Papa Papaata
  • Kaitiaki Ngaru

He hononga mo te hunga e hiahia ana ki te ako tonu i te RIDE:

He tauira atu
IDE ipurangi me nga tauira
Nga Ngaru Tuhinga
Kōrerorero kaiwhakawhanake i Telegram
Nga ngaru me te RIDE i runga i te stackoverflow
HOU! Nga akoranga ipurangi mo te hanga dApps i runga i te Waves Platform

Haere tonu ki te ruku ki te kaupapa RIDE me te hanga i to dApp tuatahi!

TL; DR: bit.ly/2YCFnwY

Source: will.com

Tāpiri i te kōrero