📢 #Gate广场征文活动第二期# 正式启动!
分享你对 $ERA 项目的独特观点,推广ERA上线活动, 700 $ERA 等你来赢!
💰 奖励:
一等奖(1名): 100枚 $ERA
二等奖(5名): 每人 60 枚 $ERA
三等奖(10名): 每人 30 枚 $ERA
👉 参与方式:
1.在 Gate广场发布你对 ERA 项目的独到见解贴文
2.在贴文中添加标签: #Gate广场征文活动第二期# ,贴文字数不低于300字
3.将你的文章或观点同步到X,加上标签:Gate Square 和 ERA
4.征文内容涵盖但不限于以下创作方向:
ERA 项目亮点:作为区块链基础设施公司,ERA 拥有哪些核心优势?
ERA 代币经济模型:如何保障代币的长期价值及生态可持续发展?
参与并推广 Gate x Caldera (ERA) 生态周活动。点击查看活动详情:https://www.gate.com/announcements/article/46169。
欢迎围绕上述主题,或从其他独特视角提出您的见解与建议。
⚠️ 活动要求:
原创内容,至少 300 字, 重复或抄袭内容将被淘汰。
不得使用 #Gate广场征文活动第二期# 和 #ERA# 以外的任何标签。
每篇文章必须获得 至少3个互动,否则无法获得奖励
鼓励图文并茂、深度分析,观点独到。
⏰ 活动时间:2025年7月20日 17
Sputnik DAO工厂合约详解:创建与管理DAO的核心机制
Rust智能合约养成日记(10-2):解读Sputnik DAO工厂合约
本文将深入解读Sputnik DAO平台的工厂合约代码,介绍其如何实现DAO的创建与管理。
1. Sputnik-DAO 工厂合约概述
Sputnik-DAO采用工厂模式统一管理平台上的DAO创建。工厂合约部署在sputnik-dao.near账户下,所有DAO实例合约被部署为其子账户,如test-dao.sputnik-dao.near。
2. 合约状态结构
工厂合约的主要状态包括:
rust pub struct SputnikDAOFactory { factory_manager: FactoryManager, daos: UnorderedSet, }
3. 创建DAO
通过调用create()方法创建新DAO:
rust
#[payable] pub fn create(&mut self, name: AccountId, args: Base64VecU8) { // 构造DAO子账户地址
let account_id = format!("{}.{}", name, env::current_account_id());
}
create_contract函数的主要步骤:
创建成功后,新DAO账户会被记录到daos集合中。
4. 更新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" ); assert!( self.daos.contains(&account_id), "Must be contract created by factory" ); self.factory_manager .update_contract(account_id, code_hash, "update"); }
只有工厂合约所有者或DAO本身可以调用此方法。
5. 安全性考虑
Sputnik DAO通过合理的设计实现了安全可靠的DAO创建和管理。