Sputnik DAO合約提案機制詳解:助力NEAR生態去中心化

robot
摘要生成中

Rust智能合約養成日記(10-3) 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)

合約會進一步處理這些信息,生成一個完整的提案(Proposal),並與唯一的 proposal_id 綁定,添加到合約維護的提案池中。

提案包含以下屬性:

  • 提案者(proposer)
  • 提案狀態(status)
  • 發起時間(submission_time)
  • 投票狀態(vote_counts, votes)等

需要注意的是,Sputnik-DAO 要求提案者質押一定數額的 NEAR 代幣作爲保證金。這筆押金通常會在提案正常結束時退還。

2. 提案狀態

Sputnik-DAO 中的提案可能經歷多種狀態:

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

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

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

合約會根據投票情況更新提案狀態。對於通過的提案會執行,被拒絕或移除的提案會進行收尾處理。

3. 提案執行

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

Sputnik-DAO 支持多種類型的提案,如更改配置、修改權限、調用函數、轉帳等。這裏重點介紹兩種典型提案:

3.1 合約函數執行提案

對於 FunctionCall 類型的提案,合約會根據提案中指定的函數名和參數,通過 Promise Batch Actions 的形式執行相應的合約方法。

3.2 合約資金轉移提案

Transfer 類型的提案允許將合約帳戶中的資金(包括 NEAR 和其他 Token)轉移到指定帳戶。合約會根據不同 Token 類型和接收帳戶類型執行相應的轉帳操作。

4. 總結

本文介紹了 Sputnik DAO 合約的核心概念 - 提案(Proposal),包括提案的創建、狀態變化和執行流程。後續將基於提案機制,進一步討論 Sputnik-DAO 的治理模式(Policy)實現。

TOKEN2.04%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 6
  • 分享
留言
0/400
rekt_but_not_brokevip
· 07-25 03:40
dao很帅哦~
回復0
拉盘牛角包vip
· 07-24 20:08
投票投票 还是投钱香呀
回復0
烤猫铁粉vip
· 07-23 06:10
糟了 是 near 家的提案!
回復0
幽灵地址挖掘机vip
· 07-22 04:23
投票结果全在合约里,想删也删不掉
回復0
frenethvip
· 07-22 04:14
早就想搞懂提案机制了
回復0
0xOverleveragedvip
· 07-22 04:11
dao治理玩这么花?抄作业的吧~
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)