Sida loo dhiso, loo hawlgeliyo oo loo tijaabiyo mowjadaha RIDE dApp

Hello! Maqaalkan waxaan ku tusi doonaa sida loo qoro oo loo maamulo dApp joogto ah oo ku yaal marinka hirarka. Aynu eegno qalabka lagama maarmaanka ah, hababka iyo tusaale horumarka.

Sida loo dhiso, loo hawlgeliyo oo loo tijaabiyo mowjadaha RIDE dApp

Qorshaha horumarinta ee dApps iyo codsiyada caadiga ah waa isku mid:

  • Koodhka qoraalka
  • Qoritaanka tijaabada tooska ah
  • Daahfurka codsiga
  • Tijaabinaya

alaabtii

1. docker si ay u ordaan node iyo Waves Explorer

Haddii aadan rabin inaad bilowdo noode, waad ka boodi kartaa tallaabadan. Ka dib oo dhan, waxaa jira tijaabo iyo shabakad tijaabo ah. Laakin adiga oo aan geynin noodhkaaga, habka imtixaanku wuu sii socon karaa.

  • Waxaad si joogto ah ugu baahan doontaa xisaabaadyo cusub oo leh calaamado tijaabo ah. Tuubada shabkada tijaabadu waxa ay gudbisaa 10 WAVES 10kii daqiiqaba.
  • Celceliska waqtiga xannibaadda ee shabakada tijaabada waa 1 daqiiqo, gudaha noodhka - 15 ilbiriqsi. Tani waxay si gaar ah loo dareemi karaa marka wax kala iibsigu u baahan yahay xaqiijinno badan.
  • Xiritaanka gardarada ah ayaa suurtagal ku ah qanjidhada baaritaanka dadweynaha.
  • Waxa kale oo laga yaabaa inay si ku meel gaar ah u heli waayaan dayactirka awgeed.

Hadda wixii ka dambeeya waxaan u qaadan doonaa inaad ku shaqaynayso noodhkaaga.

2. Qalabka Talisyada Surfboard

  • Soo deji oo ku rakib Node.js addoo isticmaalaya ppa, homebrew ama exe halkan: https://nodejs.org/en/download/.
  • Ku rakib Surfboard, qalab kuu ogolaanaya inaad ku socodsiiso imtixaanada noodhka jira.

npm install -g @waves/surfboard

3. Visual Studio Code plugin

Talaabadani waa ikhtiyaari haddii aanad taageere u ahayn IDE-yada oo aad door bidayso tifaftirayaasha qoraalka. Dhammaan qalabka lagama maarmaanka ah waa utility line line. Haddii aad isticmaasho vim, u fiirso plugin vim-fuulid.

Soo deji oo rakib Visual Studio Code: https://code.visualstudio.com/

Fur VS Code oo ku dheji plugin mowjadaha raacda:

Sida loo dhiso, loo hawlgeliyo oo loo tijaabiyo mowjadaha RIDE dApp

Waves Keeper fidinta browserka: https://wavesplatform.com/products-keeper

Doon!

Bilow noode iyo Waves Explorer

1. Bilow noodhka:

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

Hubi in noodhka laga bilaabay REST API gudaha http://localhost:6869:

Sida loo dhiso, loo hawlgeliyo oo loo tijaabiyo mowjadaha RIDE dApp
Swagger REST API ee noode

2. Bilow tusaale ahaan Waves Explorer:

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

Fur browser oo tag http://localhost:3000. Waxaad arki doontaa sida ugu dhakhsaha badan ee loo dhisay wareegga noode maxalli ah.

Sida loo dhiso, loo hawlgeliyo oo loo tijaabiyo mowjadaha RIDE dApp
Waves Explorer waxay soo bandhigaysaa tusaale node maxalli ah

Qaab dhismeedka RIDE iyo qalabka Surfboard

Samee hage madhan oo ku socodsii amarka dhexdiisa

surfboard init

Amarka waxa uu bilaabayaa hagaha qaab dhismeedka mashruuca, "hello world" codsiyada iyo imtixaanada. Haddii aad galkan ku furto VS Code, waxaad arki doontaa:

