# 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)提案の詳細を提供する必要があります。- 提案(Description)のテキスト説明- 提案のタイプ(kind)add_proposal() メソッドは検証処理を行い、完全に初期化された提案(Proposal)を生成し、唯一の proposal_id にバインドして、コントラクトがグローバルに維持する Contract.proposals マッピングに追加します。提案には以下の完全な属性情報が含まれています:- description: 提案の説明- kind: 提案のタイプ - 提案者:提案者- status: 提案のステータス- submission_time:提出時期- vote_counts:投票数- votes:投票の詳細注意が必要なのは、Sputnik-DAOには提案押金(proposal_bond)の概念があり、具体的なコミュニティガバナンスモデル(Policy)によって管理されている点です。提案者はadd_proposal()を呼び出す際に、一定額のNEARトークンを保証金としてステーキングする必要があります。この押金は提案が正常に終了した際に返金されます。! [](https://img-cdn.gateio.im/social/moments-84ee9ca630a4cdcdb0d2eb63450a7cf4)## 2. 提案状況Sputnik-DAOの提案は、さまざまな状態を経る可能性があります:- InProgress: 初期ステータス、投票中- 承認済み: 投票が通過しました - 拒否: 投票が通過しませんでした- 削除済み:削除済み- 期限切れ:期限切れ- Moved:移行済み- 失敗しました: 実行に失敗しました提案の状態変化は act_proposal() メソッドによって駆動されます。DAO メンバーはこのメソッドを呼び出して提案に対する投票などの操作を実行できます。- VoteApprove:はい- VoteReject: 反対 - VoteRemove:削除します投票後、policy.proposal_status()票を数えるために呼ばれ、条件が満たされると提案のステータスが更新されます。! [](https://img-cdn.gateio.im/social/moments-427716593b21fa32b47855ceb5e101fc)## 3. プロポーザルの実行投票された提案(Approved )のステータスは、決定を実行するためにinternal_execute_proposal()関数を呼び出します。Sputnik-DAOは、主にDAOのガバナンスモデルの構成更新に関するさまざまな提案タイプをサポートしています。ここでは、2つの典型的な提案タイプの処理について紹介します:### 3.1 コントラクト関数実行提案FunctionCallタイプの提案は、指定されたコントラクト関数を実行することを許可します。提案には、実行する関数操作(actions)が含まれており、複数の連続したfunction_callを指定できます。Sputnik-DAOは、Promise Batch Actionsの形でコントラクト機能の実行を完了します。### 3.2 契約資金移動の提案 Transferタイプの提案は、契約アカウントに蓄積されたトークンを指定されたアカウントに転送するために使用されます。internal_execute_proposal()はinternal_payout()関数を呼び出して、さまざまな種類のFungibleトークンと受け取りアカウントに資金を送金します。! [](https://img-cdn.gateio.im/social/moments-ef0b959c42e1f5fc6263cd4a86fd078e)## 4. まとめこの記事は、Sputnik DAO スマートコントラクトの核心概念 - 提案(Proposal)について説明しています。提案の作成、投票、状態変化、実行プロセスが含まれています。今後は、提案メカニズムに基づいて、Sputnik-DAO のガバナンスモデル(Policy)についてより詳細な説明を行います。! [](https://img-cdn.gateio.im/social/moments-eb73d5e15f6161f0a4b442cd4b99a91e)
スプートニク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 にバインドして、コントラクトがグローバルに維持する Contract.proposals マッピングに追加します。
提案には以下の完全な属性情報が含まれています:
注意が必要なのは、Sputnik-DAOには提案押金(proposal_bond)の概念があり、具体的なコミュニティガバナンスモデル(Policy)によって管理されている点です。提案者はadd_proposal()を呼び出す際に、一定額のNEARトークンを保証金としてステーキングする必要があります。この押金は提案が正常に終了した際に返金されます。
!
2. 提案状況
Sputnik-DAOの提案は、さまざまな状態を経る可能性があります:
提案の状態変化は act_proposal() メソッドによって駆動されます。DAO メンバーはこのメソッドを呼び出して提案に対する投票などの操作を実行できます。
投票後、policy.proposal_status()票を数えるために呼ばれ、条件が満たされると提案のステータスが更新されます。
!
3. プロポーザルの実行
投票された提案(Approved )のステータスは、決定を実行するためにinternal_execute_proposal()関数を呼び出します。
Sputnik-DAOは、主にDAOのガバナンスモデルの構成更新に関するさまざまな提案タイプをサポートしています。ここでは、2つの典型的な提案タイプの処理について紹介します:
3.1 コントラクト関数実行提案
FunctionCallタイプの提案は、指定されたコントラクト関数を実行することを許可します。提案には、実行する関数操作(actions)が含まれており、複数の連続したfunction_callを指定できます。
Sputnik-DAOは、Promise Batch Actionsの形でコントラクト機能の実行を完了します。
3.2 契約資金移動の提案
Transferタイプの提案は、契約アカウントに蓄積されたトークンを指定されたアカウントに転送するために使用されます。
internal_execute_proposal()はinternal_payout()関数を呼び出して、さまざまな種類のFungibleトークンと受け取りアカウントに資金を送金します。
!
4. まとめ
この記事は、Sputnik DAO スマートコントラクトの核心概念 - 提案(Proposal)について説明しています。提案の作成、投票、状態変化、実行プロセスが含まれています。今後は、提案メカニズムに基づいて、Sputnik-DAO のガバナンスモデル(Policy)についてより詳細な説明を行います。
!