Buku Harian Pengembangan Kontrak Pintar Rust (10-2): Analisis Kontrak Pabrik Sputnik DAO
Artikel ini akan memberikan analisis mendalam tentang implementasi desain model pabrik platform Sputnik DAO ( sputnikdao-factory).
1. Sputnik-DAO pabrik kontrak
Sputnik-DAO menggunakan pola desain pabrik pembuatan untuk mewujudkan penciptaan dan pengelolaan yang terintegrasi dari organisasi otonomi terdesentralisasi (DAO) di bawah platform ini.
Repositori kode sumber dari kontrak yang sesuai terletak di:
2. Pengenalan Fitur Modul DAPP
Halaman DAPP platform Sputnik DAO menampilkan objek contoh DAO yang telah dibuat ( kontrak Sputnikdaov2 ). Hingga Maret 2022, DAO yang paling aktif di platform ini adalah news.sputnik-dao.near, dengan 3051 proposal yang sedang dipilih atau telah selesai.
Semua kontrak instance DAO yang dibuat di platform Sputnik DAO dideploy secara bersamaan oleh akun sputnik-dao.near ( kontrak sputnikdao-factory ) di bawah sub-akunnya, misalnya:
pcp.sputnik-dao.near
test-dao-bro.sputnik-dao.near
blaqkstereo.sputnik-dao.near
Organisasi dapat secara publik memanggil metode create() dari kontrak sputnikdao-factory di jaringan utama NEAR untuk membuat instance DAO baru.
3. Penjelasan Kode Kontrak sputnikdao-factory
3.1 Membuat DAO
Status kontrak sputnikdao-factory terdiri dari dua bagian utama:
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
18 Suka
Hadiah
18
7
Bagikan
Komentar
0/400
AltcoinOracle
· 10jam yang lalu
degens tidur di sputnik... model pabrik mereka secara harfiah adalah tata kelola web3 2.0
Kedalaman analisis kontrak pabrik Sputnik DAO: desain implementasi dan mekanisme keamanan
Buku Harian Pengembangan Kontrak Pintar Rust (10-2): Analisis Kontrak Pabrik Sputnik DAO
Artikel ini akan memberikan analisis mendalam tentang implementasi desain model pabrik platform Sputnik DAO ( sputnikdao-factory).
1. Sputnik-DAO pabrik kontrak
Sputnik-DAO menggunakan pola desain pabrik pembuatan untuk mewujudkan penciptaan dan pengelolaan yang terintegrasi dari organisasi otonomi terdesentralisasi (DAO) di bawah platform ini.
Repositori kode sumber dari kontrak yang sesuai terletak di:
2. Pengenalan Fitur Modul DAPP
Halaman DAPP platform Sputnik DAO menampilkan objek contoh DAO yang telah dibuat ( kontrak Sputnikdaov2 ). Hingga Maret 2022, DAO yang paling aktif di platform ini adalah news.sputnik-dao.near, dengan 3051 proposal yang sedang dipilih atau telah selesai.
Semua kontrak instance DAO yang dibuat di platform Sputnik DAO dideploy secara bersamaan oleh akun sputnik-dao.near ( kontrak sputnikdao-factory ) di bawah sub-akunnya, misalnya:
Organisasi dapat secara publik memanggil metode create() dari kontrak sputnikdao-factory di jaringan utama NEAR untuk membuat instance DAO baru.
3. Penjelasan Kode Kontrak sputnikdao-factory
3.1 Membuat DAO
Status kontrak sputnikdao-factory terdiri dari dua bagian utama:
karat pub struct SputnikDAOFactory { factory_manager: FactoryManager, daos: UnorderedSet\u003caccountid\u003e, }
create() metode definisi:
karat #[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()), 'predecessor_account_id': env::predecessor_account_id() })) .expect('Tidak dapat diserialisasi'); self.factory_manager.create_contract( self.get_default_code_hash(), account_id, 'baru', &args.0, 'on_create', &callback_args, ); }
implementasi spesifik dari factory_manager.create_contract:
karat pub fn create_contract( &self, code_hash: Base58CryptoHash, account_id: AccountId, new_method: &str, args: &[u8], callback_method: &str, callback_args: &[u8], ) { // Memuat kode kontrak // Membuat Promise // Membuat akun // transfer // Deploy kontrak
// Memanggil fungsi inisialisasi // Atur callback }
fungsi callback on_create:
karat #[private] pub fn on_create( &mut diri, account_id: AccountId, attached_deposit: U128, predecessor_account_id: AccountId, bool { jika near_sdk::is_promise_success)( { self.daos.insert)&account_id(; benar } else { Promise::new)predecessor_account_id(.transfer)attached_deposit.0(; salah } }
![])https://img-cdn.gateio.im/webp-social/moments-8b462e3ac0fd55e990921d21d66e3d42.webp(
) 3.2 memperbarui DAO
update###( metode:
karat 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, 'Harus diperbarui oleh pemilik pabrik atau DAO itu sendiri' ); assert!) self.daos.contains(&account_id(, 'Harus ada kontrak yang dibuat oleh pabrik' ); self.factory_manager .update_contract)account_id, code_hash, 'update'(; }
![])https://img-cdn.gateio.im/webp-social/moments-a8d69d504693c5c14767aed9244a090a.webp(
4. Analisis Keamanan Kontrak Sputnik-DAO Factory
Keamanan dijamin dari beberapa aspek berikut:
![])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(\u003c/accountid\u003e