...
代码块 |
---|
module creator::XDAO { use StarcoinFramework::DAOAccount; use StarcoinFramework::DAOSpace; use StarcoinFramework::MemberProposalPlugin::{Self, MemberProposalPlugin}; use StarcoinFramework::InstallPluginProposalPlugin::{Self, InstallPluginProposalPlugin}; struct X has store{} const NAME: vector<u8> = b"X"; /// directly upgrade the sender account to DAOAccount and create DAO public(script) fun create_dao( sender: signer, voting_delay: u64, voting_period: u64, voting_quorum_rate: u8, min_action_delay: u64, min_proposal_deposit: u128,){ let dao_account_cap = DAOAccount::upgrade_to_dao(sender); //let dao_signer = DAOAccount::dao_signer(&dao_account_cap); let config = DAOSpace::new_dao_config( voting_delay, voting_period, voting_quorum_rate, min_action_delay, min_proposal_deposit, ); let dao_root_cap = DAOSpace::create_dao<X>(dao_account_cap, *&NAME, b"ipfs://description", X{}, config); DAOSpace::install_plugin_with_root_cap<X, InstallPluginProposalPlugin>(&dao_root_cap, InstallPluginProposalPlugin::required_caps()); DAOSpace::install_plugin_with_root_cap<X, MemberProposalPlugin>(&dao_root_cap, MemberProposalPlugin::required_caps()); DAOSpace::burn_root_cap(dao_root_cap); } } |
1.2
...
动态安装(合约 Write 接口)
动态安装适用于 DAO 已经创建好后 ,想要安装其他插件
需要被安装插件提供
install_plugin_proposal
接口,或者其他类似功能的接口
参数:
description:vector<u8>
要安装插件提案的描述
...
多久后可以执行提案
public(script) fun install_plugin_proposal<DAOT: store>(sender: signer, description:vector<u8>, action_delay: u64)
参数:
description:vector<u8>
要安装插件提案的描述
action_delay:u64
多久后可以执行提案