Sida loo dhiso, loo hawlgeliyo oo loo tijaabiyo mowjadaha RIDE dApp
Surfboard.config.json

  • Hoosta ./ride/ folder waxaad ka heli doontaa hal fayl wallet.ride - tusaha uu ku yaalo koodka dApp. Waxaan si kooban u falanqeyn doonaa dApps qeybta xigta.
  • Hoosta ./test/ folder waxaad ka heli doontaa faylka * .js. Tijaabooyinku waxay ku kaydsan yihiin halkan
  • ./surfboard.config.json - faylka qaabeynta ee imtixaannada socda.

Envs waa qayb muhiim ah. Deegaan kasta waxa loo habeeyey sidan:

  • REST API ee meesha ugu dambaysa ee noodhka loo isticmaali doono in lagu bilaabo dAppka iyo CHAIN_ID ee shabakada
  • Weedho sir ah oo loogu talagalay akoon leh calaamado kuwaas oo noqon doona ilaha calaamadaha imtixaankaaga.

Sida aad arki karto, surfboard.config.json waxay si caadi ah u taageertaa bey'ado badan. Asal ahaan waa deegaanka deegaanka (furaha defaultEnv waa halbeeg la bedeli karo).

Codsiga boorsada-demo

Qaybtani tixraac uma aha luqadda RIDE. Hase yeeshe, fiiri arjiga aan dirno oo tijaabino si aan si fiican u fahanno waxa ka dhacaya blockchain.

Aynu eegno codsi fudud ee Wallet-demo. Qof kasta ayaa calaamado u diri kara ciwaanka dApp. Waxaad la laaban kartaa MOwjadahaaga oo kaliya. Laba @Callable hawlood ayaa laga heli karaa InvokeScriptTransaction:

  • deposit()kaas oo u baahan lacag bixin ku lifaaqan MOwjadaha
  • withdraw(amount: Int)taasoo soo celinaysa calaamadihii

Inta lagu jiro wareegga nolosha dApp, qaab dhismeedka (cinwaanka → qaddarka) waa la ilaalin doonaa:

Action
Xaaladda ka dhalatay

bilowga ah
madhan

Alice waxay dhigataa 5 mowjadood
aice-cinwaanka → 500000000

Bob wuxuu dhigaa 2 MOwjadood

aice-cinwaanka → 500000000
bob-cinwaanka → 200000000

Bob wuxuu la baxay 7 MOwjadaha
DIIDAY!

Alice waxay ka laabatay 4 mowjadood
aice-cinwaanka → 100000000
bob-cinwaanka → 200000000

Waa kan koodka si loo fahmo xaaladda:

# 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

Koodhka muunada waxa kale oo laga heli karaa GitHub.

Qalabka VSCode wuxuu taageeraa isku-dubbarid joogto ah marka faylka la tafatirayo. Sidaa darteed, waxaad had iyo jeer la socon kartaa khaladaadka ku jira tab DHIBAATOOYINKA.

Sida loo dhiso, loo hawlgeliyo oo loo tijaabiyo mowjadaha RIDE dApp
Haddii aad rabto inaad isticmaasho tifaftire qoraal oo ka duwan markaad ururinayso faylka, isticmaal

surfboard compile ride/wallet.ride

Tani waxay soo saari doontaa taxane ah base64 oo la soo ururiyey RIDE code.

Tijaabi qoraalka qoraalka 'wallet.ride'

Aan eegno faylka tijaabada. Waxaa ku shaqeeya qaabka Mocha JavaScript. Waxaa jira hawl "ka hor" iyo saddex imtixaan:

  • "Kahor" waxay ku maalgelisaa xisaabaadyo badan iyada oo loo marayo MassTransferTransaction, waxay ururisaa qoraalka oo geysaa blockchain.
  • "Can deposit" waxay u soo dirtaa InvokeScriptTransaction shabakada, iyada oo hawlgelinaysa deebaajiga() shaqada mid kasta oo ka mid ah labada akoon.
  • "Lama noqon karo wax ka badan intii la dhigay" imtixaanada aan qofna xadi karin calaamadaha dadka kale.
  • "Can deposit" waxay xaqiijisaa in lacag bixinta si sax ah loo maamulay.

Tijaabooyin ka samee Surfboard oo ku baar natiijooyinka gudaha Waves Explorer

Si aad imtixaanka u socodsiiso, orod

