غير مرڪزي، کليل ذريعو الحاق پروگرام Waves blockchain تي

Waves blockchain تي هڪ غير مرڪزي الحاق پروگرام، بيٽيڪس ٽيم پاران Waves Labs گرانٽ جي حصي طور لاڳو ڪيو ويو.

پوسٽ اشتهار نه آهي! پروگرام کليل ذريعو آهي، ان جو استعمال ۽ تقسيم مفت آهي. پروگرام جو استعمال dApp ايپليڪيشنن جي ترقي کي تيز ڪري ٿو ۽ عام طور تي غير مرڪزيت کي فروغ ڏئي ٿو، جيڪو هر انٽرنيٽ استعمال ڪندڙ کي فائدو ڏئي ٿو.

غير مرڪزي، کليل ذريعو الحاق پروگرام Waves blockchain تي

ملندڙ پروگرامن لاءِ پيش ڪيل dApp منصوبن لاءِ هڪ ٽيمپليٽ آهي جنهن ۾ الحاق شامل آهن انهن جي ڪارڪردگي جي حصي طور. ڪوڊ ڪاپي ڪرڻ لاءِ ٽيمپليٽ طور استعمال ڪري سگھجي ٿو، لائبريري جي طور تي، يا ٽيڪنيڪل عمل درآمد لاءِ خيالن جي سيٽ جي طور تي.

ڪارڪردگي جي لحاظ کان، هي هڪ باقاعده الحاق وارو نظام آهي جيڪو هڪ ريفرر سان رجسٽريشن لاڳو ڪري ٿو، حوالن لاءِ انعامن جي گھڻ سطحي جمع ۽ سسٽم ۾ رجسٽريشن لاءِ حوصلا افزائي (ڪيش بيڪ). سسٽم هڪ "خالص" ڊي ايپ آهي، اهو آهي، ويب ايپليڪيشن سڌو سنئون بلاڪچين سان رابطو ڪري ٿي، بغير ان جي پنهنجي پس منظر، ڊيٽابيس وغيره وغيره.

استعمال ٿيل ٽيڪنڪ جيڪي ٻين ڪيترن ئي منصوبن ۾ پڻ ڪارائتو ٿي سگهن ٿيون:

  • سمارٽ اڪائونٽ کي فوري طور تي واپسي سان قرض ۾ ڪال ڪرڻ (ڪال جي وقت ڪال جي ادائيگي لاءِ اڪائونٽ تي ڪو ٽوڪن نه هوندا آهن، پر اهي ڪال جي نتيجي ۾ ظاهر ٿيندا آهن).
  • PoW-captcha - سمارٽ اڪائونٽ افعال لاءِ اعليٰ فريڪوئنسي خودڪار ڪالن جي خلاف تحفظ - ڪيپچا جي برابر، پر ڪمپيوٽنگ وسيلن جي استعمال جي ثبوت ذريعي.
  • ٽيمپليٽ استعمال ڪندي ڊيٽا ڪيچ لاءِ سوال.

اپليڪيشن تي مشتمل آهي:

  • سمارٽ اڪائونٽ ڪوڊ Ride4dapps ٻولي ۾ (جيڪو، جيئن رٿيل، مکيه سمارٽ اڪائونٽ ۾ ضم ڪيو ويو آهي، جنهن لاءِ الحاق جي ڪارڪردگي کي لاڳو ڪرڻ جي ضرورت آهي)؛
  • js wrapper جيڪو WAVES NODE REST API تي تجزيي جي سطح کي لاڳو ڪري ٿو.
  • ڪوڊ vuejs فريم ورڪ تي، جيڪو لائبريري ۽ RIDE ڪوڊ استعمال ڪرڻ جو هڪ مثال آهي.

اچو ته سڀني فهرستن جي خاصيتن کي بيان ڪريو.

فوري طور تي واپسي سان قرض لاءِ سمارٽ اڪائونٽ ڪال ڪرڻ

