บทเรียนที่ 2

تعمق أكثر في أمثلة العقود متعددة التوقيع

في هذا الدرس، سنشرع في استكشاف متعمق لهياكل العقود الثلاثة المختلفة متعددة التوقيع المقدمة في الدرس 1: عقد Lambda وعقد MultiSigAction وعقد MultiSigView. تعتبر هذه العقود محورية لفهمها نظرًا للدور الحاسم الذي تلعبه في مجال بلوكتشين والتمويل اللامركزي. سيشمل استكشافنا تفكيكًا دقيقًا لرمزها، وتوضيح ميزاتها الفريدة، ومناقشات حول التطبيقات العملية وحالات الاستخدام.

عقد لامدا متعدد التوقيع

يعد عقد Multisig Lambda قفزة كبيرة في برمجة العقود الذكية نظرًا لاستخدامه لنوع sp.lambda. يقدم إمكانية تنفيذ وظائف عشوائية لم يتم تحديدها مسبقًا في وقت نشر العقد. فيما يلي نظرة عامة مفصلة على مكوناتها الرئيسية:

  1. المعلمات الأولية: تتم تهيئة العقد (__init__) بقائمة الأعضاء المسموح لهم باقتراح المقترحات والتوقيع عليها، والحد الأدنى لعدد التوقيعات المطلوبة لتنفيذ الاقتراح. يتم تخزينها في مخزن العقد (self.data)، إنشاء سجل مرجعي للعقد للعمل.

  2. وظيفة الاقتراح: تعمل وظيفة الاقتراح على إنشاء مقترحات جديدة. يمكن للأعضاء إرسال وظائف lambda (التي تتكون من عمليات عشوائية) يرغبون في تنفيذ العقد. يتم تخزين هذه المقترحات في بنية بيانات big_map ، مع تعيين معرف فريد لكل اقتراح.

  3. وظيفة التوقيع: تسهل وظيفة الإشارة المصادقة على الاقتراح. يمكن للأعضاء التوقيع لدعم المقترحات. يتم جمع هذه التوقيعات، المرفقة بمعرف الاقتراح الفريد، والاحتفاظ بها في big_map منفصل.

  4. وظيفة التنفيذ: تمثل وظيفة التنفيذ جوهر عملية العقد. إذا جمع الاقتراح العدد المطلوب من التوقيعات، يمكن للأعضاء استدعاء هذه الوظيفة لتنفيذ وظيفة lambda المقترحة، وتطبيقها على تخزين العقد.
    يوفر عقد Multisig Lambda تنوعًا واسعًا ومناسبًا للسيناريوهات التي تتطلب هياكل تحكم معقدة ومرنة وديناميكية محتملة، مثل DAOs (المنظمات المستقلة اللامركزية) وخدمات المحفظة مع العديد من المالكين وبروتوكولات DeFi المعقدة.

يتطلب هذا العقد تنفيذ وظائف lambda التعسفية بتوقيعات متعددة. يقدم مفاهيم تقديم وتوقيع وظائف lambda. دعونا نحلل وظائفها:

  1. submit_lambda: تسمح هذه الوظيفة للأعضاء بإرسال وظائف lambda إلى العقد. هذا هو في الأساس اقتراح عملية تعاقدية تتطلب موافقة متعددة التوقيعات. في اللوحة اليمنى من SmartPy IDE، عند التقديم الناجح لوظيفة lambda، ستلاحظ معاملة جديدة بدأها عنوان المرسل إلى عنوان العقد.

  2. vote_lambda: تسمح هذه الوظيفة للأعضاء بالإدلاء بأصواتهم (التوقيعات) لصالح وظيفة lambda المقدمة. بعد التصويت، في لوحة IDE، ستلاحظ معاملة جديدة من عنوان العضو إلى عنوان العقد.

عقد متعدد التوقيعات

يرشد عقد MultiSigaction آلية تصويت ديمقراطية إلى عالم العقود الذكية. في هذا النموذج، يقترح الأعضاء إجراءات محددة ويصوتون عليها وينفذونها عند الوصول إلى النصاب القانوني. يقدم هذا العقد مزيجًا فريدًا من الإجماع البشري مع التنفيذ الآلي للعقد، مما يفرض سيطرة ديمقراطية على سلوك العقد.

