通过Dao升级Module
通过Dao升级Module

Starcoin 支持通过 DAO 治理机制升级 Module。

  1. 编译好要更新的Module;
  2. 解锁账号:
starcoin% account unlock <account address>
  1. 提议更新Module:
starcoin% dev module-proposal -s <account address> -m <module path> -v <version> -e false

其中,参数 -m 表示升级包的路径;-v 表示新的版本号;参数 -e 表示是否跳过 module 兼容性检查强制升级,false 表示不跳过兼容性检查,缺省不跳过。

  1. 查询提议状态:

查看提议id

dev call --function 0x1::Dao::proposal_info -t 0x1::STC::STC -t 0x1::UpgradeModuleDaoProposal::UpgradeModuleV2 --arg <proposal address>

查看提议状态

dev call --function 0x1::Dao::proposal_state -t 0x1::STC::STC -t 0x1::UpgradeModuleDaoProposal::UpgradeModuleV2 --arg <proposal address> --arg <proposal_id>
  1. 任何人都可以给状态为 ACTIVE 的提议投赞成或者反对票:
starcoin% account execute-function -s <account address> --function 0x1::DaoVoteScripts::cast_vote -t 0x1::STC::STC -t 0x1::UpgradeModuleDaoProposal::UpgradeModuleV2 --arg <proposal address> --arg <proposal_id> --arg true --arg 2000000000000000u128
  1. 任何人都可以将状态为 AGREED 的提议放入更新队列:
starcoin% dev module-queue -s <account address> -a <proposal address> -i <proposal_id>

执行公示期满后,状态从 QUEUED 变为 EXECUTABLE。

  1. 任何人都可以为状态为 EXECUTABLE 的提议提交更新计划:
starcoin% dev module-plan -s <account address> -a <proposal address> -i <proposal_id>
  1. 如果提议的状态为 EXTRACTED,任何人都可以更新对应的Module:
starcoin% dev module-exe -s <account address> -m <module path>
  1. 最后不要忘记取回押金、终结提案。具体可参考上一节 onchain config 的修改。