ආයුබෝවන්! මෙම ලිපියෙන් මම ඔබට Waves node එකක් මත සාමාන්ය dApp එකක් ලිවීමට සහ ක්රියාත්මක කරන්නේ කෙසේදැයි පෙන්වන්නම්. අවශ්ය මෙවලම්, ක්රම සහ සංවර්ධනය පිළිබඳ උදාහරණයක් දෙස බලමු.
dApps සහ සාමාන්ය යෙදුම් සඳහා වන සංවර්ධන යෝජනා ක්රමය බොහෝ දුරට සමාන වේ:
- ලිවීමේ කේතය
- ස්වයංක්රීය පරීක්ෂණ ලිවීම
- යෙදුම දියත් කිරීම
- පරීක්ෂා කිරීම
මෙවලම්
1. docker
node සහ Waves Explorer ධාවනය කිරීමට
ඔබට නෝඩයක් ආරම්භ කිරීමට අවශ්ය නැතිනම්, ඔබට මෙම පියවර මඟ හැරිය හැක. සියල්ලට පසු, පරීක්ෂණ සහ පර්යේෂණ ජාලයක් ඇත. නමුත් ඔබේම නෝඩය යෙදවීමකින් තොරව, පරීක්ෂණ ක්රියාවලිය ඇදගෙන යා හැක.
- පරීක්ෂණ ටෝකන සහිත නව ගිණුම් ඔබට නිරන්තරයෙන් අවශ්ය වනු ඇත. පරීක්ෂණ ජාල කරාමය සෑම විනාඩි 10 කට වරක් තරංග 10 ක් මාරු කරයි.
- පරීක්ෂණ ජාලයේ සාමාන්ය වාරණ කාලය විනාඩි 1 යි, නෝඩයේ - තත්පර 15 යි. ගනුදෙනුවකට බහුවිධ තහවුරු කිරීම් අවශ්ය වූ විට මෙය විශේෂයෙන් කැපී පෙනේ.
- පොදු පරීක්ෂණ නෝඩ් මත ආක්රමණශීලී හැඹිලි ගත හැකිය.
- නඩත්තු කටයුතු හේතුවෙන් ඒවා තාවකාලිකව ලබා ගැනීමට නොහැකි විය හැකිය.
මෙතැන් සිට මම උපකල්පනය කරන්නේ ඔබ ඔබේම node එකක් සමඟ වැඩ කරන බවයි.
2. Surfboard Command Line මෙවලම
- ppa, homebrew හෝ exe භාවිතයෙන් Node.js බාගත කර ස්ථාපනය කරන්න:
https://nodejs.org/en/download/ . - පවතින නෝඩයක් මත පරීක්ෂණ ධාවනය කිරීමට ඔබට ඉඩ සලසන මෙවලමක් වන Surfboard ස්ථාපනය කරන්න.
npm install -g @waves/surfboard
3. Visual Studio Code ප්ලගිනය
ඔබ IDE වල රසිකයෙක් නොවේ නම් සහ පෙළ සංස්කාරකයන් කැමති නම් මෙම පියවර විකල්ප වේ. අවශ්ය සියලුම මෙවලම් විධාන රේඛා උපයෝගිතා වේ. ඔබ vim භාවිතා කරන්නේ නම්, ප්ලගිනය වෙත අවධානය යොමු කරන්න
Visual Studio කේතය බාගත කර ස්ථාපනය කරන්න:
VS කේතය විවෘත කර waves-ride ප්ලගිනය ස්ථාපනය කරන්න:
Waves Keeper බ්රවුසර දිගුව:
ඉවරයි!
නෝඩය සහ Waves Explorer ආරම්භ කරන්න
1. නෝඩය ආරම්භ කරන්න:
docker run -d -p 6869:6869 wavesplatform/waves-private-node
නෝඩය REST API හරහා දියත් කර ඇති බවට වග බලා ගන්න
නෝඩය සඳහා Swagger REST API
2. Waves Explorer හි අවස්ථාවක් ආරම්භ කරන්න:
docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer
බ්රව්සරයක් විවෘත කර යන්න
Waves Explorer දේශීය නෝඩ් අවස්ථාවක් පෙන්වයි
RIDE ව්යුහය සහ සර්ෆ්බෝඩ් මෙවලම
හිස් නාමාවලියක් සාදා එහි විධානය ක්රියාත්මක කරන්න
surfboard init
විධානය මඟින් ව්යාපෘති ව්යුහය, “හෙලෝ වර්ල්ඩ්” යෙදුම් සහ පරීක්ෂණ සමඟ නාමාවලියක් ආරම්භ කරයි. ඔබ VS කේතය සමඟ මෙම ෆෝල්ඩරය විවෘත කළහොත්, ඔබට පෙනෙනු ඇත:
Surfboard.config.json
- ./ride/ ෆෝල්ඩරය යටතේ ඔබට wallet.ride තනි ගොනුවක් හමුවනු ඇත - dApp කේතය පිහිටා ඇති නාමාවලිය. අපි ඊළඟ කොටසේ dApps කෙටියෙන් විශ්ලේෂණය කරන්නෙමු.
- ./test/ ෆෝල්ඩරය යටතේ ඔබට *.js ගොනුවක් හමුවනු ඇත. පරීක්ෂණ මෙහි ගබඩා කර ඇත.
- ./surfboard.config.json – ධාවන පරීක්ෂණ සඳහා වින්යාස ගොනුව.
Envs වැදගත් කොටසකි. සෑම පරිසරයක්ම මෙලෙස වින්යාස කර ඇත:
- ජාලයේ dApp සහ CHAIN_ID දියත් කිරීමට භාවිතා කරන නෝඩයේ REST API අන්ත ලක්ෂ්යය.
- ඔබගේ පරීක්ෂණ ටෝකන වල මූලාශ්ර වන ටෝකන සහිත ගිණුමක් සඳහා රහස් වාක්ය ඛණ්ඩයක්.
ඔබට පෙනෙන පරිදි, surfboard.config.json පෙරනිමියෙන් බහු පරිසර සඳහා සහය දක්වයි. පෙරනිමිය දේශීය පරිසරයයි (defaultEnv යතුර වෙනස් කළ හැකි පරාමිතියකි).
Wallet-demo යෙදුම
මෙම කොටස RIDE භාෂාවට යොමු කිරීමක් නොවේ. ඒ වෙනුවට, බ්ලොක්චේන් හි සිදුවන්නේ කුමක්ද යන්න වඩා හොඳින් අවබෝධ කර ගැනීමට අප යොදවා පරීක්ෂා කරන යෙදුම දෙස බලන්න.
සරල Wallet-demo යෙදුමක් දෙස බලමු. ඕනෑම කෙනෙකුට dApp ලිපිනයකට ටෝකන යැවිය හැක. ඔබට ආපසු ලබාගත හැක්කේ ඔබේ තරංග පමණි. InvokeScriptTransaction හරහා @Callable ශ්රිත දෙකක් තිබේ:
deposit()
WAVES හි අමුණා ඇති ගෙවීමක් අවශ්ය වේwithdraw(amount: Int)
ටෝකන ආපසු ලබා දෙන
dApp ජීවන චක්රය පුරාවට, ව්යුහය (ලිපිනය → මුදල) පවත්වාගෙන යනු ඇත:
කටයුතු
ප්රතිඵල තත්ත්වය
මූලික
හිස්
ඇලිස් තරංග 5 ක් තැන්පත් කරයි
ඇලිස් ලිපිනය → 500000000
බොබ් තරංග 2 ක් තැන්පත් කරයි
ඇලිස් ලිපිනය → 500000000
bob-ලිපිනය → 200000000
බොබ් තරංග 7 ක් ඉවත් කරයි
ප්රතික්ෂේප කළා!
ඇලිස් තරංග 4 ක් ඉවත් කරයි
ඇලිස් ලිපිනය → 100000000
bob-ලිපිනය → 200000000
තත්වය සම්පූර්ණයෙන්ම තේරුම් ගැනීමට කේතය මෙන්න:
# 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
නියැදි කේතය ද සොයා ගත හැක
VSCode ප්ලගිනය ගොනුවක් සංස්කරණය කිරීමේදී අඛණ්ඩ සම්පාදනය සඳහා සහය දක්වයි. එමනිසා, ඔබට සැමවිටම ගැටළු පටිත්තෙහි දෝෂ නිරීක්ෂණය කළ හැක.
ගොනුව සම්පාදනය කිරීමේදී ඔබට වෙනත් පෙළ සංස්කාරකයක් භාවිතා කිරීමට අවශ්ය නම්, භාවිතා කරන්න
surfboard compile ride/wallet.ride
මෙය Base64 සම්පාදනය කරන ලද RIDE කේතය මාලාවක් ප්රතිදානය කරයි.
'wallet.ride' සඳහා පරීක්ෂණ පිටපත
අපි බලමු
- "පෙර" MassTransferTransaction හරහා බහු ගිණුම් සඳහා අරමුදල් සම්පාදනය කරයි, ස්ක්රිප්ට් සම්පාදනය කර බ්ලොක්චේන් වෙත යොදවයි.
- “තැන්පතු කළ හැක” එක් එක් ගිණුම් දෙක සඳහා තැන්පතු() කාර්යය සක්රිය කරමින් ජාලයට InvokeScript ගනුදෙනුවක් යවයි.
- “තැන්පතු කළ ප්රමාණයට වඩා මුදල් ආපසු ගත නොහැක” කිසිවෙකුට අන් අයගේ ටෝකන සොරකම් කළ නොහැකි පරීක්ෂණ.
- "තැන්පතු කළ හැක" මුදල් ආපසු ගැනීම් නිවැරදිව සකසන ලද චෙක්පත්.
Surfboard වෙතින් පරීක්ෂණ ධාවනය කර Waves Explorer හි ප්රතිඵල විශ්ලේෂණය කරන්න
පරීක්ෂණය ධාවනය කිරීමට, ධාවනය කරන්න
surfboard test
ඔබට ස්ක්රිප්ට් කිහිපයක් තිබේ නම් (උදාහරණයක් ලෙස, ඔබට වෙනම යෙදවුම් ස්ක්රිප්ට් එකක් අවශ්ය වේ), ඔබට ධාවනය කළ හැක
surfboard test my-scenario.js
Surfboard විසින් ./test/ ෆෝල්ඩරය තුළ ඇති පරීක්ෂණ ගොනු එකතු කර surfboard.config.json හි වින්යාස කර ඇති නෝඩය මත ස්ක්රිප්ට් ධාවනය කරයි. තත්පර කිහිපයකට පසු ඔබට මෙවැනි දෙයක් පෙනෙනු ඇත:
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)
හුරේ! පරීක්ෂණ සමත් විය. දැන් අපි Waves Explorer භාවිතා කරන විට කුමක් සිදුවේදැයි බලමු: බ්ලොක් බලන්න හෝ ඉහත ලිපින වලින් එකක් සෙවුමට අලවන්න (උදාහරණයක් ලෙස, අනුරූප wallet#
. එහිදී ඔබට ගනුදෙනු ඉතිහාසය, dApp තත්ත්වය, විසංයෝජනය කරන ලද ද්විමය ගොනුව සොයාගත හැකිය.
තරංග ගවේෂකය. දැන් යොදවා ඇති යෙදුමකි.
සමහර සර්ෆ්බෝඩ් ඉඟි:
1. testnet පරිසරය තුළ පරීක්ෂා කිරීමට, භාවිතා කරන්න:
surfboard test --env=testnet
2. ඔබට ගනුදෙනුවල JSON අනුවාද සහ ඒවා නෝඩය මඟින් සකසන ආකාරය බැලීමට අවශ්ය නම්, -v සමඟ පරීක්ෂණය ධාවනය කරන්න (එනම් 'වාචික' යන්නයි):
surfboard test -v
Waves Keeper සමඟ යෙදුම් භාවිතා කිරීම
1. වැඩ කිරීමට Waves Keeper සකසන්න:
දේශීය නෝඩයක් සමඟ වැඩ කිරීමට Waves Keeper පිහිටුවීම
2. ජාලය සඳහා ටෝකන සහිත රහස් වාක්ය ඛණ්ඩ ආයාත කරන්නද? සරල බව සඳහා, ඔබේ නෝඩයේ ආරම්භක බීජය භාවිතා කරන්න: waves private node seed with waves tokens
. ලිපිනය: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF
.
3. ඔබට npm භාවිතයෙන් සේවාදායක රහිත තනි පිටු යෙදුමක් ධාවනය කළ හැක. නැතහොත් පවතින එකට යන්න:
4. dApp ලිපින පෙළ කොටුවට පරීක්ෂණ ධාවනයෙන් පසුම්බිය ලිපිනය ඇතුළත් කරන්න (ඉහත යටින් ඉරි ඇඳ ඇත)
5. "තැන්පතු" ක්ෂේත්රයේ කුඩා මුදලක් ඇතුළත් කර බොත්තම ක්ලික් කරන්න:
Waves Keeper 10 WAVES ගෙවීමක් සමඟ InvokeScript ගනුදෙනුවක් අත්සන් කිරීමට අවසර ඉල්ලයි.
6. ගනුදෙනුව තහවුරු කරන්න:
ගනුදෙනුව නිර්මාණය කර ජාලයට විකාශනය වේ. දැන් ඔබට ඇයගේ හැඳුනුම්පත බලන්න පුළුවන්
7. Waves Explorer භාවිතයෙන් ගනුදෙනුව නිරීක්ෂණය කරන්න. සෙවුම් ක්ෂේත්රයේ ID ඇතුලත් කරන්න
නිගමන සහ අමතර තොරතුරු
අපි Waves Platform මත සරල dApps සංවර්ධනය කිරීම, පරීක්ෂා කිරීම, යෙදවීම සහ භාවිතා කිරීම සඳහා මෙවලම් දෙස බැලුවෙමු:
- RIDE භාෂාව
- VS කේත සංස්කාරකය
- තරංග ගවේෂකය
- සර්ෆ්බෝඩ්
- තරංග රකින්නා
දිගටම RIDE ඉගෙන ගැනීමට කැමති අය සඳහා සබැඳි:
RIDE මාතෘකාවට කිමිදීම දිගටම කරගෙන ඔබේ පළමු dApp නිර්මාණය කරන්න!
TL; ඩී:
මූලාශ්රය: www.habr.com