المكونات الأساسية لهذا العقد هي:

  1. المعلمات الأولية: تمامًا كما هو الحال في عقد Lambda، يأخذ عقد MultiSigAction قائمة بالأعضاء وعدد الأصوات المطلوبة أثناء التهيئة.

  2. وظيفة اقتراح العمل: تعمل هذه الوظيفة على إضافة مقترحات جديدة. يمكن للأعضاء إرسال الإجراءات المحددة مسبقًا في العقد، وربطها بمعرف فريد. يتم تخزين هذه الإجراءات المقترحة في big_map.

  3. وظيفة إجراء التصويت: تم تصميم هذه الوظيفة للإدلاء بالأصوات لصالح الإجراءات المقترحة. ترتبط الأصوات بالمعرف الفريد للاقتراح ويتم الاحتفاظ بها في big_map مميزة.

  4. وظيفة تنفيذ الإجراء: يتم تشغيل هذه الوظيفة عندما يحصل الاقتراح على عدد كافٍ من الأصوات. يمكن للأعضاء استدعاء هذه الوظيفة لتنفيذ الإجراء المقترح.
    يعتبر عقد MultisigAction مثاليًا للحالات التي تحتاج فيها مجموعة من الأفراد إلى التوصل إلى توافق في الآراء بشأن إجراءات تعاقدية محددة، كما هو الحال في DAOs حيث يصوت الأعضاء على تخصيص الموارد أو تغييرات البروتوكول.

  5. submit_proposal: هذه هي عملية اقتراح إجراء جديد. في سياق مثالنا، يقترح أحد الأعضاء إضافة موقع جديد إلى العقد.

  6. عند تنفيذ هذه العملية على SmartPy IDE، سترى معاملة جديدة يتم إنشاؤها في اللوحة اليمنى لـ IDE. سيشير ملخص المعاملة إلى المرسل (عنوان العضو المقترح) والمستلم (عنوان العقد). قد يبدو الأمر كالتالي:

هنا، تُظهر حالة «OK» أنه تم إرسال الاقتراح بنجاح.

  1. vote_proposal: الخطوة التالية هي التصويت على الاقتراح. تتيح هذه الوظيفة للموقعين الحاليين التصويت على الاقتراح المقدم في الخطوة السابقة.

  2. عندما يصوت الموقّع 1 على الاقتراح، سترى معاملة جديدة، مع الموقّع 1 كمرسل والعقد كمستلم. سيتم تسجيل معاملة مماثلة عندما يصوت الموقّع 2 على الاقتراح:

تشير هذه المعاملات إلى أن كلا من الموقع 1 والموقع 2 قد أدلوا بأصواتهم بنجاح لصالح الاقتراح.

عقد متعدد الأشكال

يحمل عقد MultiSigView مفهوم الإجماع الديمقراطي إلى الأمام ولكنه يطبقه على وحدات البايت العشوائية بدلاً من إجراءات العقد المحددة مسبقًا. يفتح هذا العقد سبلًا يمكن من خلالها تحقيق توافق في الآراء بشأن البيانات الممثلة بالبايت، دون أن يؤدي ذلك على الفور إلى تنفيذ الإجراء.

اللبنات الأساسية لهذا العقد هي:

  1. المعلمات الأولية: كما هو الحال مع العقود السابقة، يبدأ عقد MultiSigView بقائمة الأعضاء ورقم يشير إلى الأصوات المطلوبة.

  2. وظيفة إرسال الاقتراح: تتيح هذه الوظيفة للأعضاء تقديم مقترحات جديدة في شكل وحدات بايت عشوائية. يتم تخزين وحدات البايت في big_map، ويتم فهرستها بواسطة وحدات البايت نفسها، مما يمثل معرف الاقتراح الفريد.

  3. وظيفة اقتراح التصويت: تسمح هذه الوظيفة للأعضاء بتأييد المقترحات. يتم تعقب الأصوات في big_map منفصلة، مرتبطة بمعرف البايت الفريد للاقتراح.

  4. وظيفة التصويت: تتحقق هذه الوظيفة، من وجهة نظر السلسلة، مما إذا كان الاقتراح قد حصل على الأصوات المطلوبة. تقوم بإرجاع قيمة منطقية تشير إلى حالة التصويت على الاقتراح.
    يُعد عقد MultiSigView مفيدًا بشكل خاص في الحالات التي يحتاج فيها العقد الذكي إلى الاحتفاظ بسجل للمقترحات المعتمدة، كما هو الحال في تطبيقات التشفير حيث يمكن أن تمثل وحدات البايت اتفاقيات مجزأة أو براهين أو أي شكل آخر من أشكال البيانات التي تتطلب موافقة جماعية.

ข้อจำกัดความรับผิด
* การลงทุนคริปโตมีความเสี่ยงสูง โปรดดำเนินการด้วยความระมัดระวัง หลักสูตรนี้ไม่ได้มีไว้เพื่อเป็นคำแนะนำในการลงทุน
* หลักสูตรนี้สร้างขึ้นโดยผู้เขียนที่ได้เข้าร่วม Gate Learn ความคิดเห็นของผู้เขียนไม่ได้มาจาก Gate Learn
แคตตาล็อก
บทเรียนที่ 2

