# Rustスマートコントラクト育成日記(10-3)Sputnik DAO::提案メカニズムの分析Sputnik-DAO は NEAR Protocol のインフラとして、NEAR エコシステムを「去中心化」方向に進めています。現在、このプラットフォームは多くの NEAR プロジェクトの「去中心化」自治コミュニティを促進しており、同時に完全で柔軟かつ効率的なコミュニティの意思決定ガバナンスソリューションを提供しています。Sputnikdaov2は、Sputnik-DAOコミュニティガバナンス投票のためのスマートコントラクトです。この記事では、この契約の核心概念である提案(Proposal)について紹介し、今後の記事では「提案」に関連するDAOコミュニティガバナンスモデル(Policy)を紹介します。! [](https://img-cdn.gateio.im/social/moments-84ee9ca630a4cdcdb0d2eb63450a7cf4)## 1. 提案は(Add Proposal)開始されました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が提案者に対して提案を開始する際に一定額のNEARトークンを担保としてステーキングすることを要求していることです。このデポジットは、提案が正常に終了した際に提案者に返還されます。! [](https://img-cdn.gateio.im/social/moments-427716593b21fa32b47855ceb5e101fc)## 2. 提案状況(Proposal Status)Sputnik-DAOの提案は、さまざまな状態を経る可能性があり、初期状態はInProgressです。提案の状態の変化は、act_proposal()メソッドによって駆動されます。コミュニティメンバーは提案に対して以下の操作を実行できます:- VoteApprove:承認します- VoteReject:不承認を示します - VoteRemove: この提案は無意味だと考えられ、削除する必要があります投票後に票数をカウントし、投票閾値を満たす提案のステータスが相応に変更されます:- 承認済み: internal_execute_proposal() を呼び出して提案を実行します- Rejected/Removed: internal_reject_proposal()RejectedとRemoved状態の違いは、Removed状態の提案が提案プールから直接削除され、デポジットが返金されないことです。! [](https://img-cdn.gateio.im/social/moments-ef0b959c42e1f5fc6263cd4a86fd078e)## 3. 提案実行(プロポーザルの実行)承認済み状態の提案の場合、internal_execute_proposal() 関数が呼び出されて提案コンテンツが実行されます。Sputnik-DAOは多様な提案タイプをサポートしており、本記事では2つの典型的なタイプに焦点を当てます:### 3.1 コントラクト関数実行の提案 (ProposalKind::FunctionCall)FunctionCallタイプの提案は、指定されたコントラクト関数を実行できます。提案には実行する関数操作(actions)が含まれており、複数のActionCallオブジェクトを指定できます。各オブジェクトには対応するコントラクトメソッド名とパラメータが指定されます。最終的にPromise Batch Actionsの形式でスマートコントラクトの関数の実行が完了します。### 3.2 契約資金移動提案書 (ProposalKind::Transfer) Transferタイプの提案は、コントラクトアカウントに蓄積されたトークン(NEARまたはNEP-141標準トークン)を指定されたアカウントに移動することができます。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スマートコントラクト育成日記(10-3)Sputnik DAO::提案メカニズムの分析
Sputnik-DAO は NEAR Protocol のインフラとして、NEAR エコシステムを「去中心化」方向に進めています。現在、このプラットフォームは多くの NEAR プロジェクトの「去中心化」自治コミュニティを促進しており、同時に完全で柔軟かつ効率的なコミュニティの意思決定ガバナンスソリューションを提供しています。
Sputnikdaov2は、Sputnik-DAOコミュニティガバナンス投票のためのスマートコントラクトです。この記事では、この契約の核心概念である提案(Proposal)について紹介し、今後の記事では「提案」に関連するDAOコミュニティガバナンスモデル(Policy)を紹介します。
!
1. 提案は(Add Proposal)開始されました
Sputnik-DAOコミュニティのメンバーは、プロジェクトのガバナンスや管理に関する意見を表明したり、提案を提出したりできます。各持株のコミュニティメンバーは、提案を審議し、投票することができます。コミュニティメンバーは、投票を通じて、または新しい管理提案を起こすことで、プロジェクトの将来の方向性に影響を与えることができます。
契約レベルでは、DAOコミュニティのメンバーはsputnikdaov2契約のadd_proposal()メソッドを呼び出して新しい提案を開始できます:
錆 Pub FN add_proposal(&Mut Self, Proposal: ProposalInput) -> U64
提案者は、以下の(ProposalInput)提案の詳細を提供する必要があります。
add_proposal()メソッドは検証処理を行い、完全な提案(Proposal)を生成し、唯一のproposal_idにバインドされ、コントラクト全体で管理される提案プールに追加されます。
提案の完全な属性情報には次のものが含まれます:
注意が必要なのは、Sputnik-DAOが提案者に対して提案を開始する際に一定額のNEARトークンを担保としてステーキングすることを要求していることです。このデポジットは、提案が正常に終了した際に提案者に返還されます。
!
2. 提案状況(Proposal Status)
Sputnik-DAOの提案は、さまざまな状態を経る可能性があり、初期状態はInProgressです。提案の状態の変化は、act_proposal()メソッドによって駆動されます。
コミュニティメンバーは提案に対して以下の操作を実行できます:
投票後に票数をカウントし、投票閾値を満たす提案のステータスが相応に変更されます:
RejectedとRemoved状態の違いは、Removed状態の提案が提案プールから直接削除され、デポジットが返金されないことです。
!
3. 提案実行(プロポーザルの実行)
承認済み状態の提案の場合、internal_execute_proposal() 関数が呼び出されて提案コンテンツが実行されます。
Sputnik-DAOは多様な提案タイプをサポートしており、本記事では2つの典型的なタイプに焦点を当てます:
3.1 コントラクト関数実行の提案 (ProposalKind::FunctionCall)
FunctionCallタイプの提案は、指定されたコントラクト関数を実行できます。提案には実行する関数操作(actions)が含まれており、複数のActionCallオブジェクトを指定できます。各オブジェクトには対応するコントラクトメソッド名とパラメータが指定されます。
最終的にPromise Batch Actionsの形式でスマートコントラクトの関数の実行が完了します。
3.2 契約資金移動提案書 (ProposalKind::Transfer)
Transferタイプの提案は、コントラクトアカウントに蓄積されたトークン(NEARまたはNEP-141標準トークン)を指定されたアカウントに移動することができます。
internal_execute_proposal()はinternal_payout()関数を呼び出して、さまざまな種類のトークンや受け取りアカウントに資金を送金します。
!
4. まとめ
この記事では、Sputnik DAOのスマートコントラクトの核心概念である提案(Proposal)について説明します。提案の作成、投票の実行、及び状態変化のルールを含みます。今後の記事では、提案に基づいてSputnik-DAOのガバナンスモデル(Policy)についてより詳しく説明します。
!