Waves blockchain මත විමධ්‍යගත, විවෘත මූලාශ්‍ර අනුබද්ධ වැඩසටහන

බෙටෙක්ස් කණ්ඩායම විසින් Waves Labs ප්‍රදානයක කොටසක් ලෙස ක්‍රියාත්මක කරන ලද Waves blockchain පිළිබඳ විමධ්‍යගත අනුබද්ධ වැඩසටහනකි.

තනතුර ප්‍රචාරණය නොවේ! වැඩසටහන විවෘත මූලාශ්ර වේ, එහි භාවිතය සහ බෙදා හැරීම නොමිලේ. වැඩසටහන භාවිතා කිරීම dApp යෙදුම් සංවර්ධනය උත්තේජනය කරන අතර සාමාන්‍යයෙන් සෑම අන්තර්ජාල පරිශීලකයෙකුටම ප්‍රතිලාභ ලැබෙන විමධ්‍යගතකරණය ප්‍රවර්ධනය කරයි.

Waves blockchain මත විමධ්‍යගත, විවෘත මූලාශ්‍ර අනුබද්ධ වැඩසටහන

අනුබද්ධ වැඩසටහන් සඳහා ඉදිරිපත් කරන ලද dApp යනු ඔවුන්ගේ ක්‍රියාකාරීත්වයේ කොටසක් ලෙස අනුබද්ධ ඇතුළත් ව්‍යාපෘති සඳහා අච්චුවකි. කේතය පිටපත් කිරීම සඳහා අච්චුවක් ලෙස, පුස්තකාලයක් ලෙස හෝ තාක්ෂණික ක්රියාත්මක කිරීම සඳහා අදහස් සමූහයක් ලෙස භාවිතා කළ හැක.

ක්‍රියාකාරීත්වය අනුව, මෙය යොමු කරන්නෙකු සමඟ ලියාපදිංචිය ක්‍රියාත්මක කරන නිත්‍ය අනුබද්ධ පද්ධතියකි, යොමු කිරීම් සඳහා බහු මට්ටමේ ත්‍යාග උපචිත සහ පද්ධතිය තුළ ලියාපදිංචි වීමට පෙළඹවීම (මුදල් ආපසු). පද්ධතිය “පිරිසිදු” dApp එකකි, එනම් වෙබ් යෙදුම එහිම පසුබිමක්, දත්ත සමුදායක් ආදිය නොමැතිව බ්ලොක්චේන් සමඟ කෙලින්ම අන්තර්ක්‍රියා කරයි.

වෙනත් බොහෝ ව්‍යාපෘති සඳහා ප්‍රයෝජනවත් විය හැකි තාක්ෂණික ක්‍රම:

  • ක්ෂණික ආපසු ගෙවීමක් සමඟ ස්මාර්ට් ගිණුමක් ණයට ඇමතීම (ඇමතුමේදී ඇමතුම සඳහා ගෙවීමට ගිණුමේ ටෝකන නොමැත, නමුත් ඇමතුමේ ප්රතිඵලයක් ලෙස ඒවා එහි දිස්වේ).
  • PoW-captcha - ස්මාර්ට් ගිණුම් කාර්යයන් සඳහා අධි-සංඛ්‍යාත ස්වයංක්‍රීය ඇමතුම් වලින් ආරක්ෂාව - කැප්චා වලට සමාන නමුත් පරිගණක සම්පත් භාවිතය පිළිබඳ සාක්ෂි හරහා.
  • අච්චුවක් භාවිතයෙන් දත්ත යතුරු සඳහා විමසුම.

යෙදුම සමන්විත වන්නේ:

  • ride4dapps භාෂාවෙන් ස්මාර්ට් ගිණුම් කේතය (සැලසුම් කර ඇති පරිදි, අනුබද්ධ ක්‍රියාකාරීත්වය ක්‍රියාත්මක කළ යුතු ප්‍රධාන ස්මාර්ට් ගිණුමට ඒකාබද්ධ කර ඇත);
  • WAVES NODE REST API හරහා වියුක්ත මට්ටමක් ක්‍රියාත්මක කරන js දවටනය;
  • පුස්තකාලය සහ RIDE කේතය භාවිතා කිරීමේ උදාහරණයක් වන vuejs රාමුවේ කේතය.

