
ආයුබෝවන් හැමෝටම!
මෑතකදී, වේව්ස් ලැබ්ස් විමධ්යගත යෙදුම් සඳහා වන RIDE ස්මාර්ට් කොන්ත්රාත් භාෂා දිගුවේ පරීක්ෂණ ජාල නිකුතුවට සමගාමීව සංවර්ධක තරඟයක්, Ride4Dapps!
අපි DAO නඩුව තෝරා ගත්තේ මොකද සමාජ විශේෂාංග සහිත dApp එකක් සංවර්ධනය කිරීමට සැලසුම් කරයි: ඡන්දය ප්රකාශ කිරීම, අරමුදල් රැස් කිරීම, විශ්වාස කළමනාකරණය යනාදිය.
අපි සරල උදාහරණයකින් පටන් ගත්තා හා ඇතුළත - උදාහරණයක් ලෙස .
අපි මෙම උදාහරණය දෙස බලමු, උපකල්පන පරීක්ෂා කර, සමහර අමුතුකම් සලකා බලමු:
අපිට ඇලිස් - dApp හිමිකරු ඉන්නවා කියමු.
බූබ් සහ කූපර් යනු ඇලිස් හවුල්කරුවන් සහ ඇලිස්-බීසී DAO හි සම-නිර්මාතෘවරුන් වේ.
නෙලි යනු අරමුදල් අවශ්ය ව්යාපාර හිමිකරුවෙක්.
බැංකුව — ටෝකන් බෙදා හරින බැංකුවක්
පියවර 1. ශේෂයන් ආරම්භ කිරීම
Waves පරීක්ෂණ ජාලයේ ටෝකන ලබා ගැනීම සඳහා, ඔබ සම්බන්ධ කර ගත යුතුය සහ ටෝකන යැවිය යුතු ලිපිනය සඳහන් කරන්න.
ගිණුම් විස්තර විවෘත කිරීමෙන් IDE එකේ ලිපිනය සොයාගත හැකිය.
අපි Bank 10 WAVES තෝරා ගනිමු. ඉන්පසු අපි ඒවා බ්ලොක් සහ ගනුදෙනු ගවේෂකය හරහා පැමිණි බව තහවුරු කරමු:
දැන් අපි බැංකුවෙන් ලැබෙන ටෝකන් ඉතිරි සහභාගිවන්නන්ට බෙදා හරිමු. (සටහන්: Waves ජාලයේ සියලුම ගනුදෙනු නොමිලේ නොවේ, එබැවින් ගනුදෙනු සිදු කිරීමට සියලුම සහභාගිවන්නන්ට අවම ධනාත්මක ශේෂයක් අවශ්ය වේ.)
1 තරංග = ඒකක 100000000 (තරංග ආශ්රිත), මන්ද ප්රමාණ පූර්ණ සංඛ්යා පමණක් විය හැකි බැවිනි.
0.01 තරංග (ගනුදෙනු ගාස්තුව) = 1000000
බැංකුව -> [තරංග 3] -> ඇලිස්, හුවමාරු ගනුදෙනුව හරහා (වර්ගය: 4).
ගනුදෙනු අත්සන් කරන ලද env.SEED අපගේ බැංකුවට ගැලපෙන බව අපි පරීක්ෂා කරමු:


ඔබට ගැලපෙන බීජ වාක්ය ඛණ්ඩයක් නොමැති නම්, ගිණුම් පටිත්තෙහි එයට මාරු වී නැවත පරීක්ෂා කරන්න.
මෙයින් පසු, අපි ඇලිස් වෙත WAVES 3ක් මාරු කිරීම සඳහා ගනුදෙනුවක් නිර්මාණය කර, නිවේදනය කර අත්සන් කරන්නෙමු.
ඔබට env.accounts විචල්යය හරහා ඇලිස්ගේ දත්ත සොයා ගත හැක. අංකනය 0 න් ආරම්භ වන බැවින් ඇලිස් යනු env.accounts[1] වේ.

broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))
ප්රතිඵලය බ්රවුසරයේ ද දැකිය හැකිය, ක්රියාත්මක කිරීමෙන් පසු එයට සබැඳියක් වහාම අපට ආපසු එවනු ලැබේ. .
අපි ඇලිස්ගේ ශේෂය තරංග 3 කින් නැවත පුරවන බවටත්, බැංකු ශේෂය 10 - 3 - 0.01 = 0.699 වන බවටත් සහතික වෙමු.


