RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

ہر کسی کو خوش!

ابھی حال ہی میں، Waves Labs اعلان کیا ٹیسٹ نیٹ ورک میں وکندریقرت ایپلی کیشنز Ride4Dapps کے لیے RIDE سمارٹ کنٹریکٹ لینگویج ایکسٹینشن کے اجراء کے لیے وقف ڈیولپرز کے لیے مقابلہ!

ہم نے ڈی اے او کیس کا انتخاب کیا کیونکہ وینچری سماجی افعال کے ساتھ dApps تیار کرنے کا منصوبہ: ووٹنگ، فنڈ ریزنگ، ٹرسٹ مینجمنٹ وغیرہ۔
ہم نے ایک سادہ مثال کے ساتھ شروع کیا۔ سوال و جواب کے سیشنز اور رائڈ IDE - مثال کے ساتھ مشترکہ پرس.

آئیے اس مثال کو دیکھیں، مفروضوں کی جانچ کریں اور کچھ عجیب و غریب چیزوں کو دیکھیں:

ہمارے پاس Alice - dApp Owner ہے۔
بوب اور کوپر ایلس کے شراکت دار ہیں، ایلس-BC DAO کے شریک بانی ہیں۔
نیلی ایک کاروباری مالک ہے جسے فنانسنگ کی ضرورت ہے۔
بینک - ایک بینک جو ٹوکن تقسیم کرتا ہے۔

مرحلہ 1۔ بیلنس کا آغاز

لہروں کے ٹیسٹ نیٹ ورک پر ٹوکن حاصل کرنے کے لیے، آپ کو رابطہ کرنے کی ضرورت ہے۔ ٹونٹی اور اس پتے کی نشاندہی کریں جس پر ٹوکن بھیجنا ہے۔
آپ اپنے اکاؤنٹ کی تفصیلات کھول کر IDE میں پتہ تلاش کر سکتے ہیں۔
ہم بینک 10 لہروں کو نمایاں کرتے ہیں۔ پھر ہم چیک کرتے ہیں کہ وہ بلاک اور ٹرانزیکشن براؤزر کے ذریعے پہنچے ہیں: جائزہ لینے والا

اب آئیے بینک سے ٹوکن باقی شرکاء میں تقسیم کرتے ہیں۔ (نوٹ: ویوز نیٹ ورک پر تمام ٹرانزیکشنز مفت نہیں ہیں، اس لیے تمام شرکاء کے لیے لین دین کرنے کے لیے کم از کم مثبت بیلنس ضروری ہے)۔

1 لہریں = 100000000 یونٹس (wavelets)، کیونکہ مقداریں صرف عددی ہوسکتی ہیں
0.01 لہریں (ٹرانزیکشن فیس) ​​= 1000000

بینک -> [3 لہروں] -> ایلس، ٹرانسفر ٹرانزیکشن کے ذریعے (قسم: 4)۔

ہم چیک کرتے ہیں کہ env.SEED جس سے لین دین پر دستخط کیے گئے ہیں وہ ہمارے بینک سے میل کھاتا ہے:
RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

اگر آپ کے پاس مماثل بیج کا جملہ نہیں ہے، تو بس اکاؤنٹس ٹیب میں اس پر سوئچ کریں اور دوبارہ چیک کریں۔
اس کے بعد، ہم 3 WAVES ایلس کی منتقلی کے لیے ایک ٹرانزیکشن بناتے، اعلان کرتے اور اس پر دستخط کرتے ہیں۔
آپ env.accounts متغیر کے ذریعے ایلس کا ڈیٹا بھی تلاش کر سکتے ہیں۔ نمبرنگ 0 سے شروع ہوتی ہے، لہذا ایلس env.accounts ہے[1]۔
RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))

نتیجہ براؤزر میں بھی دیکھا جا سکتا ہے، عملدرآمد کے فوراً بعد اس کا ایک لنک ہمیں واپس کر دیا جائے گا۔ لین دین.

ہم اس بات کو یقینی بناتے ہیں کہ ایلس کا بیلنس 3 لہروں سے بھر گیا ہے، اور بینک بیلنس 10 - 3 - 0.01 = 0.699 پر برقرار ہے۔
RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

