# Rustスマートコントラクト開発日記 (11):スプートニクDAO提案メカニズムの解釈Sputnik-DAOはNEAR Protocolのインフラストラクチャーとして、NEARエコシステムの「去中心化」への発展を強力に推進しています。現在、このプラットフォームは多くのNEARプロジェクトの「去中心化」自治コミュニティを促成しており、同時に完全で柔軟かつ効率的なコミュニティ意思決定ガバナンスプランを提供しています。Sputnikdaov2は、Sputnik-DAOコミュニティのガバナンス投票に使用されるスマートコントラクトです。本稿では、この契約のコア概念である提案(Proposal)について紹介し、今後の記事では「提案」に関連するDAOコミュニティガバナンスモデル(Policy)について説明します。! [](https://img-cdn.gateio.im/social/moments-84ee9ca630a4cdcdb0d2eb63450a7cf4)## 1. 提案開始Sputnik-DAO の各メンバーは、プロジェクトのガバナンスや管理について意見を述べたり、提案を提出したりすることができます。持ち株を持つコミュニティメンバーは、提案を審議し、投票することができます。メンバーは、投票や新しい提案を発起することで、プロジェクトの将来の進行に影響を与えることができます。契約のレベルでは、DAOメンバーはsputnikdaov2契約のadd_proposal()メソッドを呼び出して新しい提案を開始できます:さびPub FN add_proposal(&Mut Self, Proposal: ProposalInput) -> U64提案者は、以下の(ProposalInput)提案の詳細を提供する必要があります。- 提案(Description)のテキスト説明- 提案のタイプ(kind)これらの情報は、add_proposal()メソッドにパラメータとして渡され、このメソッドは検証処理を行い、完全に初期化された提案(Proposal)を生成します。最終的な提案は唯一のproposal_idにバインドされ、コントラクト全体で維持される提案プールに追加されます。提案の完全な属性情報には、次のものが含まれます:- 説明(description) - タイプ(kind)- 提案者(proposer)- ステータス(status) - 提出時間 (submission_time)- 投票状況(vote_counts、votes)注意が必要なのは、Sputnik-DAOに提案押金(proposal_bond)の概念が存在することです。契約は提案者がadd_proposal()を呼び出す際に一定額のNEARトークンを担保として預けることを要求します。この押金は提案が正常に終了した際に提案者に返還されます。! [](https://img-cdn.gateio.im/social/moments-427716593b21fa32b47855ceb5e101fc)## 2. 提案状況Sputnik-DAOの提案は、さまざまな状態を経る可能性があります:- InProgress: 新しい提案の初期ステータス- 承認済み:承認済み- 拒否された:被否决- Removed:削除されました- 期限切れ:有効期限が切れています- Moved:転送済み- 失敗:実行に失敗しました提案の状態の変化はact_proposal()メソッドによって駆動されます。DAOメンバーはこのメソッドを呼び出して提案に対する投票などの操作を実行できます:- VoteApprove:はい- VoteReject: 反対 - VoteRemove:削除します投票後はpolicy.proposal_status()を呼び出して票を集計します。投票閾値を満たす提案については、状態がそれに応じて変更されます:- 承認された状態の提案は実行されます- 「却下」または「削除済み」の状態の提案が確定します。Removed状態の提案は提案プールから削除され、デポジットは返還されません。Rejected状態の提案はプールに残り、デポジットが返還されます。! [](https://img-cdn.gateio.im/social/moments-ef0b959c42e1f5fc6263cd4a86fd078e)## 3. プロポーザルの実行 提案のステータスが [承認済み] に変わった場合、act_proposal() は internal_execute_proposal() に電話して提案を実行します。Sputnik-DAOは、ChangeConfig、ChangePolicy、FunctionCall、Transferなど、さまざまな提案タイプをサポートしています。それぞれのタイプには、対応する処理ブランチがあります。以下は二つの典型的な提案タイプの処理フローです:### 3.1 コントラクト機能実行の提案(FunctionCall)FunctionCallタイプの提案は、指定されたコントラクトのメソッドを実行できます。提案には実行する関数操作(actions)が含まれており、各アクションにはコントラクトメソッド名とパラメータを指定できます。最後に、関数呼び出しは Promise バッチ アクションの形式で完了します。### 3.2 契約資金移動提案書 (Transfer) Transferタイプの提案は、契約アカウント内のトークンを指定されたアカウントに移動させることができます。internal_execute_proposal()はinternal_payout()関数を呼び出して、さまざまな種類のトークンや受け取りアカウントに資金を送金します。! [](https://img-cdn.gateio.im/social/moments-eb73d5e15f6161f0a4b442cd4b99a91e)## 4. まとめ本文はSputnik DAOのスマートコントラクトの核心概念を紹介します——提案(Proposal)、提案の作成、投票、状態変化、実行プロセスを含みます。その後、提案に基づいてSputnik-DAOのガバナンスモデル(Policy)をさらに紹介します。! [](https://img-cdn.gateio.im/social/moments-4aed25bcefecb3d554dbe01447d4a0e8)
Sputnik DAOスマートコントラクト提案機構デプス解析
Rustスマートコントラクト開発日記 (11):スプートニクDAO提案メカニズムの解釈
Sputnik-DAOはNEAR Protocolのインフラストラクチャーとして、NEARエコシステムの「去中心化」への発展を強力に推進しています。現在、このプラットフォームは多くのNEARプロジェクトの「去中心化」自治コミュニティを促成しており、同時に完全で柔軟かつ効率的なコミュニティ意思決定ガバナンスプランを提供しています。
Sputnikdaov2は、Sputnik-DAOコミュニティのガバナンス投票に使用されるスマートコントラクトです。本稿では、この契約のコア概念である提案(Proposal)について紹介し、今後の記事では「提案」に関連するDAOコミュニティガバナンスモデル(Policy)について説明します。
!
1. 提案開始
Sputnik-DAO の各メンバーは、プロジェクトのガバナンスや管理について意見を述べたり、提案を提出したりすることができます。持ち株を持つコミュニティメンバーは、提案を審議し、投票することができます。メンバーは、投票や新しい提案を発起することで、プロジェクトの将来の進行に影響を与えることができます。
契約のレベルでは、DAOメンバーはsputnikdaov2契約のadd_proposal()メソッドを呼び出して新しい提案を開始できます:
さび Pub FN add_proposal(&Mut Self, Proposal: ProposalInput) -> U64
提案者は、以下の(ProposalInput)提案の詳細を提供する必要があります。
これらの情報は、add_proposal()メソッドにパラメータとして渡され、このメソッドは検証処理を行い、完全に初期化された提案(Proposal)を生成します。最終的な提案は唯一のproposal_idにバインドされ、コントラクト全体で維持される提案プールに追加されます。
提案の完全な属性情報には、次のものが含まれます:
注意が必要なのは、Sputnik-DAOに提案押金(proposal_bond)の概念が存在することです。契約は提案者がadd_proposal()を呼び出す際に一定額のNEARトークンを担保として預けることを要求します。この押金は提案が正常に終了した際に提案者に返還されます。
!
2. 提案状況
Sputnik-DAOの提案は、さまざまな状態を経る可能性があります:
提案の状態の変化はact_proposal()メソッドによって駆動されます。DAOメンバーはこのメソッドを呼び出して提案に対する投票などの操作を実行できます:
投票後はpolicy.proposal_status()を呼び出して票を集計します。投票閾値を満たす提案については、状態がそれに応じて変更されます:
Removed状態の提案は提案プールから削除され、デポジットは返還されません。Rejected状態の提案はプールに残り、デポジットが返還されます。
!
3. プロポーザルの実行
提案のステータスが [承認済み] に変わった場合、act_proposal() は internal_execute_proposal() に電話して提案を実行します。
Sputnik-DAOは、ChangeConfig、ChangePolicy、FunctionCall、Transferなど、さまざまな提案タイプをサポートしています。それぞれのタイプには、対応する処理ブランチがあります。
以下は二つの典型的な提案タイプの処理フローです:
3.1 コントラクト機能実行の提案(FunctionCall)
FunctionCallタイプの提案は、指定されたコントラクトのメソッドを実行できます。提案には実行する関数操作(actions)が含まれており、各アクションにはコントラクトメソッド名とパラメータを指定できます。
最後に、関数呼び出しは Promise バッチ アクションの形式で完了します。
3.2 契約資金移動提案書 (Transfer)
Transferタイプの提案は、契約アカウント内のトークンを指定されたアカウントに移動させることができます。
internal_execute_proposal()はinternal_payout()関数を呼び出して、さまざまな種類のトークンや受け取りアカウントに資金を送金します。
!
4. まとめ
本文はSputnik DAOのスマートコントラクトの核心概念を紹介します——提案(Proposal)、提案の作成、投票、状態変化、実行プロセスを含みます。その後、提案に基づいてSputnik-DAOのガバナンスモデル(Policy)をさらに紹介します。
!