ලැයිස්තුගත කර ඇති සියලුම විශේෂාංග අපි විස්තර කරමු.

ක්ෂණික ආපසු ගෙවීම සමඟ ණය සඳහා ස්මාර්ට් ගිණුමක් ඇමතීම

InvokeScript ඇමතීමට ගනුදෙනුව ආරම්භ කරන ගිණුමෙන් ගාස්තුවක් ගෙවීම අවශ්‍ය වේ. ඔබ ඔවුන්ගේ ගිණුමේ WAVES ටෝකන නිශ්චිත ප්‍රමාණයක් ඇති blockchain geeks සඳහා ව්‍යාපෘතියක් කරන්නේ නම් මෙය ගැටළුවක් නොවේ, නමුත් නිෂ්පාදනය සාමාන්‍ය ජනතාව විසින් භාවිතා කිරීම අරමුණු කර ගෙන තිබේ නම්, මෙය බරපතල ගැටළුවක් බවට පත්වේ. සියල්ලට පසු, පරිශීලකයා WAVES ටෝකන (හෝ ගනුදෙනු සඳහා ගෙවීමට භාවිතා කළ හැකි වෙනත් සුදුසු වත්කමක්) මිලදී ගැනීම ගැන සැලකිලිමත් විය යුතුය, එය ව්යාපෘතියට ඇතුල් වීමට දැනටමත් සැලකිය යුතු බාධකයක් වැඩි කරයි. අපගේ පද්ධතියෙන් ද්‍රව වත්කමක් පොම්ප කිරීම සඳහා ස්වයංක්‍රීය පද්ධති නිර්මාණය කරන විට ගනුදෙනු සඳහා ගෙවීමට සහ ඒවා අනිසි ලෙස භාවිතා කිරීමේ අවදානමට මුහුණ දීමට හැකි පරිශීලකයින්ට අපට වත්කමක් බෙදා හැරිය හැක.

InvokeScript "ලබන්නාගේ වියදමින්" (ස්ක්‍රිප්ට් ස්ථාපනය කර ඇති ස්මාර්ට් ගිණුම) ඇමතීමට හැකි නම් එය ඉතා පහසු වනු ඇත, සහ එවැනි හැකියාවක්, පැහැදිලි ආකාරයකින් නොවුවද, පවතී.

InvokeScript ඇතුළත ඔබ ඇමතුම්කරුගේ ලිපිනයට ScriptTransfer එකක් කරන්නේ නම්, එය වියදම් කළ ගාස්තු ටෝකන සඳහා වන්දි ගෙවයි, එවිට එවැනි ඇමතුමක් සාර්ථක වනු ඇත, ඇමතුම සිදු කරන අවස්ථාවේ ඇමතුම් ගිණුමේ වත්කම් නොතිබුණද. මෙය කළ හැකි වන්නේ ප්‍රමාණවත් ටෝකන සඳහා චෙක්පත සිදු කරනු ලබන්නේ ගනුදෙනුව කැඳවීමෙන් පසුව නොව, ඊට පෙර නොව, ක්ෂණික ආපසු ගෙවීමට යටත්ව ණය මත ගනුදෙනු කළ හැකි බැවිනි.

ස්ක්‍රිප්ට් ට්‍රාන්ස්ෆර් (i.ඇමතුම්කරු, i. ගාස්තු, ඒකකය)

පහත කේතය ස්මාර්ට් ගිණුම් අරමුදල් භාවිතයෙන් වියදම් කළ ගාස්තුව ප්‍රතිපූරණය කරයි. මෙම විශේෂාංගය අනිසි ලෙස භාවිතා කිරීමෙන් ආරක්ෂා වීම සඳහා, ඇමතුම්කරු ගාස්තුව අවශ්‍ය වත්කම්වල සහ සාධාරණ සීමාවන් තුළ වියදම් කරන බවට චෙක්පතක් භාවිතා කිරීම අවශ්‍ය වේ:

func checkFee(i:Invocation) = {
if i.fee > maxFee then throw(“unreasonable large fee”) else
if i.feeAssetId != unit then throw(“fee must be in WAVES”) else true
}

