Sputnik DAO智能合約剖析:提案機制設計與實現

robot
摘要生成中

Rust智能合約養成日記(10-3):Sputnik DAO提案機制解析

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

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

1. 提案發起

Sputnik-DAO 社區成員可以就項目治理或管理發表意見或提交提案。每個持股的社區成員都可以對提案進行審議和投票,從而影響項目未來走向。

在合約層面,DAO 成員可調用 sputnikdaov2 合約的 add_proposal() 方法來發起新提案。調用時需提供提案的詳細信息(ProposalInput),包括:

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

add_proposal() 方法會進行校驗和處理,生成一個完整的提案(Proposal),並與唯一的 proposal_id 綁定,添加到合約維護的提案池中。

提案的完整屬性信息包括:提案者、狀態、發起時間、投票狀態等。新提案的狀態默認爲 InProgress。

Sputnik-DAO 要求提案者質押一定數額的 NEAR 代幣作爲押金。該押金在提案正常結束時會退還給提案者。

2. 提案狀態

Sputnik-DAO 中的提案可能經歷多種狀態:InProgress、Approved、Rejected、Removed 等。

提案狀態變化由 act_proposal() 方法驅動。DAO 成員可調用該方法對提案執行投票等操作:

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

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

  • Approved:調用 internal_execute_proposal() 執行提案
  • Rejected/Removed:調用 internal_reject_proposal() 執行收尾操作

Removed 狀態的提案會直接從提案池移除,不退還押金。Rejected 狀態的提案會保留在提案池中,並退還押金。

3. 提案執行

若提案狀態爲 Approved,內部會調用 internal_execute_proposal() 執行提案內容。

Sputnik-DAO 支持多種提案類型,大多涉及 DAO 治理模式的配置更新。下面介紹兩種典型提案類型的處理流程:

3.1 合約函數執行提案

對於 FunctionCall 類型提案,內部會採用 Promise Batch Actions 的形式執行提案中指定的合約方法調用。

3.2 合約資金轉移提案

對於 Transfer 類型提案,內部會調用 internal_payout() 函數,實現不同類型代幣向指定帳戶的轉帳操作。

本文介紹了 Sputnik DAO 合約的核心概念——提案(Proposal),包括提案的創建、投票和執行流程。後續將進一步介紹 Sputnik-DAO 中治理模式(Policy)的實現與配置。

ACT-5.97%
BATCH-16.6%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 4
  • 轉發
  • 分享
留言
0/400
挖矿退役军人vip
· 08-13 09:59
投票治理啊 熟悉的味道又来了
回復0
链游评鉴家vip
· 08-12 02:31
治理方案还是不够分散啊 投票权重分配需要再均衡些
回復0
资深链上福尔摩斯vip
· 08-12 02:28
无语 又是个dao项目
回復0
治理投票从不参与vip
· 08-12 02:10
呵呵 听听就好 投啥票捏
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)