基本的な DAO

これは Internet Computer 上にデプロイされている基本的な DAO ( Decentralized Autonomous Organization ) のサンプルプロジェクトのデモです。 基本的な DAO のサンプルコードは MotokoRust で見ることが出来ます。

概要

basic_dao は Principal ID とトークン数をマッピングしたアカウントセットで初期化することができます。 アカウントのオーナーは account_balance を呼び出してアカウント残高を照会したり、 transfer を呼び出してトークンを他のアカウントに転送することができます。誰でもすべてのアカウントを閲覧するために list_accounts を呼び出すことができます。

アカウントのオーナーは submit_proposal を呼び出してプロポーザルを提出することができます。プロポーザルでは、Canister、メソッド、およびこのメソッドの引数を指定します。アカウントのオーナーは vote を呼び出すことで、提案に対して ( YesNo のどちらかの) 票を投じることができます。 投票数はそのアカウントのオーナーが持っているトークン数と同じです。もし十分な数の Yes 票が投じられたら basic_dao は、指定された Canister 、与えられた引数、指定されたメソッドを呼び出すことでその提案を実行します。もし No の票数が多く投じられた場合、提案は実行されず、代わりに Rejected として登録されます。

あるプロポーザルを可決するために必要な Yes の票数などの特定のシステムパラメータを get_system_params で問い合わせることができます。これらのシステムパラメータはプロポーザルプロセスを通じて変更することができます。つまり、プロポーザルは update_system_params で更新された値を呼び出すようにすることができます。以下のデモはまさにそれを行っています。

詳しくは Canister のサービス定義 をご覧ください。