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.
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.
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
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.
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.
Waves Explorer. Codsi hadda la geeyay
Qaar ka mid ah Talooyinka Surfboard:
1. Si aad u tijaabiso deegaanka testnet, isticmaal:
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.