Rust العقود الذكية养成日记(11): تحليل آلية اقتراحات DAO
تعمل Sputnik-DAO كالبنية التحتية لبروتوكول NEAR، مما يدفع نظام NEAR البيئي نحو الاتجاه اللامركزي. وقد ساهمت هذه المنصة في إنشاء عدة مشاريع NEAR لمجتمعات الحكم الذاتي اللامركزية، وتقدم حلولًا فعالة ومرنة لصنع القرار المجتمعي.
Sputnikdaov2 هو العقد الذكي المستخدم في تصويت حوكمة مجتمع Sputnik-DAO. ستقدم هذه المقالة المفاهيم الأساسية لهذا العقد: الاقتراح (Proposal)، وفي المقالات اللاحقة سيتم تقديم نماذج حوكمة مجتمع DAO ذات الصلة حول الاقتراح (Policy).
1. بدء الاقتراح
يمكن لكل عضو في Sputnik-DAO التعبير عن آرائه أو تقديم مقترحات بشأن إدارة المشروع. يمكن لأعضاء الأسهم التصويت على المقترحات. يمكن للأعضاء التأثير على اتجاه المشروع من خلال التصويت أو تقديم مقترحات.
على مستوى العقود, يمكن لأعضاء DAO استدعاء طريقة add_proposal() لعقد sputnikdaov2 لبدء اقتراح جديد. يجب على مقدم الاقتراح تقديم تفاصيل الاقتراح(ProposalInput):
الوصف النصي للاقتراح (Description)
نوع الاقتراح ( kind )
سيتم تمرير معلومات الاقتراح كمعامل إلى طريقة add_proposal()، وبعد التحقق منها ومعالجتها، سيتم إنشاء اقتراح كامل (Proposal)، وربطه بمعرف الاقتراح الفريد proposal_id، وإضافته إلى خريطة Contract.proposals التي تحافظ عليها العقود الذكية على مستوى عالمي.
تتضمن معلومات خصائص الاقتراح الكاملة:
الوصف: وصف الاقتراح
النوع: نوع الاقتراح
proposer:مقدم الاقتراح
status: حالة الاقتراح، البداية هي InProgress
submission_time:وقت التقديم
vote_counts: عدد الأصوات
votes: تفاصيل التصويت
من المهم ملاحظة أن هناك مفهوم إيداع الاقتراح في Sputnik-DAO وهو (proposal_bond). يتطلب العقد من مقدم الاقتراح أن يودع مبلغًا معينًا من رموز NEAR كضمان عند استدعاء add_proposal(). سيتم إعادة هذا الإيداع إلى مقدم الاقتراح عند انتهاء الاقتراح بشكل طبيعي.
!
2. حالة الاقتراح
قد تمر الاقتراحات في Sputnik-DAO بمراحل متعددة، حيث تكون الحالة الأولية هي InProgress. تتغير حالة الاقتراح بدافع من طريقة act_proposal().
يمكن لأعضاء DAO استدعاء act_proposal() لتنفيذ العمليات التالية على الاقتراح:
VoteApprove: تعني الموافقة
VoteReject: تعني الرفض
VoteRemove: يعتبر هذا الاقتراح بلا معنى، ويجب إزالته
بعد التصويت، سيقوم البرنامج باستدعاء policy.proposal_status() لإجراء العد. بالنسبة للاقتراحات التي تلبي عتبة التصويت، سيتغير الوضع وفقًا لذلك:
Approved: تم الموافقة على internal_execute_proposal() التنفيذ
مرفوض/تم الإزالة: تنفيذ العمليات اللاحقة من خلال internal_reject_proposal()
الفرق بين حالة Rejected و Removed هو أن الاقتراح في حالة Removed سيتم إزالته من مجموعة الاقتراحات، ولن يتم رد الوديعة. بينما الاقتراح في حالة Rejected سيبقى في المجموعة، وسيتم رد الوديعة.
!
3. تنفيذ الاقتراح
إذا كانت حالة الاقتراح معتمدة، فإن act_proposal() ستقوم باستدعاء internal_execute_proposal() لتنفيذ محتوى الاقتراح.
يدعم Sputnik-DAO أنواعًا متعددة من الاقتراحات، ستقدم هذه الفقرة عمليتي التعامل مع نوعين نموذجيين:
3.1 تنفيذ اقتراح دالة العقد(FunctionCall)
تم تمرير عمليات الوظيفة المحددة FunctionCall كجزء من الاقتراح عند الإضافة (actions). يمكن تحديد اسم طريقة العقد والمعلمات لكل إجراء. يقوم Sputnik-DAO بتنفيذ هذا النوع من الاقتراحات بشكلٍ كامل باستخدام شكل إجراءات الدفعة (Promise Batch Actions).
3.2 اقتراح نقل أموال العقد (Transfer )
تُستخدم اقتراحات نوع النقل لنقل الرموز المجمعة من حساب العقد إلى الحساب المحدد. ستقوم internal_execute_proposal() باستدعاء دالة internal_payout()، لتنفيذ عمليات نقل الرموز القابلة للتبادل من الأنواع المختلفة إلى الحسابات المستلمة.
!
4. ملخص
تقدم هذه المقالة المفاهيم الأساسية لعقود Sputnik DAO - الاقتراح (Proposal)، وتوضح كيفية إنشاء الاقتراحات والتصويت عليها وتنفيذها، بالإضافة إلى قواعد تغيير حالة الاقتراحات. سيتم تقديم وصف أكثر تفصيلاً لنموذج حوكمة Sputnik-DAO استنادًا إلى الاقتراح (Policy).
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 13
أعجبني
13
5
إعادة النشر
مشاركة
تعليق
0/400
DegenRecoveryGroup
· منذ 6 س
إن استخدام العقود للتصويت أمر محير حقًا
شاهد النسخة الأصليةرد0
quiet_lurker
· منذ 16 س
لا أفهم تمامًا كيف يعمل هذا الشيء.
شاهد النسخة الأصليةرد0
ForkItAllDay
· منذ 16 س
نير تلعب بشكل جيد تحب التصميم
شاهد النسخة الأصليةرد0
ApeWithNoFear
· منذ 16 س
لقد بدأنا في لعب نظام near البيئي، دعونا نتقدم!
شاهد النسخة الأصليةرد0
GasFeeCrybaby
· منذ 16 س
داخل السلسلة التصويت مكلف جداً لا أستطيع تحمل تكاليف الطعام بعد الآن
تحليل العقود الذكية Sputnik DAO: شرح آلية الاقتراحات
Rust العقود الذكية养成日记(11): تحليل آلية اقتراحات DAO
تعمل Sputnik-DAO كالبنية التحتية لبروتوكول NEAR، مما يدفع نظام NEAR البيئي نحو الاتجاه اللامركزي. وقد ساهمت هذه المنصة في إنشاء عدة مشاريع NEAR لمجتمعات الحكم الذاتي اللامركزية، وتقدم حلولًا فعالة ومرنة لصنع القرار المجتمعي.
Sputnikdaov2 هو العقد الذكي المستخدم في تصويت حوكمة مجتمع Sputnik-DAO. ستقدم هذه المقالة المفاهيم الأساسية لهذا العقد: الاقتراح (Proposal)، وفي المقالات اللاحقة سيتم تقديم نماذج حوكمة مجتمع DAO ذات الصلة حول الاقتراح (Policy).
1. بدء الاقتراح
يمكن لكل عضو في Sputnik-DAO التعبير عن آرائه أو تقديم مقترحات بشأن إدارة المشروع. يمكن لأعضاء الأسهم التصويت على المقترحات. يمكن للأعضاء التأثير على اتجاه المشروع من خلال التصويت أو تقديم مقترحات.
على مستوى العقود, يمكن لأعضاء DAO استدعاء طريقة add_proposal() لعقد sputnikdaov2 لبدء اقتراح جديد. يجب على مقدم الاقتراح تقديم تفاصيل الاقتراح(ProposalInput):
سيتم تمرير معلومات الاقتراح كمعامل إلى طريقة add_proposal()، وبعد التحقق منها ومعالجتها، سيتم إنشاء اقتراح كامل (Proposal)، وربطه بمعرف الاقتراح الفريد proposal_id، وإضافته إلى خريطة Contract.proposals التي تحافظ عليها العقود الذكية على مستوى عالمي.
تتضمن معلومات خصائص الاقتراح الكاملة:
من المهم ملاحظة أن هناك مفهوم إيداع الاقتراح في Sputnik-DAO وهو (proposal_bond). يتطلب العقد من مقدم الاقتراح أن يودع مبلغًا معينًا من رموز NEAR كضمان عند استدعاء add_proposal(). سيتم إعادة هذا الإيداع إلى مقدم الاقتراح عند انتهاء الاقتراح بشكل طبيعي.
!
2. حالة الاقتراح
قد تمر الاقتراحات في Sputnik-DAO بمراحل متعددة، حيث تكون الحالة الأولية هي InProgress. تتغير حالة الاقتراح بدافع من طريقة act_proposal().
يمكن لأعضاء DAO استدعاء act_proposal() لتنفيذ العمليات التالية على الاقتراح:
بعد التصويت، سيقوم البرنامج باستدعاء policy.proposal_status() لإجراء العد. بالنسبة للاقتراحات التي تلبي عتبة التصويت، سيتغير الوضع وفقًا لذلك:
الفرق بين حالة Rejected و Removed هو أن الاقتراح في حالة Removed سيتم إزالته من مجموعة الاقتراحات، ولن يتم رد الوديعة. بينما الاقتراح في حالة Rejected سيبقى في المجموعة، وسيتم رد الوديعة.
!
3. تنفيذ الاقتراح
إذا كانت حالة الاقتراح معتمدة، فإن act_proposal() ستقوم باستدعاء internal_execute_proposal() لتنفيذ محتوى الاقتراح.
يدعم Sputnik-DAO أنواعًا متعددة من الاقتراحات، ستقدم هذه الفقرة عمليتي التعامل مع نوعين نموذجيين:
3.1 تنفيذ اقتراح دالة العقد(FunctionCall)
تم تمرير عمليات الوظيفة المحددة FunctionCall كجزء من الاقتراح عند الإضافة (actions). يمكن تحديد اسم طريقة العقد والمعلمات لكل إجراء. يقوم Sputnik-DAO بتنفيذ هذا النوع من الاقتراحات بشكلٍ كامل باستخدام شكل إجراءات الدفعة (Promise Batch Actions).
3.2 اقتراح نقل أموال العقد (Transfer )
تُستخدم اقتراحات نوع النقل لنقل الرموز المجمعة من حساب العقد إلى الحساب المحدد. ستقوم internal_execute_proposal() باستدعاء دالة internal_payout()، لتنفيذ عمليات نقل الرموز القابلة للتبادل من الأنواع المختلفة إلى الحسابات المستلمة.
!
4. ملخص
تقدم هذه المقالة المفاهيم الأساسية لعقود Sputnik DAO - الاقتراح (Proposal)، وتوضح كيفية إنشاء الاقتراحات والتصويت عليها وتنفيذها، بالإضافة إلى قواعد تغيير حالة الاقتراحات. سيتم تقديم وصف أكثر تفصيلاً لنموذج حوكمة Sputnik-DAO استنادًا إلى الاقتراح (Policy).
!