ڪالنگ InvokeScript ٽرانزيڪشن کي شروع ڪرڻ واري اڪائونٽ مان فيس جي ادائيگي جي ضرورت آهي. اهو ڪو مسئلو ناهي جيڪڏهن توهان بلاڪچين گيڪس لاءِ هڪ پروجيڪٽ ٺاهي رهيا آهيو جن وٽ انهن جي اڪائونٽ تي WAVES ٽوڪن جي هڪ خاص رقم آهي، پر جيڪڏهن پيداوار جو مقصد عام ماڻهن جي استعمال لاءِ آهي، اهو هڪ سنگين مسئلو بڻجي وڃي ٿو. آخرڪار، صارف کي خريد ڪرڻ جو خيال رکڻو پوندو WAVES ٽوڪن (يا ٻيو مناسب اثاثو جيڪو ٽرانزيڪشن جي ادائيگي لاء استعمال ڪري سگهجي ٿو)، جيڪو پروجيڪٽ ۾ داخل ٿيڻ ۾ اڳ ۾ ئي وڏي رڪاوٽ وڌائي ٿو. اسان صارفين کي هڪ اثاثو ورهائي سگهون ٿا جيڪي ٽرانزيڪشن لاء ادا ڪرڻ جي قابل هوندا ۽ انهن جي غلط استعمال جي خطري کي منهن ڏيڻ جي قابل هوندا جڏهن اسان جي سسٽم مان مائع اثاثو پمپ ڪرڻ لاء خودڪار سسٽم ٺاهيا ويندا.

اهو تمام آسان هوندو جيڪڏهن اهو ممڪن هجي ته InvokeScript کي "وصول ڪندڙ جي خرچ تي" (اها سمارٽ اڪائونٽ جنهن تي اسڪرپٽ نصب ٿيل آهي)، ۽ اهڙو امڪان، جيتوڻيڪ واضح طريقي سان، موجود ناهي.

جيڪڏهن InvokeScript جي اندر توهان ڪالر جي ايڊريس تي هڪ اسڪرپٽ ٽرانسفر ڪريو ٿا، جيڪو خرچ ڪيل فيس ٽوڪن لاءِ معاوضو ڏئي ٿو، ته پوءِ اهڙي ڪال ڪامياب ٿيندي، جيتوڻيڪ ڪال جي وقت ڪالنگ اڪائونٽ تي ڪو به اثاثو نه هو. اهو ممڪن آهي ڇاڪاڻ ته ڪافي ٽوڪن لاءِ چيڪ ڪيو ويندو آهي ٽرانزيڪشن سڏجڻ کان پوءِ، بلڪ ان کان اڳ، ته جيئن ٽرانزيڪشن کي ڪريڊٽ تي ڪري سگهجي، فوري طور تي واپسي جي تابع.

اسڪرپٽ جي منتقلي (i.caller، i.fee، يونٽ)

هيٺ ڏنل ڪوڊ سمارٽ اڪائونٽ فنڊ استعمال ڪندي خرچ ڪيل فيس کي واپس ڏئي ٿو. ھن خصوصيت جي غلط استعمال کان بچائڻ لاءِ، اھو چيڪ استعمال ڪرڻ ضروري آھي ته ڪال ڪندڙ فيس کي گھربل اثاثن ۾ ۽ مناسب حدن اندر خرچ ڪري ٿو:

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-ڪيپچا

پروف-آف-ڪم ڪيپچا جو بلڪل خيال نئون ناهي ۽ اڳ ۾ ئي مختلف منصوبن ۾ لاڳو ڪيو ويو آهي، جن ۾ WAVES جي بنياد تي لاڳو ڪيل آهن. خيال اهو آهي ته اهڙو عمل انجام ڏيڻ لاءِ جيڪو اسان جي پروجيڪٽ جا وسيلا استعمال ڪري، ڪالر کي پڻ پنهنجا وسيلا خرچ ڪرڻ گهرجن، جنهن ڪري وسيلا ختم ڪرڻ جو حملو ڪافي مهانگو ٿئي ٿو. هڪ تمام آسان ۽ گهٽ قيمت جي تصديق لاءِ ته ٽرانزيڪشن جي موڪليندڙ PoW مسئلو حل ڪري ڇڏيو آهي، اتي هڪ ٽرانزيڪشن آئي ڊي چيڪ آهي:

جيڪڏهن وٺو (toBase58String(i.transactionId), 3) != “123” پوءِ اڇلايو (“ڪم ناڪام ٿيڻ جو ثبوت”) ٻيو

