链上配置(OnChainConfig)主要实现不用更新节点的情况下,通过链上交易更新链上的一些配置。在 Starcoin 中,可以通过标准库中的DAO实现来修改链上的参数。
下面主要介绍OnChainConfig的功能以及使用方式。
OnChainConfig可修改的配置:
- TransactionPublishOption
- VMConfig
- ConsensusConfig
- RewardConfig
- TransactionTimeoutConfig
- DaoConfig
- Version
具体每个配置的详细字段信息,请参考附录表格。
OnChainConfig修改流程
OnChainConfig的修改流程主要包括以下步骤:
- 确定待修改配置的参数值,发起OnChainConfigDao提案。
- 用户发起投票。
- 提案通过执行修改交易。
- 验证参数是否生效。
Dao具体流程参考Dao。
附录:OnChainConfig配置列表
配置模块 | 可修改字段 | 提案脚本名称 | 验证方法 |
---|---|---|---|
TransactionPublishOption | script_allow_list,module_publishing_allowed | propose_update_txn_publish_option | TransactionPublishOption::is_script_allowed,is_module_allowed |
VMConfig | instruction_schedule native_schedule global_memory_per_byte_cost global_memory_per_byte_write_cost min_transaction_gas_units large_transaction_cutoff instrinsic_gas_per_byte maximum_number_of_gas_units min_price_per_gas_unit max_price_per_gas_unit max_transaction_size_in_bytes gas_unit_scaling_factor default_account_size | propose_update_vm_config | 需执行交易验证,参考: test_modify_on_chain_vm_config_option的单元测试 |
ConsensusConfig | uncle_rate_target, base_block_time_target, base_reward_per_block, base_reward_per_uncle_percent, epoch_block_count, base_block_difficulty_window, min_block_time_target, max_block_time_target, base_max_uncles_per_block, base_block_gas_limit, strategy, | propose_update_consensus_config | ConsensusConfig::get_config |
RewardConfig | reward_delay | propose_update_reward_config | RewardConfig::get_reward_config |
TransactionTimeoutConfig | duration_seconds | propose_update_txn_timeout_config | TransactionTimeoutConfig::duration_seconds |
DaoConfig | voting_delay, voting_period, voting_quorum_rate, min_action_delay, | propose_modify_dao_config | Dao::voting_delay, voting_period, voting_quorum_rate, min_action_delay |
Version | major | propose_update_version | Version::get |