අපි බූබ් සහ කූපර් 3 WAVES බැගින් යවන අතර, නෙලි, සෙනා සහ මාර්ක් 0.2 WAVES බැගින් එකම ආකාරයකින් යවමු.
(සටහන්: අපි එක චරිතයක වැරැද්දක් කළා, ඒ නිසා අපි Neli 0.02 WAVES යැව්වා. පරිස්සම් වෙන්න!)
broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))
සියලුම සහභාගිවන්නන්ගේ ශේෂයන් නැවත පිරවීමෙන් පසු, අපට පෙනෙන්නේ:

පියවර 2: dApp ගිණුමක් සාදන්න
විමධ්යගත යෙදුමේ නිර්මාතෘ සහ හිමිකරු ඇලිස් බව අපි එකඟ වුණා.
Accounts වල, SEED ලෙස ස්ථාපනය කිරීමට ගොස් env.SEED Alice ට ගැලපෙනවාද කියා පරීක්ෂා කරන්න.
ඇලිස්ගේ ගිණුමේ හැකි සරලම ස්ක්රිප්ට් (කොන්ත්රාත්තුව) ස්ථාපනය කිරීමට උත්සාහ කරමු.
Waves හි ස්මාර්ට් සම්බන්ධතා යනු යම් යම් කොන්දේසි යටතේ යම් ආකාරයක පිටතට යන ගනුදෙනුවක් සිදුවීම වළක්වන හෝ ඉඩ සලසන පුරෝකථන වේ. මෙම අවස්ථාවේදී, එම කොන්දේසිය සැමවිටම පවතී. කොන්ත්රාත් කේතය සත්ය වේ. අපි deploy() ලෙස හඳුන්වමු.

setScript ගනුදෙනුව සඳහා ගාස්තුව 1400000/100000000 = 0.014 WAVES වේ. ඇලිස්ගේ ශේෂයේ WAVES 2.986 ක් ඉතිරිව ඇත.
දැන් අපි විස්තර කර ඇති පරිදි, ඇලිස්ගේ ගිණුමේ වඩාත් සංකීර්ණ ස්මාර්ට් කොන්ත්රාත් තර්කනය ස්ථාපනය කිරීමට උත්සාහ කරමු
රයිඩ්4ඩැප්ස් දැන් නව විවරණ වර්ග 2ක් ඇතුළත් වේ:
- @කැඳවිය හැකි(i) — පරාමිතියක් ලෙස ගනු ලබන්නේ ගනුදෙනුව ඇමතූ/අත්සන් කළ ගිණුමයි. මෙම ශ්රිතයේ ප්රතිඵලය ගිණුමේ dApp තත්වයේ වෙනස තීරණය කරයි. අනෙකුත් ගිණුම්වලට මෙම විවරණයෙන් ගනුදෙනු නිර්මාණය කර කාර්යයන් ක්රියාත්මක කළ හැකි අතර, ගිණුමේ dApp තත්වය වෙනස් කළ හැකිය.
- @සත්යාපකය(tx) — tx ගනුදෙනු පරාමිතිය සහිත ගනුදෙනු සත්යාපකයක්. RIDE හි පුරෝකථන තර්කනයට අනුරූප වේ. dApp ගිණුමක ස්මාර්ට් කොන්ත්රාත් තර්කනයට තවදුරටත් වෙනස්කම් සක්රීය කිරීමට හෝ අක්රීය කිරීමට මෙම ප්රකාශනය භාවිතා කළ හැක.
අපි කරමු dApp සියලුම සහභාගිවන්නන් සඳහා පොදු මුදල් පසුම්බියක් ලෙස ගිණුම.

ගිණුමක දැනට සක්රියව ඇත්තේ කුමන කොන්ත්රාත්තුව දැයි පරීක්ෂා කිරීමට, ඔබට බ්ලොක් එක්ස්ප්ලෝරර් හි ස්මාර්ට් කොන්ත්රාත්තුවේ base64 කේතය පිටපත් කර විසංයෝජනයක් භාවිතයෙන් එය හඳුනාගත හැකිය ()



ස්මාර්ට් කොන්ත්රාත්තුවේ තර්කනය අප අපේක්ෂා කරන දේට ගැලපෙන බවට අපි සහතික වෙමු.
ඇලිස්ගේ ශේෂයේ තරංග 2.972 ක් ඉතිරිව ඇත.
මෙම dApp යාන්ත්රණයක් හරහා එක් එක් සහභාගිවන්නා පොදු අරමුදලට කොපමණ දායක වේද යන්න නිරීක්ෂණය කරයි. දත්ත ගනුදෙනුව — DataEntry(currentKey, newAmount), මෙහි currentKey යනු තැන්පතු ශ්රිතය කැඳවන ගිණුම වන අතර, newAmount යනු නැවත පිරවූ ශේෂයේ වටිනාකමයි.
බූබ් සහ කූපර් dApp ගිණුමට WAVE 1 බැගින් තැන්පත් කරති.

