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:
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.
18 Suka
Hadiah
18
7
Bagikan
Komentar
0/400
AltcoinOracle
· 5jam 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