එසේම, ද්වේෂසහගත සහ අර්ථ විරහිත අරමුදල් නාස්තියෙන් ආරක්ෂා වීමට, ස්වයංක්‍රීය ඇමතුම් ආරක්ෂාව (PoW-captcha) අවශ්‍ය වේ.

PoW-captcha

සාධනය-ඔෆ්-වැඩ කැප්චා පිළිබඳ අදහසම අලුත් දෙයක් නොවන අතර WAVES පදනම මත ක්‍රියාත්මක කරන ලද ඒවා ඇතුළුව විවිධ ව්‍යාපෘතිවල දැනටමත් ක්‍රියාත්මක කර ඇත. අදහස නම්, අපගේ ව්‍යාපෘතියේ සම්පත් පරිභෝජනය කරන ක්‍රියාවක් සිදු කිරීම සඳහා, අමතන්නා තම සම්පත් ද වැය කළ යුතු අතර, එමඟින් සම්පත් ක්ෂය වීමේ ප්‍රහාරය තරමක් මිල අධික වේ. ගනුදෙනුව යවන්නා PoW ගැටලුව විසඳා ඇති බවට ඉතා පහසු සහ අඩු වියදම් වලංගු කිරීමක් සඳහා, ගනුදෙනු හැඳුනුම්පතක් තිබේ:

ගන්නේ නම් (toBase58String(i.transactionId), 3) != “123” පසුව විසි කරන්න (“වැඩ අසාර්ථක වූ බවට සාක්ෂි”) වෙනත්

ගනුදෙනුවක් සිදු කිරීම සඳහා, ඇමතුම්කරු විසින් එවැනි පරාමිතීන් තෝරාගත යුතු අතර එමඟින් එහි මූලික 58 කේතය (id) අංක 123 න් ආරම්භ වන අතර එය සාමාන්‍යයෙන් තත්පර දස දෙකක ප්‍රොසෙසර කාලයකට අනුරූප වන අතර සාමාන්‍යයෙන් අපගේ කාර්යය සඳහා සාධාරණ වේ. සරල හෝ වඩාත් සංකීර්ණ PoW අවශ්‍ය නම්, කාර්යය පහසුවෙන් පැහැදිලි ආකාරයකින් වෙනස් කළ හැකිය.

අච්චුවක් භාවිතයෙන් දත්ත යතුරු සඳහා විමසුම

බ්ලොක්චේන් දත්ත සමුදායක් ලෙස භාවිතා කිරීම සඳහා, සැකිලි මත පදනම්ව දත්ත සමුදාය Key-val ලෙස විමසීම සඳහා API මෙවලම් තිබීම අත්‍යවශ්‍ය වේ. එවැනි මෙවලම් කට්ටලයක් 2019 ජූලි මස මුලදී පරාමිතියක ස්වරූපයෙන් දර්ශනය විය ?තරග REST API ඉල්ලීම මත /ලිපින/දත්ත?matches=regexp. දැන්, අපට වෙබ් යෙදුමකින් යතුරු එකකට වඩා ලබා ගැනීමට අවශ්‍ය නම් සහ සියලුම යතුරු එකවර නොව, සමහර කණ්ඩායමක් පමණක් ලබා ගැනීමට අවශ්‍ය නම්, අපට යතුරු නාමයෙන් තේරීමක් කළ හැකිය. උදාහරණයක් ලෙස, මෙම ව්‍යාපෘතියේ මුදල් ආපසු ගැනීමේ ගනුදෙනු ලෙස කේතනය කර ඇත

withdraw_${userAddress}_${txid}

අච්චුව භාවිතයෙන් ඕනෑම ලිපිනයක් සඳහා මුදල් ආපසු ගැනීම සඳහා ගනුදෙනු ලැයිස්තුවක් ලබා ගැනීමට ඔබට ඉඩ සලසයි:

?matches=withdraw_${userAddress}_.*

දැන් අපි නිමි විසඳුමේ සංරචක දෙස බලමු.

Vuejs කේතය