surfboard test

Haddii aad haysato qoraallo badan (tusaale ahaan, waxaad u baahan tahay qoraal geyn gooni ah), waad ordi kartaa

surfboard test my-scenario.js

Surfboard-ka ayaa ku ururin doona faylalka tijaabada ./test/ folder oo ku maamuli doona qoraalka qanjirada loo habeeyey surfboard.config.json. Dhowr ilbiriqsi ka dib waxaad arki doontaa wax sidan oo kale ah:

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! Tijaabooyin waa la baasay. Hadda aan eegno waxa dhaca marka la isticmaalayo Waves Explorer: fiiri blocks ama ku dheji mid ka mid ah ciwaannada sare raadinta (tusaale ahaan, u dhigma. wallet#. Halkaa waxaad ka heli kartaa taariikhda wax kala iibsiga, heerka dApp, faylka binary-ga ee la burburiyay.

Sida loo dhiso, loo hawlgeliyo oo loo tijaabiyo mowjadaha RIDE dApp
Waves Explorer. Codsi hadda la geeyay

Qaar ka mid ah Talooyinka Surfboard:

1. Si aad u tijaabiso deegaanka testnet, isticmaal:

surfboard test --env=testnet

Hel calaamadaha tijaabada

2. Haddii aad rabto inaad aragto noocyada JSON ee wax kala iibsiga iyo sida loogu habeeyo noodhka, ku tijaabi tijaabada -v (macnaheedu waa 'verbose'):

surfboard test -v

Isticmaalka abka leh Waves Keeper

1. U deji Waves Keeper si uu u shaqeeyo: http://localhost:6869

Sida loo dhiso, loo hawlgeliyo oo loo tijaabiyo mowjadaha RIDE dApp
Dejinta Waves Keeper si ay ula shaqeyso noode maxalli ah

2. Soo deji kelmad sir ah oo leh calaamado shabakada? Si ay u fududaato, isticmaal iniinta bilowga ah ee noodhkaaga: waves private node seed with waves tokens. Cinwaanka: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Adiga laftaadu waxaad samayn kartaa codsi bilaa server ah adoo isticmaalaya npm. Ama u tag kan jira: chrome-ext.wvservices.com/dapp-wallet.html

4. Geli ciwaanka boorsada laga soo bilaabo socodsiinta tijaabada (kor ku xusan) sanduuqa qoraalka ciwaanka dApp

5. Geli qadar yar goobta "Deposit" oo guji badhanka:

Sida loo dhiso, loo hawlgeliyo oo loo tijaabiyo mowjadaha RIDE dApp
Waves Keeper waxa uu codsadaa ogolaansho si uu u saxiixo InvokeScriptTransaction oo uu bixiyo 10 WAVES.

6. Xaqiiji wax kala iibsiga:

Sida loo dhiso, loo hawlgeliyo oo loo tijaabiyo mowjadaha RIDE dApp
Wax kala iibsiga ayaa la abuuray oo lagu sii daayaa shabakada. Hadda waxaad arki kartaa aqoonsigeeda

7. La soco macaamilka adiga oo isticmaalaya Waves Explorer. Geli aqoonsiga goobta raadinta

Sida loo dhiso, loo hawlgeliyo oo loo tijaabiyo mowjadaha RIDE dApp

Gabagabo iyo xog dheeri ah

Waxaan eegnay qalabka lagu horumarinayo, tijaabinta, geynta iyo adeegsiga dApps fudud ee Waves Platform:

  • Luqadda RIDE
  • VS Code Editor
  • Waves Explorer
  • Surfboard
  • Mawjado ilaaliye

Xiriirinta kuwa raba inay sii wataan waxbarashada RIDE:

Tusaalooyin badan
IDE khadka tooska ah oo leh tusaalayaal
Dukumentiyada Mowjadaha
Wada sheekaysiga horumariyaha ee Telegram
Mowjadaha iyo RIDE socodka qulqulka badan
CUSUB! Koorasyada khadka tooska ah ee ku saabsan abuurista dApps ee Mawjadaha Waves Platform

Sii wad inaad dhex gasho mawduuca RIDE oo samee dApkaaga ugu horreeya!

TL, DR: bit.ly/2YCFnwY

Source: www.habr.com

Add a comment