Skip to content

Commit

Permalink
Add OnChainStarcoinDAOConfig
Browse files Browse the repository at this point in the history
  • Loading branch information
WGB5445 committed Sep 14, 2022
1 parent 55b96c0 commit b791537
Show file tree
Hide file tree
Showing 5 changed files with 215 additions and 4 deletions.
5 changes: 4 additions & 1 deletion build/StarcoinFramework/BuildInfo.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,9 @@ compiled_package_info:
? address: "0x00000000000000000000000000000001"
name: OnChainConfigScripts
: StarcoinFramework
? address: "0x00000000000000000000000000000001"
name: OnChainStarcoinDAOConfig
: StarcoinFramework
? address: "0x00000000000000000000000000000001"
name: Option
: StarcoinFramework
Expand Down Expand Up @@ -309,7 +312,7 @@ compiled_package_info:
? address: "0x00000000000000000000000000000001"
name: YieldFarmingV2
: StarcoinFramework
source_digest: 628DC681D39597E4A963ECD3A29F63DE18163D2F008702D1AFC440BCC7287727
source_digest: C301E581A89D4E5782A094C0081B80FE51B2171E955BD365A482773E365B9988
build_flags:
dev_mode: false
test_mode: false
Expand Down
1 change: 1 addition & 0 deletions build/StarcoinFramework/docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ This is the root document for the Move StarcoinFramework module documentation. T
- [`0x1::Offer`](Offer.md#0x1_Offer)
- [`0x1::OnChainConfigDao`](OnChainConfigDao.md#0x1_OnChainConfigDao)
- [`0x1::OnChainConfigScripts`](OnChainConfigScripts.md#0x1_OnChainConfigScripts)
- [`0x1::OnChainStarcoinDAOConfig`](OnChainStarcoinDAOConfig.md#0x1_OnChainStarcoinDAOConfig)
- [`0x1::Option`](Option.md#0x1_Option)
- [`0x1::Oracle`](Oracle.md#0x1_Oracle)
- [`0x1::PackageTxnManager`](PackageTxnManager.md#0x1_PackageTxnManager)
Expand Down
208 changes: 208 additions & 0 deletions sources/OnChainStarcoinDAOConfig.move
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
module StarcoinFramework::OnChainStarcoinDAOConfig {
use StarcoinFramework::ConsensusConfig;
use StarcoinFramework::RewardConfig;
use StarcoinFramework::TransactionPublishOption;
use StarcoinFramework::TransactionTimeoutConfig;
use StarcoinFramework::VMConfig;
use StarcoinFramework::LanguageVersion;
use StarcoinFramework::StarcoinDAO::StarcoinDAO;
use StarcoinFramework::ConfigProposalPlugin;

public fun propose_update_consensus_config(account: &signer,
description: vector<u8>,
uncle_rate_target: u64,
base_block_time_target: u64,
base_reward_per_block: u128,
base_reward_per_uncle_percent: u64,
epoch_block_count: u64,
base_block_difficulty_window: u64,
min_block_time_target: u64,
max_block_time_target: u64,
base_max_uncles_per_block: u64,
base_block_gas_limit: u64,
strategy: u8,
exec_delay: u64) {
let consensus_config = ConsensusConfig::new_consensus_config(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);
ConfigProposalPlugin::create_proposal<StarcoinDAO, ConsensusConfig::ConsensusConfig>(account, description, exec_delay, consensus_config);
}

public ( script ) fun propose_update_consensus_config_entry(account: signer,
description: vector<u8>,
uncle_rate_target: u64,
base_block_time_target: u64,
base_reward_per_block: u128,
base_reward_per_uncle_percent: u64,
epoch_block_count: u64,
base_block_difficulty_window: u64,
min_block_time_target: u64,
max_block_time_target: u64,
base_max_uncles_per_block: u64,
base_block_gas_limit: u64,
strategy: u8,
exec_delay: u64) {
propose_update_consensus_config(&account,
description,
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,
exec_delay);
}

spec propose_update_consensus_config {
pragma verify = false;
}

public fun propose_update_reward_config(account: &signer,
description: vector<u8>,
reward_delay: u64,
exec_delay: u64) {
let reward_config = RewardConfig::new_reward_config(reward_delay);
ConfigProposalPlugin::create_proposal<StarcoinDAO, RewardConfig::RewardConfig>(account, description, exec_delay, reward_config);
}

public ( script ) fun propose_update_reward_config_entry(account: signer,
description: vector<u8>,
reward_delay: u64,
exec_delay: u64) {
propose_update_reward_config(&account, description, reward_delay, exec_delay);
}
spec propose_update_reward_config {
pragma verify = false;
}

public fun propose_update_txn_publish_option(account: &signer,
description: vector<u8>,
script_allowed: bool,
module_publishing_allowed: bool,
exec_delay: u64) {
let txn_publish_option = TransactionPublishOption::new_transaction_publish_option(script_allowed, module_publishing_allowed);
ConfigProposalPlugin::create_proposal<StarcoinDAO, TransactionPublishOption::TransactionPublishOption>(account, description, exec_delay, txn_publish_option);
}

public ( script ) fun propose_update_txn_publish_option_entry(account: signer,
description: vector<u8>,
script_allowed: bool,
module_publishing_allowed: bool,
exec_delay: u64) {
propose_update_txn_publish_option(&account, description, script_allowed, module_publishing_allowed, exec_delay);
}
spec propose_update_txn_publish_option {
pragma verify = false;
}

public fun propose_update_txn_timeout_config(account: &signer,
description: vector<u8>,
duration_seconds: u64,
exec_delay: u64) {
let txn_timeout_config = TransactionTimeoutConfig::new_transaction_timeout_config(duration_seconds);
ConfigProposalPlugin::create_proposal<StarcoinDAO, TransactionTimeoutConfig::TransactionTimeoutConfig>(account, description, exec_delay, txn_timeout_config);
}

public ( script ) fun propose_update_txn_timeout_config_entry(account: signer,
description: vector<u8>,
duration_seconds: u64,
exec_delay: u64) {
propose_update_txn_timeout_config(&account,description,duration_seconds,exec_delay);
}

spec propose_update_txn_timeout_config {
pragma verify = false;
}

public fun propose_update_vm_config(account: &signer,
description: vector<u8>,
instruction_schedule: vector<u8>,
native_schedule: vector<u8>,
global_memory_per_byte_cost: u64,
global_memory_per_byte_write_cost: u64,
min_transaction_gas_units: u64,
large_transaction_cutoff: u64,
instrinsic_gas_per_byte: u64,
maximum_number_of_gas_units: u64,
min_price_per_gas_unit: u64,
max_price_per_gas_unit: u64,
max_transaction_size_in_bytes: u64,
gas_unit_scaling_factor: u64,
default_account_size: u64,
exec_delay: u64, ) {
let vm_config = VMConfig::new_vm_config(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);
ConfigProposalPlugin::create_proposal<StarcoinDAO, VMConfig::VMConfig>(account, description, exec_delay, vm_config);
}

public (script) fun propose_update_vm_config_entry(account: signer,
description: vector<u8>,
instruction_schedule: vector<u8>,
native_schedule: vector<u8>,
global_memory_per_byte_cost: u64,
global_memory_per_byte_write_cost: u64,
min_transaction_gas_units: u64,
large_transaction_cutoff: u64,
instrinsic_gas_per_byte: u64,
maximum_number_of_gas_units: u64,
min_price_per_gas_unit: u64,
max_price_per_gas_unit: u64,
max_transaction_size_in_bytes: u64,
gas_unit_scaling_factor: u64,
default_account_size: u64,
exec_delay: u64, ) {
propose_update_vm_config(&account,
description,
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,
exec_delay) ;
}

spec propose_update_vm_config {
pragma verify = false;
}

public fun propose_update_move_language_version(account: &signer, description: vector<u8>, new_version: u64, exec_delay: u64) {
let lang_version = LanguageVersion::new(new_version);
ConfigProposalPlugin::create_proposal<StarcoinDAO, LanguageVersion::LanguageVersion>(account, description, exec_delay, lang_version);
}

public(script) fun propose_update_move_language_version_entry(account: signer, description: vector<u8>, new_version: u64, exec_delay: u64) {
propose_update_move_language_version(&account, description, new_version, exec_delay);
}
}
4 changes: 2 additions & 2 deletions sources/daospaceplugin/ConfigProposalPlugin.move
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ module StarcoinFramework::ConfigProposalPlugin {
caps
}

public fun create_proposal<DAOT: store, ConfigT: store>(sender: signer, description: vector<u8>,action_delay: u64, config: ConfigT) {
public fun create_proposal<DAOT: store, ConfigT: store>(sender: &signer, description: vector<u8>,action_delay: u64, config: ConfigT) {
let witness = ConfigProposalPlugin{};
let cap = DAOSpace::acquire_proposal_cap<DAOT, ConfigProposalPlugin>(&witness);
let action = ConfigProposalAction<ConfigT>{
Expand All @@ -25,7 +25,7 @@ module StarcoinFramework::ConfigProposalPlugin {
DAOSpace::create_proposal<
DAOT,
ConfigProposalPlugin,
ConfigProposalAction<ConfigT>>(&cap, &sender, action, description, action_delay);
ConfigProposalAction<ConfigT>>(&cap, sender, action, description, action_delay);
}

public fun execute_proposal<DAOT: store, ConfigT: copy + drop + store>(sender: &signer, proposal_id: u64) {
Expand Down
1 change: 0 additions & 1 deletion sources/daospaceplugin/StakeToSBTPlugin.move
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,6 @@ module StarcoinFramework::StakeToSBTPlugin {

let token_amount = Token::value<TokenT>(&token);
let sbt_amount = compute_token_to_sbt(weight, &token);

DAOSpace::increase_member_sbt(&member_cap, sender_addr, sbt_amount);

let stake_list = borrow_global_mut<StakeList<DAOT, TokenT>>(sender_addr);
Expand Down

0 comments on commit b791537

Please sign in to comment.