# Rustスマートコントラクトシリーズ: Sputnik 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()メソッドを呼び出して新しい提案を開始できます。提案者は、詳細な提案情報(ProposalInput)を提供する必要があります。これには:- 提案(Description)のテキスト説明 - 提案のタイプ(kind)これらの情報は、add_proposal()メソッドにパラメータとして渡され、検証と処理を経て、完全な提案(Proposal)が生成され、唯一のproposal_idにバインドされ、コントラクト全体で維持されるproposalsマッピングに追加されます。提案に含まれる完全な属性情報は次のとおりです:- description: 説明- kind: タイプ- 提案者:提案者- status: ステータス- submission_time:提出時期- vote_counts:投票数- votes:投票の詳細Sputnik-DAOは提案者に対し、add_proposal()を呼び出す際に一定数のNEARトークンを担保としてステークすることを要求します。このデポジットは提案が正常に終了した際に提案者に返還されます。! [](https://img-cdn.gateio.im/social/moments-427716593b21fa32b47855ceb5e101fc)## 2. 提案状況Sputnik-DAOの提案は、初期状態がInProgressで、複数の状態を経ることができます。 状態の変化は、act_proposal()アプローチによって駆動されます。DAOメンバーはact_proposal()を呼び出して提案の実行操作を行うことができます:- VoteApprove:はい- VoteReject: 反対 - VoteRemove:削除します投票後はpolicy.proposal_status()を呼び出してカウントします。投票閾値を満たす提案の状態が変更されます:- 承認済み: 呼び出しはinternal_execute_proposal()実行されます- 拒否/削除: internal_reject_proposal()処理を呼び出しますRemoved状態の提案は提案プールから削除され、デポジットは返金されません。Rejected状態の提案は提案プールに残り、デポジットは返金されます。! [](https://img-cdn.gateio.im/social/moments-ef0b959c42e1f5fc6263cd4a86fd078e)## 3. プロポーザルの実行Approved状態の提案はinternal_execute_proposal()を呼び出して決定内容を実行します。Sputnik-DAOは多様な提案タイプをサポートしており、この記事では二つの典型的なタイプを紹介します:### 3.1 コントラクト関数実行提案FunctionCallタイプの提案は、ProposalInputパラメータを通じて実行する関数操作(actions)を渡します。各ActionCallは、コントラクトメソッド名とパラメータを指定できます。Sputnik-DAOはPromise Batch Actions形式でコントラクト関数の実行を完了します。### 3.2 コントラクト資金移転提案 Transferタイプの提案は、契約アカウントに蓄積されたトークンを指定されたreceiver_idに移転するために使用されます。基盤となるinternal_payout()関数を呼び出し、異なるタイプのトークンとreceiver_idに対する送金操作を実現します。! [](https://img-cdn.gateio.im/social/moments-eb73d5e15f6161f0a4b442cd4b99a91e)
Sputnik DAOスマートコントラクト核心:提案メカニズムの詳細
Rustスマートコントラクトシリーズ: Sputnik DAOコア概念解析
Sputnik-DAOはNEAR Protocolのインフラストラクチャとして、NEARエコシステムを分散型の方向に進めています。現在、このプラットフォームは複数のNEARプロジェクトが自治コミュニティを形成するのを促進しており、完全で柔軟なコミュニティの意思決定ガバナンスソリューションを提供しています。
Sputnikdaov2はSputnik-DAOコミュニティガバナンス投票のためのスマートコントラクトです。本記事では、この契約の核心概念を紹介します:提案(Proposal)、今後の記事では提案に基づいて関連するDAOコミュニティガバナンスモデル(Policy)について詳しく説明します。
!
1. 提案開始
Sputnik-DAOの各メンバーは、プロジェクトのガバナンスや管理について提案を提出できます。その後、株を持つコミュニティメンバーは提案を審議し、投票することができます。メンバーは、投票や提案を発起することでプロジェクトの将来の方向性に影響を与えることができます。
契約のレベルでは、DAOのメンバーはsputnikdaov2契約のadd_proposal()メソッドを呼び出して新しい提案を開始できます。提案者は、詳細な提案情報(ProposalInput)を提供する必要があります。これには:
これらの情報は、add_proposal()メソッドにパラメータとして渡され、検証と処理を経て、完全な提案(Proposal)が生成され、唯一のproposal_idにバインドされ、コントラクト全体で維持されるproposalsマッピングに追加されます。
提案に含まれる完全な属性情報は次のとおりです:
Sputnik-DAOは提案者に対し、add_proposal()を呼び出す際に一定数のNEARトークンを担保としてステークすることを要求します。このデポジットは提案が正常に終了した際に提案者に返還されます。
!
2. 提案状況
Sputnik-DAOの提案は、初期状態がInProgressで、複数の状態を経ることができます。 状態の変化は、act_proposal()アプローチによって駆動されます。
DAOメンバーはact_proposal()を呼び出して提案の実行操作を行うことができます:
投票後はpolicy.proposal_status()を呼び出してカウントします。投票閾値を満たす提案の状態が変更されます:
Removed状態の提案は提案プールから削除され、デポジットは返金されません。Rejected状態の提案は提案プールに残り、デポジットは返金されます。
!
3. プロポーザルの実行
Approved状態の提案はinternal_execute_proposal()を呼び出して決定内容を実行します。Sputnik-DAOは多様な提案タイプをサポートしており、この記事では二つの典型的なタイプを紹介します:
3.1 コントラクト関数実行提案
FunctionCallタイプの提案は、ProposalInputパラメータを通じて実行する関数操作(actions)を渡します。各ActionCallは、コントラクトメソッド名とパラメータを指定できます。Sputnik-DAOはPromise Batch Actions形式でコントラクト関数の実行を完了します。
3.2 コントラクト資金移転提案
Transferタイプの提案は、契約アカウントに蓄積されたトークンを指定されたreceiver_idに移転するために使用されます。基盤となるinternal_payout()関数を呼び出し、異なるタイプのトークンとreceiver_idに対する送金操作を実現します。
!