تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

مرحبا بالجميع!

في الآونة الأخيرة ، Waves Labs أعلن منافسة للمطورين المكرسين للإصدار لشبكة اختبار تمديد لغة العقد الذكي RIDE لتطبيقات Ride4Dapps اللامركزية!

اخترنا حالة DAO لأن الجفن تخطط لتطوير تطبيق dApp مع وظائف اجتماعية: التصويت ، وجمع الأموال ، وإدارة الثقة ، وما إلى ذلك.
بدأنا بمثال بسيط في جلسات الأسئلة والأجوبة و ركوب IDE - مثال مع المحفظة المشتركة.

دعنا نحلل هذا المثال ونختبر الفرضيات ونأخذ في الاعتبار بعض الشذوذ:

دعونا نحصل على أليس - مالك dApp
Boob و Cooper شريكان في Alice ، مؤسسي Alice-BC DAO
نيلي صاحب عمل يحتاج إلى تمويل
بنك - بنك يقوم بتوزيع التوكنات

المرحلة 1. تهيئة الأرصدة

لتلقي الرموز المميزة في شبكة اختبار الموجات ، تحتاج إلى الاتصال صنبور وحدد العنوان الذي تريد إرسال الرموز إليه.
يمكن العثور على العنوان في IDE من خلال الكشف عن تفاصيل الحساب.
حدد Bank 10 WAVES. بعد أن نتحقق من وصولهم عبر مستكشف الكتلة والمعاملات: المراجع

لنقم الآن بتوزيع الرموز المميزة من البنك على باقي المشاركين. (ملاحظات: جميع المعاملات على شبكة الموجات ليست مجانية ، لذا يلزم وجود حد أدنى من الرصيد الإيجابي لجميع المشاركين من أجل إجراء المعاملات).

1 WAVES = 100000000 وحدة (موجات) لأن الكميات يمكن أن تكون عددًا صحيحًا فقط
0.01 WAVES (رسوم المعاملات) = 1000000

بنك -> [3 موجات] -> أليس ، عبر TransferTransaction (النوع: 4).

نتحقق من أن EED ، التي يتم من خلالها توقيع المعاملات ، يتوافق مع مصرفنا:
تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

إذا لم يكن لديك عبارات أولية متطابقة ، فما عليك سوى التبديل إليها في علامة التبويب الحسابات والتحقق مرة أخرى.
بعد ذلك ، نقوم بإنشاء وإعلان وتوقيع معاملة على تحويل 3 WAVES Alice.
يمكنك أيضًا معرفة بيانات أليس من خلال متغير env.accounts. يبدأ الترقيم من 0 ، لذا فإن Alice هي env.accounts [1].
تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

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

يمكن أيضًا ملاحظة النتيجة في المتصفح ، وسيتم إرجاع رابط لها إلينا فورًا بعد التنفيذ المعاملات.

نتأكد من تجديد رصيد Alice بـ 3 موجات ، و 10 - 3 - 0.01 = 0.699 تظل في رصيد البنك.
تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

نرسل Boob و Cooper بواسطة 3 WAVES و Neli و Xena و Mark بمقدار 0.2 WAVES بنفس الطريقة.
(ملاحظات: لقد ارتكبنا خطأ بحرف واحد وأرسلنا Neli 0.02 WAVES. كن حذرًا!)

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

بعد تجديد أرصدة جميع المشاركين نرى:
تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

المرحلة 2. إنشاء حساب dApp

لقد اتفقنا على أن أليس هي منشئ ومالك التطبيق اللامركزي.
في الحسابات ، امض قدمًا وقم بتعيينها على أنها SEED وتحقق من env.SEED يطابق أليس.

دعنا نحاول تثبيت أبسط برنامج نصي ممكن (عقد) على حساب Alice.
جهات الاتصال الذكية في Waves عبارة عن مسندات تمنع أو تسمح بتنفيذ نوع من المعاملات الصادرة في ظل ظروف معينة. في هذه الحالة ، هذا الشرط دائمًا. كود العقد صحيح. نسمي نشر ().

تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

رسوم كل معاملة setScript 1400000/100000000 = 0.014 WAVES. Alice لديها 2.986 WAVES متبقية على ميزانها.

الآن دعنا نحاول تثبيت منطق عقد ذكي أكثر تعقيدًا على حساب Alice ، الموضح في مثال