ہم Boob اور Cooper 3 WAVES ہر ایک کو بھیجتے ہیں، اور Neli، Xena اور Mark 0.2 WAVES ہر ایک کو اسی طرح بھیجتے ہیں۔
(نوٹ: ہم نے ایک حرف کی غلطی کی اور نیلی 0.02 لہریں بھیجیں۔ ہوشیار رہیں!)

broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))

تمام شرکاء کے بیلنس کو بھرنے کے بعد، ہم دیکھتے ہیں:
RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

مرحلہ 2۔ ایک dApp اکاؤنٹ بنائیں

ہم نے اتفاق کیا کہ ایلس وکندریقرت ایپلی کیشن کی خالق اور مالک ہوگی۔
اکاؤنٹس پر جائیں، اسے SEED کے طور پر سیٹ کریں اور env.SEED ایلس سے میل کھاتا ہے۔

آئیے ایلس کے اکاؤنٹ پر آسان ترین اسکرپٹ (معاہدہ) انسٹال کرنے کی کوشش کرتے ہیں۔
لہروں میں سمارٹ رابطے وہ پیشین گوئیاں ہیں جو کسی بھی قسم کے آؤٹ گوئنگ ٹرانزیکشن کو کچھ شرائط کے تحت ہونے کی اجازت دیتی ہیں۔ اس صورت میں، یہ حالت ہمیشہ ہے. معاہدہ کوڈ درست ہے۔ کال تعیناتی ()۔

RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

فیس فی سیٹ اسکرپٹ ٹرانزیکشن 1400000/100000000 = 0.014 WAVES۔ ایلس کے بیلنس میں 2.986 لہریں باقی ہیں۔

آئیے اب ایلس اکاؤنٹ پر مزید پیچیدہ سمارٹ کنٹریکٹ منطق کو انسٹال کرنے کی کوشش کرتے ہیں، جس میں بیان کیا گیا ہے۔ مثال

Ride4Dapps اب تشریح کی 2 نئی اقسام شامل ہیں:

  1. @Callable(i) - ایک پیرامیٹر i کے طور پر لیتا ہے، اس ڈیٹا کے بارے میں جس اکاؤنٹ نے لین دین کو بلایا/سائن کیا۔ یہ اس فنکشن کا نتیجہ ہے جو dApp اکاؤنٹ کی حالت میں تبدیلی کا تعین کرتا ہے۔ دوسرے اکاؤنٹس اس تشریح کے ساتھ لین دین بنا سکتے ہیں اور افعال کو انجام دے سکتے ہیں اور dApp اکاؤنٹ کی حالت کو تبدیل کر سکتے ہیں۔
  2. @Verifier(tx) - ٹرانزیکشن ٹی ایکس پیرامیٹر کے ساتھ لین دین کا تصدیق کنندہ۔ RIDE سے پیش گوئی کی منطق سے مطابقت رکھتا ہے۔ اس اظہار میں آپ dApp اکاؤنٹ پر سمارٹ معاہدوں کی منطق میں مزید تبدیلیوں کی اجازت دے سکتے ہیں یا منع کر سکتے ہیں۔

چلو کرتے ہیں ڈی اے پی تمام شرکاء کے لیے ایک مشترکہ بٹوے کے طور پر اکاؤنٹ۔
RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

Чтобы проверить то, какой сейчас контракт активен на аккаунте можно в обозревателе блоков скопировать base64 код смарт-контракта и распознать его через декомпилятор (مثال کے طور پر)
RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)
RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)
RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

ہم اس بات کو یقینی بناتے ہیں کہ سمارٹ کنٹریکٹ کی منطق ہماری توقع کے مطابق ہو۔
ایلس کے بیلنس میں 2.972 لہریں باقی ہیں۔

یہ dApp اس بات کو ٹریک کرتا ہے کہ ہر شریک ایک طریقہ کار کے ذریعے مشترکہ فنڈ میں کتنا حصہ ڈالتا ہے۔ ڈیٹا ٹرانزیکشن - ڈیٹا اینٹری (موجودہ کلید، نئی رقم)، جہاں currentKey وہ اکاؤنٹ ہے جو ڈپازٹ فنکشن کو کال کرتا ہے، اور newAmount دوبارہ بھرے ہوئے بیلنس کی قدر ہے۔