කේතය සැබෑ ව්‍යාපෘතියට ආසන්නව ක්‍රියා කරන ආදර්ශනයකි. එය Waves Keeper හරහා පිවිසීම ක්‍රියාත්මක කරන අතර affiliate.js පුස්තකාලය සමඟ ක්‍රියා කරයි, එය පද්ධතිය තුළ පරිශීලකයා ලියාපදිංචි කරයි, ගනුදෙනු දත්ත විමසයි, සහ උපයාගත් අරමුදල් පරිශීලකයාගේ ගිණුමට ආපසු ගැනීමට ද ඔබට ඉඩ සලසයි.

Waves blockchain මත විමධ්‍යගත, විවෘත මූලාශ්‍ර අනුබද්ධ වැඩසටහන

RIDE සඳහා කේතය

ලේඛනය, අරමුදල් සහ ආපසු ගැනීමේ කාර්යයන් වලින් සමන්විත වේ.

ලියාපදිංචි කිරීමේ කාර්යය පද්ධතියේ පරිශීලකයෙකු ලියාපදිංචි කරයි. එය පරාමිති දෙකක් ඇත: යොමු කරන්නා (යොමු කරන්නා ලිපිනය) සහ ලුණු පරාමිතිය, ක්‍රියාකාරී කේතයේ භාවිතා නොකරන අතර, ගනුදෙනු හැඳුනුම්පත (PoW-captcha කාර්යය) තේරීමට අවශ්‍ය වේ.

ශ්‍රිතය (මෙම ව්‍යාපෘතියේ අනෙකුත් කාර්යයන් මෙන්) ණය ඇමතුම් තාක්‍ෂණය භාවිතා කරයි, ශ්‍රිතයේ ප්‍රතිඵලය වන්නේ මෙම ශ්‍රිතය ඇමතීම සඳහා ගාස්තුවක් ගෙවීමට මුදල් යෙදවීමයි. මෙම විසඳුමට ස්තූතියි, මුදල් පසුම්බියක් නිර්මාණය කළ පරිශීලකයෙකුට වහාම පද්ධතිය සමඟ වැඩ කළ හැකි අතර ගනුදෙනු ගාස්තුවක් ගෙවීමට ඉඩ සලසන වත්කමක් මිලදී ගැනීම හෝ ලැබීම ගැන කරදර විය යුතු නැත.

ලියාපදිංචි කිරීමේ කාර්යයේ ප්රතිඵලය වාර්තා දෙකකි:

${owner)_referer = referer
${referer}_referral_${owner} = owner

මෙමගින් ඉදිරි සහ ප්‍රතිලෝම සෙවීම් (දී ඇති පරිශීලකයාගේ යොමුකරු සහ ලබා දී ඇති පරිශීලකයාගේ සියලුම යොමු කිරීම්) ඉඩ ලබා දේ.

අරමුදල් ක්‍රියාකාරිත්වය සැබෑ ක්‍රියාකාරීත්වය වර්ධනය කිරීම සඳහා වන අච්චුවකි. එහි ඉදිරිපත් කරන ලද ස්වරූපයෙන්, එය ගනුදෙනුව මගින් මාරු කරන ලද සියලුම අරමුදල් ගෙන ඒවා 1, 2, 3 මට්ටම්වල යොමු කරන්නන්ගේ ගිණුම් වෙත “මුදල් ආපසු” ගිණුමට සහ “වෙනස්” ගිණුමට (පෙර බෙදා හැරීමේදී ඉතිරිව ඇති සියල්ල) බෙදා හරිනු ලැබේ. ගිණුම් මෙතැනට යයි).

Cashback යනු අවසාන පරිශීලකයා යොමු කිරීමේ පද්ධතියට සහභාගී වීමට පොළඹවන මාධ්‍යයකි. පරිශීලකයාට "මුදල් ආපසු" ආකාරයෙන් පද්ධතිය විසින් ගෙවන ලද කොමිස් කොටස, යොමු කිරීම් සඳහා ත්යාග ලෙසම ආපසු ලබාගත හැකිය.