ٽرانزيڪشن کي انجام ڏيڻ لاءِ، ڪال ڪندڙ کي لازمي طور تي اهڙن پيرا ميٽرز کي چونڊڻ گهرجي ته جيئن ان جو بنيادي 58 ڪوڊ (id) نمبرن 123 سان شروع ٿئي، جيڪو سراسري طور تي پروسيسر جي وقت جي ڏهن سيڪنڊن سان ملندو آهي ۽ عام طور تي اسان جي ڪم لاءِ مناسب هوندو آهي. جيڪڏهن هڪ آسان يا وڌيڪ پيچيده PoW گهربل هجي، پوء اهو ڪم آساني سان واضح طريقي سان تبديل ڪري سگهجي ٿو.

ٽيمپليٽ استعمال ڪندي ڊيٽا ڪيچ لاءِ سوال

بلاڪچين کي ڊيٽابيس جي طور تي استعمال ڪرڻ لاءِ، ٽيمپليٽس جي بنياد تي ڪيئي ويل جي طور تي ڊيٽابيس کي سوال ڪرڻ لاءِ API اوزار هجڻ ضروري آهي. اهڙي هڪ ٽول کٽ جولاء 2019 جي شروعات ۾ هڪ پيٽرولر جي صورت ۾ ظاهر ٿيو ملن REST API جي درخواست تي /address/data?matches=regexp. هاڻي، جيڪڏهن اسان کي ويب ايپليڪيشن مان هڪ کان وڌيڪ ڪنجيون حاصل ڪرڻ گهرجن ۽ سڀ ڪيئي هڪ ئي وقت ۾ نه، پر صرف ڪجهه گروپ، ته پوءِ اسان ڪيئي نالي سان چونڊ ڪري سگهون ٿا. مثال طور، هن منصوبي ۾، واپسي جي ٽرانزيڪشن انڪوڊ ٿيل آهن جيئن

withdraw_${userAddress}_${txid}

جيڪو توهان کي اجازت ڏئي ٿو ته ڪنهن به ڏنل ايڊريس لاءِ فنڊ ڪڍڻ لاءِ ٽرانزيڪشن جي لسٽ حاصل ڪري ٽيمپليٽ استعمال ڪندي:

?matches=withdraw_${userAddress}_.*

هاڻي اچو ته ختم ٿيل حل جي اجزاء کي ڏسو.

Vuejs ڪوڊ

ڪوڊ حقيقي منصوبي جي ويجهو ڪم ڪندڙ ڊيمو آهي. اهو Waves Keeper ذريعي لاگ ان کي لاڳو ڪري ٿو ۽ affiliate.js لائبريري سان ڪم ڪري ٿو، جنهن سان اهو صارف کي سسٽم ۾ رجسٽر ڪري ٿو، ٽرانزيڪشن ڊيٽا بابت سوال ڪري ٿو، ۽ توهان کي صارف جي اڪائونٽ ۾ ڪمايل فنڊ واپس وٺڻ جي اجازت پڻ ڏئي ٿو.

غير مرڪزي، کليل ذريعو الحاق پروگرام Waves blockchain تي

RIDE لاء ڪوڊ

رجسٽر، فنڊ ۽ ڪڍڻ جي ڪمن تي مشتمل آهي.

رجسٽري فنڪشن سسٽم تي صارف کي رجسٽر ڪري ٿو. ان ۾ ٻه پيرا ميٽر آهن: ريفرر (ريفرر ايڊريس) ۽ لوڻ پيٽرولر، جيڪو فنڪشن ڪوڊ ۾ استعمال نه ڪيو ويو آهي، جيڪو ٽرانزيڪشن id (PoW-captcha ٽاسڪ) کي چونڊڻ لاءِ گهربل آهي.

فنڪشن (جهڙوڪ هن منصوبي جي ٻين ڪمن وانگر) قرض ڪال ٽيڪنڪ استعمال ڪري ٿو، فنڪشن جو نتيجو اهو آهي ته هن فنڪشن کي ڪال ڪرڻ لاء فيس جي ادائيگي لاء فنانس. هن حل جي مهرباني، هڪ صارف جيڪو صرف هڪ والٽ ٺاهيو آهي فوري طور تي سسٽم سان ڪم ڪري سگهي ٿو ۽ هڪ اثاثو خريد ڪرڻ يا حاصل ڪرڻ بابت پريشان ٿيڻ جي ضرورت ناهي جيڪا هن کي ٽرانزيڪشن فيس ادا ڪرڻ جي اجازت ڏئي ٿي.

