د ویوز بلاکچین کې د خلاصې سرچینې غیر متمرکز وابسته برنامه

د ویوز بلاکچین پراساس غیر متمرکز وابسته برنامه چې د بیټیکس ټیم لخوا د ویوز لابراتوار مرستې برخې په توګه پلي کیږي.

پوسټ سپانسر نه دی! برنامه خلاص سرچینه ده ، د هغې کارول او توزیع وړیا ده. د برنامه کارول د dApp غوښتنلیکونو پراختیا هڅوي او په عموم کې غیر مرکزي کولو ته وده ورکوي ، کوم چې د شبکې هر کارونکي لپاره ګټور دی.

د ویوز بلاکچین کې د خلاصې سرچینې غیر متمرکز وابسته برنامه

د وابسته برنامو لپاره وړاندې شوی dApp د پروژو لپاره یوه نمونه ده چې د دوی د فعالیت برخې په توګه وابسته پکې شامل دي. کوډ د کاپي کولو لپاره د ټیمپلیټ په توګه کارول کیدی شي، د کتابتون په توګه، یا د تخنیکي تطبیق لپاره د نظرونو د یوې مجموعې په توګه.

د فعالیت په شرایطو کې، دا یو عادي وابسته سیسټم دی چې د راجستر کونکي سره راجستریشن پلي کوي، د راجع کولو لپاره د معاشونو څو کچې راټولول او په سیسټم کې د راجستر کولو هڅونه (کیش بیک). سیسټم یو "خالص" dApp دی، دا دی، د ویب غوښتنلیک مستقیم د بلاکچین سره د خپل بیکینډ، ډیټابیس، او نور پرته اړیکه نیسي.

تخنیکونه کارول کیږي چې کولی شي په ډیرو نورو پروژو کې هم ګټور وي:

  • د سمدستي تادیې سره په کریډیټ کې سمارټ حساب ته زنګ وهل (د زنګ په وخت کې ، د تلیفون لپاره تادیه کولو لپاره په حساب کې هیڅ نښه شتون نلري ، مګر دوی د تلیفون په پایله کې څرګندیږي).
  • PoW-captcha - د سمارټ حساب دندو د لوړې فریکونسۍ اتومات کال کولو پروړاندې محافظت - کیپچا ته ورته ، مګر د کمپیوټري سرچینو کارولو ثبوت له لارې.
  • د ټیمپلیټ په واسطه د معلوماتو کیلي ته غوښتنه وکړئ.

غوښتنلیک عبارت دی له:

  • په ride4dapps ژبه کې د سمارټ حساب کوډ (کوم چې پلان شوی، په اصلي سمارټ حساب کې یوځای شوی، د کوم لپاره چې تاسو د وابسته فعالیت پلي کولو ته اړتیا لرئ)؛
  • js ریپر چې د WAVES NODE REST API کې د خلاصون پرت پلي کوي؛
  • د vuejs چوکاټ کې کوډ، کوم چې د کتابتون او RIDE کوډ کارولو یوه بیلګه ده.

راځئ چې ټول لیست شوي ځانګړتیاوې تشریح کړو.

د سمدستي بیرته ورکولو سره پور ته د سمارټ حساب غوښتنه کول

InvokeScript ته زنګ وهل د معاملې پیل کولو حساب څخه د فیس تادیه ته اړتیا لري. دا کومه ستونزه نده که تاسو د بلاکچین جیکس لپاره پروژه ترسره کوئ څوک چې د دوی په حساب کې د WAVES ټوکنونو ټاکلی مقدار لري ، مګر که محصول د خلکو لپاره وي ، نو دا یوه جدي ستونزه کیږي. په هرصورت، کاروونکي باید د WAVES ټوکنونو پیرود ته حاضر شي (یا بله مناسبه شتمني چې د معاملو لپاره تادیه کولو لپاره کارول کیدی شي)، کوم چې پروژې ته د ننوتلو لپاره دمخه د پام وړ حد زیاتوي. موږ کولی شو هغه کاروونکو ته شتمنۍ وویشو چې د راکړې ورکړې لپاره به اجازه ولري او د دوی د ناوړه ګټې اخیستنې خطر سره مخ شي کله چې زموږ سیسټم څخه د مایع شتمنیو پمپ کولو لپاره اتوماتیک سیسټمونه رامینځته شي.