تعمق أكثر في أمثلة العقود متعددة التوقيع

في هذا الدرس، سنشرع في استكشاف متعمق لهياكل العقود الثلاثة المختلفة متعددة التوقيع المقدمة في الدرس 1: عقد Lambda وعقد MultiSigAction وعقد MultiSigView. تعتبر هذه العقود محورية لفهمها نظرًا للدور الحاسم الذي تلعبه في مجال بلوكتشين والتمويل اللامركزي. سيشمل استكشافنا تفكيكًا دقيقًا لرمزها، وتوضيح ميزاتها الفريدة، ومناقشات حول التطبيقات العملية وحالات الاستخدام.

عقد لامدا متعدد التوقيع

يعد عقد Multisig Lambda قفزة كبيرة في برمجة العقود الذكية نظرًا لاستخدامه لنوع sp.lambda. يقدم إمكانية تنفيذ وظائف عشوائية لم يتم تحديدها مسبقًا في وقت نشر العقد. فيما يلي نظرة عامة مفصلة على مكوناتها الرئيسية:

  1. المعلمات الأولية: تتم تهيئة العقد (__init__) بقائمة الأعضاء المسموح لهم باقتراح المقترحات والتوقيع عليها، والحد الأدنى لعدد التوقيعات المطلوبة لتنفيذ الاقتراح. يتم تخزينها في مخزن العقد (self.data)، إنشاء سجل مرجعي للعقد للعمل.

  2. وظيفة الاقتراح: تعمل وظيفة الاقتراح على إنشاء مقترحات جديدة. يمكن للأعضاء إرسال وظائف lambda (التي تتكون من عمليات عشوائية) يرغبون في تنفيذ العقد. يتم تخزين هذه المقترحات في بنية بيانات big_map ، مع تعيين معرف فريد لكل اقتراح.

  3. وظيفة التوقيع: تسهل وظيفة الإشارة المصادقة على الاقتراح. يمكن للأعضاء التوقيع لدعم المقترحات. يتم جمع هذه التوقيعات، المرفقة بمعرف الاقتراح الفريد، والاحتفاظ بها في big_map منفصل.

  4. وظيفة التنفيذ: تمثل وظيفة التنفيذ جوهر عملية العقد. إذا جمع الاقتراح العدد المطلوب من التوقيعات، يمكن للأعضاء استدعاء هذه الوظيفة لتنفيذ وظيفة lambda المقترحة، وتطبيقها على تخزين العقد.
    يوفر عقد Multisig Lambda تنوعًا واسعًا ومناسبًا للسيناريوهات التي تتطلب هياكل تحكم معقدة ومرنة وديناميكية محتملة، مثل DAOs (المنظمات المستقلة اللامركزية) وخدمات المحفظة مع العديد من المالكين وبروتوكولات DeFi المعقدة.

يتطلب هذا العقد تنفيذ وظائف lambda التعسفية بتوقيعات متعددة. يقدم مفاهيم تقديم وتوقيع وظائف lambda. دعونا نحلل وظائفها:

  1. submit_lambda: تسمح هذه الوظيفة للأعضاء بإرسال وظائف lambda إلى العقد. هذا هو في الأساس اقتراح عملية تعاقدية تتطلب موافقة متعددة التوقيعات. في اللوحة اليمنى من SmartPy IDE، عند التقديم الناجح لوظيفة lambda، ستلاحظ معاملة جديدة بدأها عنوان المرسل إلى عنوان العقد.

  2. vote_lambda: تسمح هذه الوظيفة للأعضاء بالإدلاء بأصواتهم (التوقيعات) لصالح وظيفة lambda المقدمة. بعد التصويت، في لوحة IDE، ستلاحظ معاملة جديدة من عنوان العضو إلى عنوان العقد.

عقد متعدد التوقيعات

يرشد عقد MultiSigaction آلية تصويت ديمقراطية إلى عالم العقود الذكية. في هذا النموذج، يقترح الأعضاء إجراءات محددة ويصوتون عليها وينفذونها عند الوصول إلى النصاب القانوني. يقدم هذا العقد مزيجًا فريدًا من الإجماع البشري مع التنفيذ الآلي للعقد، مما يفرض سيطرة ديمقراطية على سلوك العقد.

