تحليل تصميم عقد مصنع Sputnik-DAO: الإنشاء والتحديث وآليات الأمان

تحليل عقد مصنع Sputnik-DAO

تتبنى منصة Sputnik-DAO نموذج المصنع لإدارة إنشاء ونشر كل مثال من DAO بشكل موحد. ستقدم هذه المقالة تفاصيل حول تصميم وتنفيذ عقد المصنع Sputnik-DAO (sputnikdao-factory).

1. هيكل عقد المصنع

تتكون العقود المصنعية بشكل رئيسي من جزئين:

صدأ pub struct SputnikDAOFactory { factory_manager: مدير المصنع ، daos: UnorderedSet ، }

  • factory_manager: يوفر الوظائف الأساسية لإنشاء/حذف/تحديث DAO
  • daos: تسجيل عناوين حسابات جميع حالات DAO التي تم إنشاؤها

!

2. إنشاء DAO

الطريقة الأساسية لإنشاء DAO هي create():

صدأ #[payable] pub fn create(&mut self, name: AccountId, args: Base64VecU8) { let account_id: AccountId = format!('{}. {}', name, env::current_account_id()) .parse() .unwrap().

دع callback_args = serde_json::to_vec(&json!({
    'account_id': account_id,
    'attached_deposit': U128(env::attached_deposit()),
    'predecessor_account_id': env::p redecessor_account_id()
}))
.expect('فشل في التسلسل');

self.factory_manager.create_contract(
    self.get_default_code_hash()،
    account_id،
    'جديد',
    &args.0 ،
    'on_create',
    &callback_args،
);

}

تتمثل هذه الطريقة بشكل رئيسي في:

  1. إنشاء عنوان حساب DAO جديد
  2. إعداد معلمات الاسترجاع
  3. استدعاء factory_manager لإنشاء العقد

الخطوات الرئيسية لإنشاء العقد factory_manager.create_contract() هي:

  1. تحميل كود نموذج عقد DAO
  2. إنشاء حساب جديد
  3. تحويل رأس المال الابتدائي
  4. نشر كود العقد
  5. استدعاء طريقة تهيئة العقد
  6. معالجة نتيجة on_create

!

3. تحديث DAO

تقدم عقود المصنع طريقة تحديث ( لترقية عقد DAO:

صدأ pub fn update)& self, account_id: AccountId, code_hash: Base58CryptoHash( { دع caller_id = env::p redecessor_account_id)(; أكد!) caller_id == self.get_owner(( || caller_id == account_id ، 'يجب أن يتم تحديثه من قبل مالك المصنع أو DAO نفسه' ); أكد!) self.daos.contains(&account_id( ، 'يجب أن يكون العقد الذي أنشأته المصنع' ); self.factory_manager .update_contract)account_id ، code_hash ، "تحديث" ( ؛ }

ستقوم هذه الطريقة بالتحقق من أذونات المتصل، ثم ستقوم باستدعاء factory_manager.update_contract)( لتحديث كود العقد.

! [])https://img-cdn.gateio.im/webp-social/moments-db234efe334b609e12be80398e4e6fa5.webp(

4. اعتبارات الأمان

تتمثل أمان عقد المصنع بشكل رئيسي في:

  • التحكم في الصلاحيات: يمكن استدعاء الوظائف المميزة فقط من قبل المالك
  • تناسق الحالة: استرجاع الأموال عند فشل إنشاء DAO
  • معالجة الاستثناءات: التعامل مع مختلف حالات الاستثناء
  • آلية الترقية: التحكم الصارم في صلاحيات ترقية العقد

! [])https://img-cdn.gateio.im/webp-social/moments-373080ddb66a4cb83e0722b387056be0.webp(

! [])https://img-cdn.gateio.im/webp-social/moments-8b462e3ac0fd55e990921d21d66e3d42.webp(

! [])https://img-cdn.gateio.im/webp-social/moments-a8d69d504693c5c14767aed9244a090a.webp(

! [])https://img-cdn.gateio.im/webp-social/moments-729b65b1335931b4645ff5a9981d125b.webp(

! [])https://img-cdn.gateio.im/webp-social/moments-074c1aa0b7f9adfa5780a29c73654fc0.webp(

! [])https://img-cdn.gateio.im/webp-social/moments-aebf6315f45abba98b7345259ffe8b5d.webp(

! [])https://img-cdn.gateio.im/webp-social/moments-a3a84d139b8950498848a5cafbdfea83.webp(

! [])https://img-cdn.gateio.im/webp-social/moments-46f1a89001b11b13b1a8d1b484d4877d.webp(

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 7
  • إعادة النشر
  • مشاركة
تعليق
0/400
DiamondHandsvip
· 07-22 02:04
عقد المصنع معقد جدًا، لقد أدهشني.
شاهد النسخة الأصليةرد0
GasFeeCryvip
· 07-21 22:01
كيف يبدو معقدًا جدًا.. العقد معقد جدًا
شاهد النسخة الأصليةرد0
ContractCollectorvip
· 07-19 04:27
لديك يد واحدة يكفي، محاسب عقود بلوكتشين واحد!

يرجى تقديم تعليق بأسلوب اللغة الصينية المبسطة:
شاهد النسخة الأصليةرد0
GateUser-26d7f434vip
· 07-19 04:26
هل عقد المصنع في هذا المستوى فقط؟ مجرد نسخ الواجبات
شاهد النسخة الأصليةرد0
FadCatchervip
· 07-19 04:23
تس تس، أليست هذه مادة أساسية لعشاق البلوكتشين؟
شاهد النسخة الأصليةرد0
TokenBeginner'sGuidevip
· 07-19 04:18
تذكير لطيف: المعرفة المتعلقة بالعقود تشمل أمان الأموال، تظهر البيانات أن 92% من المبتدئين يتعرضون لخسائر بسبب عدم فهمهم للآلية الأساسية.
شاهد النسخة الأصليةرد0
MEVHunterZhangvip
· 07-19 04:12
الارتفاع ممتلئ بالغاز لكن لا يمكنني كتابة هذا العقد...
شاهد النسخة الأصليةرد0
  • تثبيت