العمق تحليل Sputnik DAO المنصة مصنع العقد: تصميم التنفيذ وآلية الأمان

robot
إنشاء الملخص قيد التقدم

Rust العقود الذكية养成日记(10-2):解析 مصنع DAO

ستتناول هذه المقالة تحليلًا عميقًا لتصميم وتنفيذ نموذج المصنع في منصة Sputnik DAO (sputnikdao-factory).

1. عقد مصنع Sputnik-DAO

اعتمد Sputnik-DAO نمط تصميم المصنع الإنشائي لتحقيق الإنشاء الموحد والإدارة لمنظمة الحكم الذاتي اللامركزية (DAO) تحت هذا النظام الأساسي.

مستودع رمز المصدر للعقد المقابل يقع في:

!

2. مقدمة عن وظائف وحدة DAPP

يعرض صفحة DAPP في منصة Sputnik DAO كائنات DAO التي تم إنشاؤها ( عقد ) Sputnikdaov2. حتى مارس 2022، كان أكثر DAO نشاطًا على هذه المنصة هو news.sputnik-dao.near، حيث كان هناك 3051 اقتراحًا قيد التصويت أو قد انتهت.

جميع عقود الأمثلة DAO التي تم إنشاؤها على منصة Sputnik DAO يتم نشرها بشكل موحد تحت حسابات فرعية لحساب sputnik-dao.near ( عقد الساتبيتك داو-فابريك ) ، على سبيل المثال:

  • pcp.sputnik-dao.near
  • test-dao-bro.sputnik-dao.near
  • blaqkstereo.sputnik-dao.near

يمكن للمنظمات استدعاء طريقة create() في عقد sputnikdao-factory على الشبكة الرئيسية NEAR لإنشاء مثيل DAO جديد.

!

3. تفسير كود عقد الساتليت داو - مصنع العقود

3.1 إنشاء DAO

حالة عقد السبيوتنيك داو - المصنع تتكون أساسًا من جزئين:

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

  • factory_manager: يوفر طرق لإنشاء/حذف/تحديث حالات DAO
  • daos: عنوان حساب NEAR الذي تم إنشاء مثيل 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، ); }

!

factory_manager.create_contract التنفيذ:

صدأ حانة FN create_contract( والذات، code_hash: Base58CryptoHash ، account_id: AccountId ، new_method: &str ، args: &[u8] ، callback_method: & str ، callback_args: &[u8] ، ) { // تحميل كود العقد // إنشاء الوعد // إنشاء حساب // تحويل // نشر العقد // استدعاء دالة التهيئة // تعيين رد الاتصال }

!

on_create دالة الاسترجاع:

صدأ #[private] حانة FN on_create( &mut self ، account_id: AccountId ، attached_deposit: U128 ، predecessor_account_id: AccountId ، ) -> بول { إذا near_sdk::is_promise_success() { self.daos.insert(&account_id); صحيح } else { الوعد::new(predecessor_account_id).transfer(attached_deposit.0); خطأ } }

!

3.2 تحديث DAO

update()طريقة:

صدأ 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 .تحديث_العقد(معرف_الحساب, تجزئة_الكود, 'تحديث'); }

!

4. تحليل أمان عقد Sputnik-DAO Factory

يتم ضمان الأمان بشكل أساسي من الجوانب التالية:

  • التحكم في الوصول: طريقة view لا تعدل متغيرات الحالة
  • يمكن تنفيذ دالة الامتياز فقط بواسطة المالك
  • آلية معالجة الأخطاء المعقولة

!

!

!

!

!

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 7
  • مشاركة
تعليق
0/400
AltcoinOraclevip
· منذ 12 س
degens نائمون على سبيوتنيك... نموذج المصنع الخاص بهم هو حرفياً حوكمة ويب 3.0
شاهد النسخة الأصليةرد0
not_your_keysvip
· منذ 12 س
هذا التصميم قوي جداً واو
شاهد النسخة الأصليةرد0
ImpermanentPhilosophervip
· منذ 12 س
تطوير معياري بلا تفكير، أحببت ذلك
شاهد النسخة الأصليةرد0
PensionDestroyervip
· منذ 12 س
عقد المصنع يبدو موثوقًا به
شاهد النسخة الأصليةرد0
ImaginaryWhalevip
· منذ 12 س
هذا العقد لديه شيء مميز.
شاهد النسخة الأصليةرد0
InfraVibesvip
· منذ 12 س
يمكن أن تفعل هذا الفخ أيضًا في الصين.
شاهد النسخة الأصليةرد0
BanklessAtHeartvip
· منذ 13 س
أمان العقود في المصانع هو بالتأكيد أمر حاسم.
شاهد النسخة الأصليةرد0
  • تثبيت