المكونات الأساسية لهذا العقد هي:

  1. المعلمات الأولية: تمامًا كما هو الحال في عقد Lambda، يأخذ عقد MultiSigAction قائمة بالأعضاء وعدد الأصوات المطلوبة أثناء التهيئة.

  2. وظيفة اقتراح العمل: تعمل هذه الوظيفة على إضافة مقترحات جديدة. يمكن للأعضاء إرسال الإجراءات المحددة مسبقًا في العقد، وربطها بمعرف فريد. يتم تخزين هذه الإجراءات المقترحة في big_map.

  3. وظيفة إجراء التصويت: تم تصميم هذه الوظيفة للإدلاء بالأصوات لصالح الإجراءات المقترحة. ترتبط الأصوات بالمعرف الفريد للاقتراح ويتم الاحتفاظ بها في big_map مميزة.

  4. وظيفة تنفيذ الإجراء: يتم تشغيل هذه الوظيفة عندما يحصل الاقتراح على عدد كافٍ من الأصوات. يمكن للأعضاء استدعاء هذه الوظيفة لتنفيذ الإجراء المقترح.
    يعتبر عقد MultisigAction مثاليًا للحالات التي تحتاج فيها مجموعة من الأفراد إلى التوصل إلى توافق في الآراء بشأن إجراءات تعاقدية محددة، كما هو الحال في DAOs حيث يصوت الأعضاء على تخصيص الموارد أو تغييرات البروتوكول.

  5. submit_proposal: هذه هي عملية اقتراح إجراء جديد. في سياق مثالنا، يقترح أحد الأعضاء إضافة موقع جديد إلى العقد.

  6. عند تنفيذ هذه العملية على SmartPy IDE، سترى معاملة جديدة يتم إنشاؤها في اللوحة اليمنى لـ IDE. سيشير ملخص المعاملة إلى المرسل (عنوان العضو المقترح) والمستلم (عنوان العقد). قد يبدو الأمر كالتالي:

هنا، تُظهر حالة «OK» أنه تم إرسال الاقتراح بنجاح.

  1. vote_proposal: الخطوة التالية هي التصويت على الاقتراح. تتيح هذه الوظيفة للموقعين الحاليين التصويت على الاقتراح المقدم في الخطوة السابقة.

  2. عندما يصوت الموقّع 1 على الاقتراح، سترى معاملة جديدة، مع الموقّع 1 كمرسل والعقد كمستلم. سيتم تسجيل معاملة مماثلة عندما يصوت الموقّع 2 على الاقتراح:

تشير هذه المعاملات إلى أن كلا من الموقع 1 والموقع 2 قد أدلوا بأصواتهم بنجاح لصالح الاقتراح.

عقد متعدد الأشكال

يحمل عقد MultiSigView مفهوم الإجماع الديمقراطي إلى الأمام ولكنه يطبقه على وحدات البايت العشوائية بدلاً من إجراءات العقد المحددة مسبقًا. يفتح هذا العقد سبلًا يمكن من خلالها تحقيق توافق في الآراء بشأن البيانات الممثلة بالبايت، دون أن يؤدي ذلك على الفور إلى تنفيذ الإجراء.

اللبنات الأساسية لهذا العقد هي:

  1. المعلمات الأولية: كما هو الحال مع العقود السابقة، يبدأ عقد MultiSigView بقائمة الأعضاء ورقم يشير إلى الأصوات المطلوبة.

  2. وظيفة إرسال الاقتراح: تتيح هذه الوظيفة للأعضاء تقديم مقترحات جديدة في شكل وحدات بايت عشوائية. يتم تخزين وحدات البايت في big_map، ويتم فهرستها بواسطة وحدات البايت نفسها، مما يمثل معرف الاقتراح الفريد.

  3. وظيفة اقتراح التصويت: تسمح هذه الوظيفة للأعضاء بتأييد المقترحات. يتم تعقب الأصوات في big_map منفصلة، مرتبطة بمعرف البايت الفريد للاقتراح.

  4. وظيفة التصويت: تتحقق هذه الوظيفة، من وجهة نظر السلسلة، مما إذا كان الاقتراح قد حصل على الأصوات المطلوبة. تقوم بإرجاع قيمة منطقية تشير إلى حالة التصويت على الاقتراح.
    يُعد عقد MultiSigView مفيدًا بشكل خاص في الحالات التي يحتاج فيها العقد الذكي إلى الاحتفاظ بسجل للمقترحات المعتمدة، كما هو الحال في تطبيقات التشفير حيث يمكن أن تمثل وحدات البايت اتفاقيات مجزأة أو براهين أو أي شكل آخر من أشكال البيانات التي تتطلب موافقة جماعية.

ข้อจำกัดความรับผิด
* การลงทุนคริปโตมีความเสี่ยงสูง โปรดดำเนินการด้วยความระมัดระวัง หลักสูตรนี้ไม่ได้มีไว้เพื่อเป็นคำแนะนำในการลงทุน
* หลักสูตรนี้สร้างขึ้นโดยผู้เขียนที่ได้เข้าร่วม Gate Learn ความคิดเห็นของผู้เขียนไม่ได้มาจาก Gate Learn