Derinlik analizi Sputnik DAO platform fabrika sözleşmesi: tasarım uygulaması ve güvenlik mekanizmaları

robot
Abstract generation in progress

Rust akıllı sözleşmeler yetiştirme günlüğü(10-2): Sputnik DAO fabrika sözleşmesi analizi

Bu makale, Sputnik DAO platformunun fabrika modeli ( sputnikdao-factory) tasarımının uygulanmasını derinlemesine inceleyecektir.

1. Sputnik-DAO Fabrika Akıllı Sözleşmesi

Sputnik-DAO, oluşturucu fabrika tasarım modelini kullanarak bu platform altındaki merkeziyetsiz özerk organizasyon (DAO)'ın birleşik yaratım ve yönetimini gerçekleştirmiştir.

İlgili sözleşmenin kaynak kodu deposu şurada bulunmaktadır:

2. DAPP Modül Fonksiyon Tanıtımı

Sputnik DAO platformunun DAPP sayfası, oluşturulmuş DAO örnek nesnelerini (Sputnikdaov2 akıllı sözleşmesi ) ile göstermektedir. 2022 Mart itibarıyla, bu platform altında en aktif DAO news.sputnik-dao.near olup, 3051 teklif oylama aşamasında veya sona ermiştir.

Sputnik DAO platformunda oluşturulan tüm DAO örnek sözleşmeleri, sputnik-dao.near hesabı ( altında, ) sözleşmesi ile tek bir şekilde alt hesaplarına dağıtılmaktadır. Örneğin:

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

Organizasyonlar, NEAR ana ağında sputnikdao-factory akıllı sözleşmesinin create() metodunu kullanarak yeni DAO örnekleri oluşturabilir.

3. sputnikdao-factory akıllı sözleşmeler kodunun yorumlanması

3.1 DAO oluşturma

sputnikdao-factory akıllı sözleşmeler durumu esasen iki bölümden oluşur:

pas pub struct SputnikDAOFactory { factory_manager: FabrikaYönetici, daolar: SırasızKüme\u003chesapkimliği\u003e, }

  • factory_manager:DAO örneklerini oluşturma/silme/güncelleme yöntemleri sağlar
  • daos: Oluşturulan DAO örneklerinin NEAR hesap adreslerini kaydedin

create() yöntem tanımı:

pas #[payable] pub fn create(&mut self, name: AccountId, args: Base64VecU8) { let account_id: AccountId = format!('{}.{}', name, env::current_account_id()) .parse() .unwrap(); let callback_args = serde_json::to_vec(&json!({ 'account_id': account_id, 'attached_deposit': U128(env::attached_deposit()), 'önceki_hesap_id': env::önceki_hesap_id() })) .expect('Hata: seri hale getirilemedi'); self.factory_manager.create_contract( self.get_default_code_hash(), hesap_id, 'yeni', &args.0, 'on_create', &callback_args, ); }

factory_manager.create_contract'ın spesifik uygulaması:

pas pub fn create_contract( &self, code_hash: Base58CryptoHash, account_id: AccountId, new_method: &str, args: [u8], callback_method: &str, callback_args: [u8], ) { // Sözleşme kodunu yükle // Promise oluştur // Hesap oluştur // Transfer // Sözleşmeyi dağıt // Başlatma fonksiyonu çağrılıyor // Geri çağrıyı ayarla }

on_create geri çağırma fonksiyonu:

pas #[private] pub fn on_create( &mut self, account_id: AccountId, attached_deposit: U128, predecessor_account_id: AccountId, bool { eğer near_sdk::is_promise_success)( { self.daos.insert)&account_id(; doğru } else { Promise::new)önceki_hesap_id(.transfer)ekli_depozito.0(; false } }

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

) 3.2 DAO'yu güncelle

update###( yöntemi:

pas pub fn update)&self, account_id: AccountId, code_hash: Base58CryptoHash( { let caller_id = env::predecessor_account_id)(; assert!) caller_id == self.get_owner(( || caller_id == account_id, 'Fabrika sahibi veya DAO tarafından güncellenmelidir' ); assert!) self.daos.contains(&account_id(, 'Fabrika tarafından oluşturulmuş bir sözleşme olmalıdır' ); self.factory_manager .update_contract)account_id, code_hash, 'update'(; }

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

4. Sputnik-DAO Fabrika akıllı sözleşmeler güvenlik analizi

Güvenliği aşağıdaki birkaç açıdan sağlamak:

  • Yetki kontrolü: view yöntemi durum değişkenlerini değiştirmez
  • Ayrıcalıklı fonksiyon yalnızca owner tarafından yürütülebilir.
  • Mantıklı hata işleme mekanizması

![])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(

View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Reward
  • 7
  • Share
Comment
0/400
AltcoinOraclevip
· 12h ago
degens sputnik'te uyuyor... fabrikaları modeli kelimenin tam anlamıyla web3 yönetimi 2.0
View OriginalReply0
not_your_keysvip
· 12h ago
Bu tasarım gerçekten sert, vay!
View OriginalReply0
ImpermanentPhilosophervip
· 12h ago
Zihinsiz modüler geliştirme, bayıldım
View OriginalReply0
PensionDestroyervip
· 12h ago
Fabrika sözleşmesi güvenilir görünüyor.
View OriginalReply0
ImaginaryWhalevip
· 12h ago
Bu sözleşmenin bir şeyleri var.
View OriginalReply0
InfraVibesvip
· 12h ago
Yerli üretim de bu tuzağı yapabiliyor.
View OriginalReply0
BanklessAtHeartvip
· 13h ago
Fabrika sözleşmesinin güvenliği gerçekten önemlidir.
View OriginalReply0
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)