# Rustスマートコントラクト養成日記(11) Sputnik DAO::提案メカニズム解析Sputnik-DAOはNEAR Protocolが提供するインフラであり、NEARエコシステムを去中心化の方向に推進します。現在、このプラットフォームは複数のNEARプロジェクトが去中心化自治コミュニティを構築することを促進し、完全かつ柔軟なコミュニティ意思決定ガバナンスのソリューションを提供しています。Sputnikdaov2は、Sputnik-DAOコミュニティのガバナンスト votingのためのスマートコントラクトです。本記事では、このコントラクトのコアコンセプトである提案(Proposal)を紹介します。今後の記事では、提案に関連するDAOコミュニティのガバナンスモデル(Policy)について紹介します。! [](https://img-cdn.gateio.im/social/moments-84ee9ca630a4cdcdb0d2eb63450a7cf4)## 1. 提案開始Sputnik-DAOコミュニティのメンバーは意見を述べたり提案を提出したりでき、他の保有メンバーは提案を審議し投票することができます。メンバーは投票や新しい提案を起こすことでプロジェクトの将来の方向性に影響を与えることができます。契約レベルでは、メンバーはsputnikdaov2契約のadd_proposal()メソッドを呼び出して新しい提案を開始できます:錆Pub FN add_proposal(&Mut Self, Proposal: ProposalInput) -> U64提案者は、以下の(ProposalInput)提案の詳細を提供する必要があります。- 提案(Description)のテキスト説明- 提案のタイプ(kind)提案情報をパラメータとして add_proposal() メソッドに渡し、検証処理を経て完全な提案(Proposal)を生成し、ユニークな proposal_id にバインドし、コントラクトが全体で維持する提案プールに追加します。提案の完全な属性情報には次のものが含まれます:- description: 説明 - kind:タイプ- 提案者:提案者- status:ステータス(のデフォルトは InProgress)- submission_time:提出時期- vote_counts: 投票数(最初は空です)- votes: 投票の詳細は最初は空( )Sputnik-DAO においては、提案押金(proposal_bond)の概念が存在し、提案者は add_proposal() を呼び出す際に、一定額の NEAR トークンを担保として質入れする必要があります。この押金は提案が正常に終了した際に提案者に返還されます。! [](https://img-cdn.gateio.im/social/moments-427716593b21fa32b47855ceb5e101fc)## 2. 提案状況Sputnik-DAO の提案は、初期状態が InProgress である多様な状態を経る可能性があります。状態の変化は act_proposal() メソッドによって駆動されます。メンバーは 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. プロポーザルの実行 承認された状態の提案は internal_execute_proposal() を呼び出して決定内容を実行します。Sputnik-DAO は多様な提案タイプをサポートしており、本記事では二つの典型的なタイプを紹介します:### 3.1 コントラクト機能実行の提案(FunctionCall)FunctionCall タイプの提案は、実行する関数操作の(actions)を使用して作成されます。 internal_execute_proposal() これらのアクションを 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) Sputnik DAO::提案メカニズム解析
Sputnik-DAOはNEAR Protocolが提供するインフラであり、NEARエコシステムを去中心化の方向に推進します。現在、このプラットフォームは複数のNEARプロジェクトが去中心化自治コミュニティを構築することを促進し、完全かつ柔軟なコミュニティ意思決定ガバナンスのソリューションを提供しています。
Sputnikdaov2は、Sputnik-DAOコミュニティのガバナンスト votingのためのスマートコントラクトです。本記事では、このコントラクトのコアコンセプトである提案(Proposal)を紹介します。今後の記事では、提案に関連するDAOコミュニティのガバナンスモデル(Policy)について紹介します。
!
1. 提案開始
Sputnik-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 の提案は、初期状態が InProgress である多様な状態を経る可能性があります。状態の変化は act_proposal() メソッドによって駆動されます。
メンバーは act_proposal() を呼び出して、提案に対して以下の操作を実行できます:
投票後、プログラムは policy.proposal_status() を呼び出して票を集計します。投票閾値を満たす提案の状態は、それに応じて変更されます。
Removed 状態の提案は提案プールから削除され、デポジットは返還されません。Rejected 状態の提案は保持され、デポジットは返還されます。
!
3. プロポーザルの実行
承認された状態の提案は internal_execute_proposal() を呼び出して決定内容を実行します。Sputnik-DAO は多様な提案タイプをサポートしており、本記事では二つの典型的なタイプを紹介します:
3.1 コントラクト機能実行の提案(FunctionCall)
FunctionCall タイプの提案は、実行する関数操作の(actions)を使用して作成されます。 internal_execute_proposal() これらのアクションを Promise バッチアクションの形式で実行します。
3.2 契約資金移動提案書 (Transfer)
Transferタイプの提案は、契約アカウントに蓄積されたトークンを指定されたアカウントに転送するために使用されます。internal_execute_proposal()は、internal_payout()関数を呼び出して異なるタイプのトークンの送金操作を実現します。
!
4. まとめ
本文では、Sputnik DAOのスマートコントラクトの核心概念 - 提案(Proposal)について説明します。提案の作成、状態の変化、実行プロセスが含まれます。次に、提案に基づいてSputnik-DAOのガバナンスモデル(Policy)の実現について詳しく紹介します。
!