mirror of
https://github.com/d0zingcat/ore.git
synced 2026-05-14 07:26:51 +00:00
make min difficulty dynamic
This commit is contained in:
@@ -91,7 +91,7 @@ pub fn process_initialize<'a, 'info>(
|
||||
load_sysvar(rent_sysvar, sysvar::rent::id())?;
|
||||
|
||||
// Check signer
|
||||
if signer.key.ne(&INITIAL_ADMIN) {
|
||||
if signer.key.ne(&ADMIN) {
|
||||
return Err(ProgramError::MissingRequiredSignature);
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ pub fn process_initialize<'a, 'info>(
|
||||
let config = Config::try_from_bytes_mut(&mut config_data)?;
|
||||
config.base_reward_rate = INITIAL_BASE_REWARD_RATE;
|
||||
config.last_reset_at = 0;
|
||||
config.min_difficulty = MIN_DIFFICULTY as u64;
|
||||
config.min_difficulty = INITIAL_MIN_DIFFICULTY as u64;
|
||||
config.top_staker = Pubkey::new_from_array([0; 32]);
|
||||
config.top_staker_balance = 0;
|
||||
|
||||
|
||||
@@ -94,6 +94,18 @@ pub fn process_reset<'a, 'info>(
|
||||
config.base_reward_rate =
|
||||
calculate_new_reward_rate(config.base_reward_rate, total_theoretical_rewards);
|
||||
|
||||
// If base_reward_rate is too low, then increment difficulty by 1 and double base reward rate
|
||||
if config.base_reward_rate.le(&BASE_REWARD_RATE_MIN_THRESHOLD) {
|
||||
config.min_difficulty = config.min_difficulty.checked_add(1).unwrap();
|
||||
config.base_reward_rate = config.base_reward_rate.checked_mul(2).unwrap();
|
||||
}
|
||||
|
||||
// If base reward rate is too high, then decrement difficulty by 1 and halve base reward rate
|
||||
if config.base_reward_rate.ge(&BASE_REWARD_RATE_MAX_THRESHOLD) && config.min_difficulty.gt(&0) {
|
||||
config.min_difficulty = config.min_difficulty.checked_sub(1).unwrap();
|
||||
config.base_reward_rate = config.base_reward_rate.checked_div(2).unwrap();
|
||||
}
|
||||
|
||||
// Max supply check
|
||||
let mint = Mint::unpack(&mint_info.data.borrow()).expect("Failed to parse mint");
|
||||
if mint.supply.ge(&MAX_SUPPLY) {
|
||||
|
||||
Reference in New Issue
Block a user