Boob اور Cooper 1 WAVES کے ساتھ dApp اکاؤنٹ میں اپنی جمع کراتے ہیں۔
RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

ہم غلطی کرتے ہیں اور لین دین نہیں ہوتا۔ چونکہ، اس حقیقت کے باوجود کہ ہمیں یقین تھا کہ ہم Bob کی جانب سے لین دین کر رہے ہیں، ہم نے انڈیکس میں غلطی کی اور ایک ایسے بینک اکاؤنٹ کی نشاندہی کی جس کا کوئی سمارٹ معاہدہ نہیں ہے۔ یہاں ایک اہم نکتہ پر توجہ دینا ضروری ہے - لین دین شروع کرنے کی ناکام کوششوں کے لیے ایک فیس ہے۔ ہٹایا نہیں جا سکتا! ایلس کے بیلنس میں 2.972 لہریں باقی ہیں۔ باب میں 3 لہریں ہیں۔

باب نے dApp اکاؤنٹ میں 1 لہریں بھیجیں۔

broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))

RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

باب کے پاس 1.99 لہریں باقی ہیں۔ یعنی، باب نے 0.01 WAVES کمیشن ادا کیا۔

RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

ایلس کے بیلنس پر 2.972 لہریں تھیں، اب یہ 3.972 ہے۔ ایلس اکاؤنٹ پر بھی ٹرانزیکشن رجسٹر کی گئی تھی، لیکن ڈی اے پی اکاؤنٹ (ایلس) سے کوئی کمیشن نہیں لیا گیا تھا۔
کوپر کے اکاؤنٹ کو دوبارہ بھرنے کے بعد، ایلس کا بیلنس 4.972 WAVES ہو گیا۔

RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

آپ ڈیٹا ٹیب میں بلاک ایکسپلورر میں یہ معلوم کر سکتے ہیں کہ عام پرس میں کتنے WAVES کا مالک ہے۔

کوپر نے عام بٹوے پر 1 WAVES کی رقم چھوڑنے کے بارے میں اپنا خیال بدل لیا اور نصف وابستگی واپس لینے کا فیصلہ کیا۔ ایسا کرنے کے لیے، اسے واپسی کی تقریب کو کال کرنا چاہیے۔

RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

تاہم، ہم دوبارہ غلط تھے، کیونکہ واپس لینے کے فنکشن میں بالکل مختلف پیرامیٹرز اور ایک مختلف دستخط ہوتے ہیں۔ جب آپ RIDE4DAPPS پر سمارٹ کنٹریکٹس ڈیزائن کرتے ہیں تو آپ کو اس نکتے پر توجہ دینی چاہیے۔

RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

کوپر کی بیلنس شیٹ پر اب 2.48 لہریں ہیں۔ اس کے مطابق، 3 لہریں - 1 - 0.01، اور پھر + 0.5 - 0.01۔ اس کے مطابق، جمع کرنے اور نکالنے کے لیے ہر کال کی قیمت 0.01 WAVES ہے۔ نتیجے کے طور پر، dApps کے مالکان کے ٹیبل میں اندراجات درج ذیل تبدیل ہو گئے۔

RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

باب نے بھی مشترکہ بٹوے سے کچھ رقم نکالنے کا فیصلہ کیا، لیکن غلطی کی اور 1.5 لہریں نکالنے کی کوشش کی۔

RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

تاہم، سمارٹ کنٹریکٹ میں اس صورتحال کے لیے ایک چیک تھا۔

Xena ایک سکیمر ہے، اس نے کل اکاؤنٹ سے 1 WAVES نکالنے کی کوشش کی۔

RIDE اور RIDE4DAPPS پر ویوز سمارٹ کنٹریکٹ لکھنا سیکھنا۔ حصہ 1 (ملٹی یوزر والیٹ)

یہ اس کے لیے بھی کام نہیں آیا۔

اگلے حصے میں، ہم Alice dApp اکاؤنٹ کی خرابی سے متعلق مزید پیچیدہ مسائل پر غور کریں گے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں