Sputnik DAO智能合約提案機制解析:從發起到執行全流程

robot
摘要生成中

Rust智能合約養成日記(11):Sputnik DAO提案機制剖析

Sputnik-DAO 作爲 NEAR Protocol 的基礎設施,正推動 NEAR 生態向去中心化方向發展。目前該平台已促成多個 NEAR 項目建立自治社區,並提供了完整靈活的社區決策治理方案。

Sputnikdaov2 是用於 Sputnik-DAO 社區治理投票的智能合約。本文將介紹該合約的核心概念:提案(Proposal),並在後續文章中圍繞提案講解相關的 DAO 社區治理模式(Policy)。

1. 提案發起

Sputnik-DAO 中每個成員都可以就項目治理管理發表意見或提交提案。持股成員可對提案進行審議投票。成員可通過投票或發起提案來影響項目未來走向。

在合約層面,成員可調用 sputnikdaov2 合約的 add_proposal() 方法發起新提案:

rust pub fn add_proposal(&mut self, proposal: ProposalInput) -> u64

提案者需提供提案詳細信息(ProposalInput):

  • 提案文字描述(Description)
  • 提案類型(kind)

add_proposal() 方法會進行校驗處理,生成帶完整初始信息的提案(Proposal),並與唯一的 proposal_id 綁定,添加到合約全局維護的 Contract.proposals 映射中。

提案完整屬性信息包括:

  • 描述(description)
  • 類型(kind)
  • 提案者(proposer)
  • 狀態(status)
  • 發起時間(submission_time)
  • 投票狀態(vote_counts, votes)

合約要求提案者在調用 add_proposal() 時質押一定數額 NEAR 代幣作爲保證金。該押金在提案正常結束時通過 internal_return_bonds() 退還。

2. 提案狀態

Sputnik-DAO 中的提案可能經歷以下狀態:

  • InProgress(初始狀態)
  • Approved
  • Rejected
  • Removed
  • Expired
  • Moved
  • Failed

提案狀態變化由 act_proposal() 方法驅動。成員可對提案執行以下操作:

  • VoteApprove:表贊成
  • VoteReject:表反對
  • VoteRemove:認爲無意義,需移除

內部會調用 policy.proposal_status() 進行計票,對滿足閾值的提案變更狀態。

  • Approved 狀態提案將執行
  • Rejected 或 Removed 狀態執行收尾操作
  • Removed 狀態提案會從提案池移除,不退還押金
  • Rejected 狀態提案保留在提案池,退還押金

3. 提案執行

狀態爲 Approved 的提案將通過 internal_execute_proposal() 執行決策內容。支持的提案類型包括:

  • ChangeConfig
  • ChangePolicy
  • AddMemberToRole
  • RemoveMemberFromRole
  • FunctionCall
  • UpgradeSelf
  • UpgradeRemote
  • Transfer
  • SetStakingContract
  • AddBounty
  • BountyDone
  • Vote
  • FactoryInfoUpdate
  • ChangePolicyAddOrUpdateRole
  • ChangePolicyRemoveRole
  • ChangePolicyUpdateDefaultVotePolicy
  • ChangePolicyUpdateParameters

下面介紹兩種典型提案類型的處理流程:

3.1 合約函數執行提案

FunctionCall 類型提案在創建時傳入了要執行的函數操作(actions)。內部可包含多個 ActionCall 對象,指定合約方法名和參數。

Sputnik-DAO 採用 Promise Batch Actions 形式完成合約函數執行類型提案的執行。

3.2 合約資金轉移提案

Transfer 類型提案用於將合約帳戶積累的代幣轉移到指定 receiver_id。

internal_execute_proposal() 對 Transfer 類型提案的處理會調用 internal_payout() 函數,實現不同類型 Fungible Token 和 receiver_id 的轉帳操作。

4. 總結

本文介紹了 Sputnik DAO 合約的核心概念提案(Proposal),包括提案創建、投票執行及狀態變化規則。後續將基於提案詳細描述 Sputnik-DAO 治理模式(Policy)的實現與配置。

ACT1.01%
BATCH11.2%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 5
  • 分享
留言
0/400
SleepyValidatorvip
· 08-04 05:57
近几天rust学爆了 好起来了
回復0
测试网学者vip
· 08-04 04:35
又在卷dao标准化流程了
回復0
空投猎人007vip
· 08-04 04:34
near的这个dao没意思 转手就卖
回復0
rekt_but_vibingvip
· 08-04 04:34
提案太多了 就是投不过啊搞啥呢
回復0
StableGeniusDegenvip
· 08-04 04:12
rust又来卷了 有点狠啊
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)