💥 Gate广场活动: #FST创作大赛# 💥
在 Gate广场 发布 CandyDrop 第71期:CandyDrop x FreeStyle Classic Token (FST) 相关原创内容,即有机会瓜分 3,000 FST 奖励!
📅 活动时间:2025年8月27日 – 9月2日
📌 参与方式:
发布原创内容,主题需与 FST 或 CandyDrop 活动相关
内容不少于 80 字
帖子添加话题: #FST创作大赛#
附上 CandyDrop 参与截图
🏆 奖励设置:
一等奖(1名):1,000 FST
二等奖(3名):500 FST/人
三等奖(5名):200 FST/人
📄 注意事项:
内容必须原创,禁止抄袭或刷量
获奖者需完成 Gate 广场身份认证
活动最终解释权归 Gate 所有
活动详情链接: https://www.gate.com/announcements/article/46757
Sputnik DAO提案机制解析:NEAR生态去中心化治理的核心
Rust智能合约养成日记(11) - Sputnik DAO提案机制解析
Sputnik-DAO作为NEAR Protocol的基础设施,正推动NEAR生态向去中心化方向发展。目前该平台已促成众多NEAR项目实现去中心化自治,同时提供了完整灵活且高效的社区决策治理方案。
Sputnikdaov2是用于Sputnik-DAO社区治理投票的智能合约。本文将介绍该合约的核心概念:提案(Proposal),并在后续文章中围绕提案介绍相关的DAO社区治理模式(Policy)。
1. 提案发起
Sputnik-DAO社区中的每位成员都可以就项目的治理或管理发表意见或提交提案。随后每个在DAO中持股的社区成员都可以对该提案进行审议和投票。换句话说,Sputnik-DAO中的每个成员都可以通过对其他成员的提案进行投票或自己发起新的管理提案来影响项目未来的走向。
在合约层面,DAO社区成员可调用sputnikdaov2合约提供的add_proposal()方法来发起新提案。提案者需提供提案的详细信息(ProposalInput),包括:
这些信息将作为参数传入add_proposal()方法,该方法会进行相关校验与处理,并生成一个完整的提案(Proposal)。最终该提案会与唯一的proposal_id绑定,添加到合约全局维护的提案池中。
提案的完整属性信息包括:
需要注意的是,Sputnik-DAO中存在提案押金(proposal_bond)的概念,该押金将依照具体的社区治理模式进行管理。合约要求提案者在调用add_proposal()方法时质押一定数额的NEAR代币作为新提案的保证金。该笔押金将在提案正常结束时退还给提案人。
2. 提案状态
Sputnik-DAO中的提案可能经历多种状态,初始状态为InProgress。具体状态变化由合约的act_proposal()方法驱动。
DAO成员可调用act_proposal()方法对提案执行如下操作:
提案状态变更后:
Rejected和Removed状态的区别在于,Removed状态的提案将直接从提案池中移除,且不退还押金。而Rejected状态的提案将保留在提案池中,并退还押金。
3. 提案执行
若提案状态为Approved,act_proposal()方法内部将调用internal_execute_proposal()函数执行提案内容。
Sputnik-DAO支持多种提案类型,本文重点介绍两种典型提案的处理流程:
3.1 合约函数执行提案
对于FunctionCall类型的提案,提案者在add_proposal()时已传入具体要执行的函数操作(actions)。internal_execute_proposal()将采用Promise Batch Actions的形式完成合约函数的执行。
3.2 合约资金转移提案
对于Transfer类型的提案,internal_execute_proposal()将调用internal_payout()函数,实现对不同类型Fungible Token以及不同类型receiver_id的转账操作。
4. 总结
本文介绍了Sputnik DAO合约的核心概念——提案(Proposal),包括提案的创建、投票执行及状态变化规则。后续文章将基于提案对Sputnik-DAO中治理模式(Policy)的实现与配置展开更详细的描述。