Ride4Dapps يتضمن الآن نوعين جديدين من التعليقات التوضيحية:

  1. Callable (i) - يأخذ كمعامل i ، بيانات حول الحساب المسمى / الموقّع على المعاملة. نتيجة هذه الوظيفة هي التي تحدد التغيير في حالة حساب dApp. يمكن للحسابات الأخرى إنشاء معاملات وتنفيذ الوظائف باستخدام هذا التعليق التوضيحي وتغيير حالة حساب dApp.
  2. Verifier (TX) - التحقق من المعاملات مع معامل tx. يتوافق مع منطق المسندات من RIDE. في هذا التعبير يمكنك السماح أو حظر المزيد من التغييرات في منطق العقود الذكية على حساب dApp.

دعنا نفعل DAPP حساب كمحفظة مشتركة لجميع المشاركين.
تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

للتحقق من العقد النشط حاليًا على الحساب ، يمكنك نسخ كود base64 الخاص بالعقد الذكي في مستكشف الكتل والتعرف عليه من خلال برنامج فك التحويل البرمجي (مثلا)
تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)
تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)
تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

نتأكد من أن منطق العقد الذكي يطابق ما نتوقعه.
Alice لديها 2.972 WAVES متبقية على ميزانها.

هذا dApp يتتبع مقدار مساهمة كل من المشاركين في الصندوق العام من خلال الآلية معاملة البيانات - DataEntry (currentKey ، newAmount)، حيث currentKey هو الحساب الذي يستدعي وظيفة الإيداع ، و newAmount هو قيمة الرصيد المتجدد.

قام Boob و Cooper بإيداع 1 WAVES في حساب dApp.
تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

نرتكب خطأ ولن تتم المعاملة. نظرًا لأننا ، على الرغم من حقيقة أننا كنا مقتنعين بأننا كنا نقوم بصفقة نيابة عن بوب ، فقد أخطأنا في المؤشر وأشرنا إلى حساب مصرفي لا يحتوي على عقد ذكي. هنا تجدر الإشارة إلى نقطة مهمة - للمحاولات الفاشلة لبدء المعاملات ، العمولة لم تتم إزالة! Alice لديها 2.972 WAVES متبقية على ميزانها. بوب لديه 3 موجات.

أرسل بوب 1 WAVES إلى حساب dApp.

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

تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

بوب لديه 1.99 WAVES متبقية. أي دفع بوب عمولة 0.01 WAVES

تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

كان لدى أليس 2.972 WAVES على ميزانها ، وأصبح 3.972. تم أيضًا تسجيل معاملة على حساب Alice ، ولكن لم يتم تحصيل أي عمولة من حساب dApp (Alice).
بعد أن قامت Cooper أيضًا بتجديد الحساب ، كان لدى أليس 4.972 WAVES في رصيدها.

تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

يمكنك معرفة من يمتلك عدد WAVES في المحفظة العامة في مستكشف الكتل في علامة التبويب البيانات.

غير كوبر رأيه بشأن ترك مبلغ 1 WAVES في المحفظة العامة وقرر سحب نصف الروابط. للقيام بذلك ، يجب استدعاء وظيفة السحب.

تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

ومع ذلك ، فقد ارتكبنا خطأ مرة أخرى ، لأن وظيفة السحب لها معايير مختلفة تمامًا ، وتوقيع مختلف. عند تصميم عقود ذكية على RIDE4DAPPS ، يجب الانتباه إلى هذه النقطة

تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

كوبر لديه 2.48 WAVES في ميزانيته العمومية. 3 موجات على التوالي - 1 - 0.01 ، ثم + 0.5 - 0.01. وفقًا لذلك ، تكلفة كل مكالمة للإيداع والسحب 0.01 WAVES. نتيجة لذلك ، تم تغيير الإدخالات في جدول مالكي dApps على النحو التالي.

تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

قرر بوب أيضًا سحب بعض الأموال من المحفظة العامة ، لكنه ارتكب خطأ وحاول استخراج 1.5 WAVES.

تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

ومع ذلك ، في العقد الذكي كان هناك فحص لمثل هذا الموقف.

Xena محتال حاول سحب 1 WAVES من الحساب العام.

تعلم كيفية كتابة عقود Waves الذكية على RIDE و RIDE4DAPPS. الجزء 1 (محفظة متعددة المستخدمين)

هي أيضا فشلت.

في الجزء التالي ، سننظر في القضايا الأكثر تعقيدًا المتعلقة بنقص حساب Alice dApp.

المصدر: www.habr.com

إضافة تعليق