دا به خورا اسانه وي که چیرې دا ممکنه وي چې InvokeScript ته زنګ ووهئ "د ترلاسه کونکي په لګښت" (هغه سمارټ حساب چې سکریپټ نصب شوی وي) ، او دا ډول امکان ، که څه هم په څرګند ډول شتون نلري.

که د InvokeScript دننه، د زنګ وهونکي پته ته د سکریپټ لیږد رامینځته شي، کوم چې په فیس کې لګول شوي ټوکنونو ته تاوان ورکوي، نو دا ډول زنګ به بریالی وي، حتی که د زنګ وهلو په وخت کې د زنګ وهلو حساب کې هیڅ شتمني نه وي. دا ممکنه ده ځکه چې د کافي ټوکنونو لپاره چک د راکړې ورکړې له غوښتنې وروسته ترسره کیږي، نه مخکې، نو دا ممکنه ده چې په کریډیټ کې لیږدونه ترسره شي، په دې شرط چې دوی سمدستي بیرته اخیستل کیږي.

د سکریپټ لیږد (i.caller, i.fee, unit)

لاندې کوډ د سمارټ حساب فنډونو په کارولو سره مصرف شوي فیس بیرته ورکوي. د دې خصوصیت څخه د ناوړه ګټې اخیستنې په وړاندې د ساتنې لپاره، تاسو باید یو چک وکاروئ چې زنګ وهونکی فیس په سمه شتمنۍ او مناسب حد کې مصرفوي:

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 ستونزه حل کړې ، د لیږد id چیک شتون لري:

که (toBase58String(i.transactionId)، 3) واخلو!= "123" بیا وغورځوئ ("د کار ناکام ثبوت") نور

د راکړې ورکړې ترسره کولو لپاره، زنګ وهونکی باید داسې پیرامیټونه غوره کړي ترڅو د دې اساس 58 کوډ (id) د 123 شمیرو سره پیل شي، کوم چې په اوسط ډول د څو ثانیو د پروسیسر وخت سره سمون لري او عموما زموږ د دندې لپاره مناسب وي. که چیرې یو ساده یا ډیر پیچلي PoW ته اړتیا وي، نو دا دنده په اسانۍ سره په ښکاره ډول تعدیل کیدی شي.

د ټیمپلیټ په واسطه د معلوماتو کیلي پوښتنې

د ډیټابیس په توګه د بلاکچین کارولو لپاره، دا اړینه ده چې د ټیمپلیټونو په کارولو سره د کلیدي وال په توګه ډیټابیس پوښتنې کولو لپاره د API وسیلې ولرئ. دا ډول وسیلې د 2019 کال د جولای په پیل کې د پیرامیټر په توګه راڅرګندې شوې ؟میچونه د REST API په غوښتنه کې /addresses/data?matches=regexp. اوس، که موږ اړتیا لرو چې د ویب اپلیکیشن څخه په یوځل کې له یو څخه ډیر کلیدونه ترلاسه کړو او ټولې کیلي نه ، مګر یوازې یو څو ګروپ ، نو موږ کولی شو د کیلي په نوم انتخاب وکړو. د مثال په توګه، په دې پروژه کې، د وتلو لیږدونه کوډ شوي دي

withdraw_${userAddress}_${txid}

کوم چې تاسو ته اجازه درکوي د ټیمپلیټ په کارولو سره د هرې پتې لپاره د فنډونو ایستلو لپاره د معاملو لیست ترلاسه کړئ:

?matches=withdraw_${userAddress}_.*

اوس راځئ چې د بشپړ شوي حل اجزا تحلیل کړو.

vuejs کوډ

کوډ یو کاري ډیمو دی، ریښتینې پروژې ته نږدې. دا د Waves Keeper له لارې ننوتل پلي کوي او د affiliate.js کتابتون سره کار کوي، د کوم په مرسته چې دا په سیسټم کې یو کاروونکي راجستر کوي، د لیږد ډیټا پوښتنې کوي، او تاسو ته اجازه درکوي چې د کارونکي حساب ته پیسې وباسي.

د ویوز بلاکچین کې د خلاصې سرچینې غیر متمرکز وابسته برنامه

په RIDE کې کوډ

د راجستر، تمویل او وتلو دندو څخه جوړ دی.

د راجستر فعالیت په سیسټم کې یو کاروونکي راجستر کوي. دا دوه پیرامیټونه لري: راجع کونکی (د راجع کونکي پته) او د مالګې پیرامیټر د فنکشن کوډ کې نه کارول کیږي ، کوم چې د لیږد id (PoW-captcha ټاسک) غوره کولو لپاره اړین دی.

فنکشن (لکه په دې پروژه کې د نورو دندو په څیر) د پور اخیستلو تخنیک کاروي، د فعالیت پایله د دې فنکشن زنګ وهلو لپاره د فیس تادیه تمویل کوي. د دې حل څخه مننه، یو کاروونکي چې یوازې یو بټوه رامینځته کړې کولی شي سمدلاسه د سیسټم سره کار وکړي او اړتیا نلري د یوې شتمنۍ ترلاسه کولو یا ترلاسه کولو مسله کې حیرانتیا ولري چې هغه ته اجازه ورکوي د لیږد فیس تادیه کړي.

د ثبت کولو فعالیت پایله دوه ریکارډونه دي:

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

دا د مخکینۍ او شاته لیدو ته اجازه ورکوي (د دې کارونکي راجع کونکی او د دې کارونکي ټول راجع کول).

د فنډ فعالیت د ریښتیني فعالیت د پراختیا لپاره یوه نمونه ده. په وړاندې شوي فورمه کې، دا د لیږد لخوا لیږدول شوي ټولې فنډونه اخلي او د 1st، 2nd، 3rd کچو راجع کونکي حسابونو ته یې توزیع کوي، "کیش بیک" حساب او "بدلون" حساب ته (هر هغه څه چې پخوانیو حسابونو ته د ویشلو پرمهال پاتې کیږي دلته ترلاسه کیږي).

کیش بیک د راجع کولو سیسټم کې برخه اخیستو لپاره د پای کارونکي هڅولو یوه وسیله ده. د سیسټم لخوا د "کیش بیک" په بڼه تادیه شوي کمیسیون برخه د کارونکي لخوا د راجع کولو لپاره د انعامونو په څیر بیرته اخیستل کیدی شي.

کله چې د راجع کولو سیسټم کاروئ، د فنډ فعالیت باید تعدیل شي، د سمارټ حساب اصلي منطق کې جوړ شوی چې سیسټم به یې کار کوي. د مثال په توګه، که چیرې د شرط لپاره د راجع کولو انعام ورکړل شي، نو د فنډ فعالیت باید په منطق کې رامینځته شي چیرې چې شرط جوړ شوی وي (یا بل هدف عمل ترسره کیږي د کوم لپاره چې انعام ورکول کیږي). په دې خصوصیت کې کوډ شوي د راجع کولو انعامونو درې درجې شتون لري. که تاسو غواړئ ډیر یا لږ کچې رامینځته کړئ ، نو دا په کوډ کې هم سم شوی. د انعام فیصدي د سطح 1-سطح 3 ثابتو لخوا ټاکل کیږي، په کوډ کې دا حساب کیږي اندازه * کچه / 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 ترمنځ یو پل دی. د چوکاټ څخه خپلواک خلاصون پرت پلي کوي (هر یو کارول کیدی شي). فعال فعالیتونه (راجستر کول، ایستل) داسې انګیرل کیږي چې د ویوز کیپر په سیسټم کې نصب شوی، کتابتون پخپله دا نه ګوري.

د تطبیق طریقې:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

د میتودونو فعالیت د نومونو څخه څرګند دی ، پیرامیټونه او د راستنیدو ډاټا په کوډ کې بیان شوي. د راجستر فعالیت اضافي نظرونو ته اړتیا لري - دا د لیږد ID انتخاب دور پیل کوي ترڅو دا په 123 کې پیل شي - دا د PoW کیپچا دی چې پورته تشریح شوی، کوم چې د ډله ایزو ثبتونو په وړاندې ساتنه کوي. فنکشن د اړین id سره معامله پیدا کوي، او بیا یې د Waves Keeper له لارې لاسلیک کوي.

د DEX وابسته برنامه په کې شتون لري GitHub.com.

سرچینه: www.habr.com

Add a comment