📢 Gate廣場 #NERO发帖挑战# 秀觀點贏大獎活動火熱開啓!
Gate NERO生態周來襲!發帖秀出NERO項目洞察和活動實用攻略,瓜分30,000NERO!
💰️ 15位優質發帖用戶 * 2,000枚NERO每人
如何參與:
1️⃣ 調研NERO項目
對NERO的基本面、社區治理、發展目標、代幣經濟模型等方面進行研究,分享你對項目的深度研究。
2️⃣ 參與並分享真實體驗
參與NERO生態周相關活動,並曬出你的參與截圖、收益圖或實用教程。可以是收益展示、簡明易懂的新手攻略、小竅門,也可以是行情點位分析,內容詳實優先。
3️⃣ 鼓勵帶新互動
如果你的帖子吸引到他人參與活動,或者有好友評論“已參與/已交易”,將大幅提升你的獲獎概率!
NERO熱門活動(帖文需附以下活動連結):
NERO Chain (NERO) 生態周:Gate 已上線 NERO 現貨交易,爲回饋平台用戶,HODLer Airdrop、Launchpool、CandyDrop、餘幣寶已上線 NERO,邀您體驗。參與攻略見公告:https://www.gate.com/announcements/article/46284
高質量帖子Tips:
教程越詳細、圖片越直觀、互動量越高,獲獎幾率越大!
市場見解獨到、真實參與經歷、有帶新互動者,評選將優先考慮。
帖子需原創,字數不少於250字,且需獲得至少3條有效互動
Sputnik DAO工廠合約解析:創建、更新與安全性設計
Rust智能合約養成日記(10-2):Sputnik DAO工廠合約解析
本文將深入解讀Sputnik-DAO平台工廠模式(sputnikdao-factory)的設計實現。
1. Sputnik-DAO 工廠合約
Sputnik-DAO採用創建型工廠設計模式實現了該平台下去中心化自治組織(DAO)的統一創建與管理。
工廠合約的狀態主要由兩部分組成:
rust pub struct SputnikDAOFactory { factory_manager: FactoryManager, daos: UnorderedSet, }
2. 創建DAO
創建DAO實例使用create()方法:
rust #[payable] pub fn create(&mut self, name: AccountId, args: Base64VecU8) { let account_id: AccountId = format!("{}.{}", name, env::current_account_id()) .parse() .unwrap(); // ... self.factory_manager.create_contract( self.get_default_code_hash(), account_id, "new", &args.0, "on_create", &callback_args, ); }
create_contract()方法的主要步驟:
3. 更新DAO
通過update()方法可以升級DAO合約:
rust 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, "Must be updated by the factory owner or the DAO itself" ); // ... self.factory_manager .update_contract(account_id, code_hash, "update"); }
4. 安全性分析
Sputnik-DAO工廠合約通過這些機制保證了合約的安全性。