අපි වැරැද්දක් කරන අතර ගනුදෙනුව අසාර්ථක වේ. මෙයට හේතුව, අපි බොබ් වෙනුවෙන් ගනුදෙනුව ක්රියාත්මක කරන බව සහතික කළද, අපි දර්ශකය වැරදි ලෙස ටයිප් කර ඇති අතර ස්මාර්ට් කොන්ත්රාත්තුවක් නොමැති බැංකු ගිණුමක් සඳහන් කර ඇත. මෙහිදී සටහන් කර ගැනීම වැදගත් වේ: ගනුදෙනු ආරම්භ කිරීමට අසාර්ථක උත්සාහයන් සඳහා ගාස්තුවක් ඇත. එය ඉවත් කළ නොහැක! ඇලිස්ගේ ශේෂයේ තරංග 2.972 ක් ඉතිරිව ඇත. බොබ්ට තරංග 3 ක් ඇත.
බොබ් dApp ගිණුමට WAVE 1ක් යැව්වා.
broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))

බොබ්ට WAVES 1.99ක් ඉතිරිව ඇත. ඒ කියන්නේ බොබ් ගාස්තු වශයෙන් WAVES 0.01ක් ගෙව්වා.

ඇලිස්ගේ ශේෂය තරංග 2.972 ක් වූ අතර දැන් එය 3.972 කි. ඇලිස්ගේ ගිණුමේ ගනුදෙනුවක් ද ලියාපදිංචි කරන ලද නමුත් dApp ගිණුමට (ඇලිස්) කිසිදු ගාස්තුවක් අය නොකෙරේ.
කූපර් ද ඇලිස්ගේ ගිණුමට මුදල් පුරවා ගත් පසු, ඇගේ ශේෂය තරංග 4.972 ක් විය.

බ්ලොක් ගවේෂකයේ දත්ත පටිත්තෙන් බෙදාගත් මුදල් පසුම්බියේ කොපමණ WAVES ප්රමාණයක් හිමි දැයි ඔබට සොයා ගත හැක.
කූපර් හවුල් මුදල් පසුම්බියේ තරංග 1ක් ඉතිරි කිරීම පිළිබඳ ඔහුගේ අදහස වෙනස් කර ඔහුගේ සම්බන්ධතා වලින් අඩක් ආපසු ගැනීමට තීරණය කළේය. මෙය සිදු කිරීම සඳහා, ඔහු withdraw function එක ඇමතිය යුතුය.

කෙසේ වෙතත්, අපි නැවතත් වැරදියට තේරුම් ගත්තා, withdraw function එකට සම්පූර්ණයෙන්ම වෙනස් පරාමිතීන් සහ වෙනස් අත්සනක් ඇති නිසා. RIDE4DAPPS මත ස්මාර්ට් කොන්ත්රාත්තු නිර්මාණය කිරීමේදී, ඔබ මෙම කරුණ කෙරෙහි අවධානය යොමු කළ යුතුය.

කූපර්ගේ ශේෂය දැන් තරංග 2.48 ක් වේ. මෙය තරංග 3 ක් - 1 - 0.01 ක් ලෙසත්, පසුව + 0.5 - 0.01 ක් ලෙසත් පරිවර්තනය වේ. එහි ප්රතිඵලයක් ලෙස, එක් එක් තැන්පතු සහ ආපසු ගැනීමේ ඇමතුම් සඳහා තරංග 0.01 ක් වැය වේ. එහි ප්රතිඵලයක් ලෙස, dApp හිමිකරු වගු ඇතුළත් කිරීම් පහත පරිදි වෙනස් විය.

බොබ් ද බෙදාගත් මුදල් පසුම්බියෙන් යම් මුදලක් ලබා ගැනීමට තීරණය කළ නමුත් වැරැද්දක් කර තරංග 1.5 ක් ලබා ගැනීමට උත්සාහ කළේය.

කෙසේ වෙතත්, ස්මාර්ට් කොන්ත්රාත්තුවේ මෙම තත්ත්වය සඳහා චෙක්පතක් අඩංගු විය.
Xena යනු සාමාන්ය ගිණුමෙන් WAVES 1ක් ලබා ගැනීමට උත්සාහ කළ වංචාකරුවෙකි.

ඇයත් අසාර්ථක වුණා.
ඊළඟ කොටසේදී, අපි Alice dApp ගිණුමේ අසම්පූර්ණකම් සම්බන්ධ වඩාත් සංකීර්ණ ගැටළු දෙස බලමු.
මූලාශ්රය: www.habr.com