යොමු පද්ධතියක් භාවිතා කරන විට, අරමුදල් කාර්යය වෙනස් කළ යුතු අතර පද්ධතිය ක්‍රියා කරන ස්මාර්ට් ගිණුමේ ප්‍රධාන තර්කනයට ඒකාබද්ධ කළ යුතුය. උදාහරණයක් ලෙස, සිදු කරන ලද ඔට්ටුවක් සඳහා යොමු කිරීමේ ත්‍යාගයක් ගෙවන්නේ නම්, අරමුදල් ශ්‍රිතය ඔට්ටුව තබා ඇති තර්කයට ගොඩනගා ගත යුතුය (නැතහොත් ත්‍යාගය ගෙවනු ලබන වෙනත් ඉලක්කගත ක්‍රියාවක් සිදු කරනු ලැබේ). යොමු කිරීමේ ත්‍යාග මට්ටම් තුනක් මෙම ශ්‍රිතයට කේතනය කර ඇත. ඔබට මට්ටම් වැඩි හෝ අඩු කිරීමට අවශ්‍ය නම්, මෙය කේතයේ ද නිවැරදි කර ඇත. ප්‍රතිලාභ ප්‍රතිශතය level1-level3 නියතයන් මගින් සකසා ඇත; කේතයේ එය ගණනය කරනු ලැබේ මුදල * මට්ටම / 1000, එනම් 1 අගය 0,1% ට අනුරූප වේ (මෙය කේතයේ ද වෙනස් කළ හැක).

ශ්‍රිතය ඇමතීමෙන් ගිණුම් ශේෂය වෙනස් වන අතර පෝරමයේ ලොග් වීමේ අරමුණු සඳහා ඇතුළත් කිරීම් ද නිර්මාණය කරයි:

fund_address_txid = address:owner:inc:level:timestamp
Для получения timestamp (текущего времени) используется такая вот связка
func getTimestamp() = {
let block = extract(blockInfoByHeight(height))
toString(block.timestamp)
}

එනම්, ගනුදෙනු කාලය යනු එය පිහිටා ඇති බ්ලොක් එකේ කාලයයි. මෙය ගනුදෙනුවේ සිටම කාලමුද්‍රාව භාවිතා කිරීමට වඩා විශ්වාසදායකය, විශේෂයෙන්ම එය ඇමතීමට හැකියාවක් නොමැති නිසා.
ආපසු ගැනීමේ ශ්‍රිතය පරිශීලකයාගේ ගිණුමට රැස් කරගත් සියලුම ත්‍යාග පෙන්වයි. ලොග් කිරීමේ අරමුණු සඳහා ඇතුළත් කිරීම් සාදයි:

# withdraw log: withdraw_user_txid=amount:timestamp

අයදුම්පත

යෙදුමේ ප්‍රධාන කොටස වන්නේ affiliate.js පුස්තකාලය වන අතර එය අනුබද්ධ දත්ත ආකෘති සහ WAVES NODE REST API අතර පාලමකි. රාමුවෙන් ස්වාධීන වියුක්ත මට්ටමක් ක්‍රියාත්මක කරයි (ඕනෑම එකක් භාවිතා කළ හැක). ක්‍රියාකාරී ක්‍රියාකාරකම් (ලියාපදිංචි වීම, ආපසු ගැනීම) පද්ධතියේ Waves Keeper ස්ථාපනය කර ඇති බව උපකල්පනය කරයි; පුස්තකාලයම මෙය පරීක්ෂා නොකරයි.

ක්රියාත්මක කිරීමේ ක්රම:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

ක්‍රමවල ක්‍රියාකාරීත්වය නම් වලින් පැහැදිලි වේ; පරාමිති සහ ආපසු ලබා දුන් දත්ත කේතයේ විස්තර කර ඇත. රෙජිස්ටර් ශ්‍රිතයට අමතර අදහස් අවශ්‍ය වේ - එය ගනුදෙනු හැඳුනුම්පත තේරීමේ චක්‍රයක් ආරම්භ කරන අතර එය 123 න් ආරම්භ වේ - මෙය ඉහත විස්තර කර ඇති PoW-captcha වේ, එය විශාල ලියාපදිංචි කිරීම් වලින් ආරක්ෂා වේ. ශ්‍රිතය අවශ්‍ය හැඳුනුම්පත සමඟ ගනුදෙනුවක් සොයා ගනී, පසුව එය Waves Keeper හරහා අත්සන් කරයි.

DEX අනුබද්ධ වැඩසටහන ලබා ගත හැකිය GitHub.com.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න