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