رجسٽريشن فنڪشن جو نتيجو ٻه رڪارڊ آهن:

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

هي اجازت ڏئي ٿو اڳتي ۽ ريورس ڳولها (هڪ ڏنل صارف جو حوالو ۽ ڏنل صارف جي سڀني حوالن).

حقيقي ڪارڪردگي کي ترقي ڪرڻ لاء فنڊ فنڪشن هڪ ٽيمپليٽ کان وڌيڪ آهي. ان جي پيش ڪيل فارم ۾، اهو ٽرانزيڪشن ذريعي منتقل ڪيل سڀني فنڊن کي وٺندو آهي ۽ انهن کي ورهائي ٿو سطح 1، 2، 3 جي حوالن جي اڪائونٽن ۾، "ڪيش بيڪ" اڪائونٽ ۽ "تبديلي" اڪائونٽ ڏانهن (هر شيء جيڪا باقي رهي ٿي جڏهن پوئين کي ورهايو وڃي. اڪائونٽس هتي ويندا آهن).

ڪيش بيڪ آخري صارف کي حوالو ڏيڻ واري نظام ۾ حصو وٺڻ جي حوصلا افزائي ڪرڻ جو هڪ ذريعو آهي. صارف سسٽم طرفان ادا ڪيل ڪميشن جو حصو واپس وٺي سگھي ٿو "ڪيش بيڪ" جي صورت ۾ ساڳئي طريقي سان ريفرلز لاءِ انعام.

جڏهن ريفرل سسٽم استعمال ڪيو وڃي، فنڊ فنڪشن کي تبديل ڪيو وڃي ۽ سمارٽ اڪائونٽ جي بنيادي منطق ۾ ضم ڪيو وڃي جنهن تي سسٽم ڪم ڪندو. مثال طور، جيڪڏهن هڪ ريفرل انعام هڪ شرط لاءِ ادا ڪيو وڃي ٿو، ته پوءِ فنڊ جي فنڪشن کي منطق ۾ ٺاهيو وڃي جتي شرط رکيل هجي (يا ٻيو ٽارگيٽ ڪيل عمل ڪيو ويندو آهي جنهن لاءِ انعام ڏنو ويندو آهي). ريفرل انعامن جا ٽي سطح ھن فنڪشن ۾ ڪوڊ ٿيل آھن. جيڪڏهن توهان کي وڌيڪ يا گهٽ سطح ٺاهڻ جي ضرورت آهي، ته اهو پڻ ڪوڊ ۾ درست ڪيو ويو آهي. انعام جو سيڪڙو ليول 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 جي وچ ۾ هڪ پل آهي. فريم ورڪ کان آزاد هڪ تجزياتي سطح کي لاڳو ڪري ٿو (ڪو به استعمال ڪري سگهجي ٿو). فعال افعال (رجسٽر، ڪڍڻ) فرض ڪن ٿا ته Waves Keeper سسٽم تي نصب ٿيل آهي؛ لائبريري پاڻ ان کي چيڪ نٿو ڪري.

لاڳو ڪرڻ جا طريقا:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

طريقن جي ڪارڪردگي نالن مان واضح آهي؛ پيٽرولر ۽ واپسي ڊيٽا ڪوڊ ۾ بيان ڪيل آهن. رجسٽري فنڪشن کي اضافي تبصرن جي ضرورت آهي - اهو ٽرانزيڪشن id کي چونڊڻ جو هڪ چڪر شروع ڪري ٿو ته جيئن اهو 123 تي شروع ٿئي - هي مٿي بيان ڪيل PoW-ڪيپچا آهي، جيڪو ماس رجسٽريشن جي خلاف حفاظت ڪري ٿو. فنڪشن گهربل id سان ٽرانزيڪشن ڳولي ٿو، ۽ پوء ان کي Waves Keeper ذريعي سائن ان ڪري ٿو.

DEX الحاق پروگرام تي دستياب آهي گٽ هب. com.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو