From 83645cd0010034f8d2998010457e393490ef9e76 Mon Sep 17 00:00:00 2001 From: Hardhat Chad Date: Sat, 20 Jul 2024 19:43:18 +0000 Subject: [PATCH 1/3] set thresholds --- api/src/consts.rs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/api/src/consts.rs b/api/src/consts.rs index 6658a27..9f4ef08 100644 --- a/api/src/consts.rs +++ b/api/src/consts.rs @@ -5,22 +5,20 @@ use solana_program::{pubkey, pubkey::Pubkey}; /// The admin allowed to initialize the program. pub const ADMIN: Pubkey = pubkey!("HBUh9g46wk2X89CvaNN15UmsznP59rh6od1h8JwYAopk"); -/// The reward rate to intialize the program with. -pub const INITIAL_BASE_REWARD_RATE: u64 = 2u64.pow(25); // 10u64.pow(3u32); +/// The base reward rate to intialize the program with. +pub const INITIAL_BASE_REWARD_RATE: u64 = 2u64.pow(10); -/// The minimum threshold for the base reward rate, at which point the min difficulty should be increased -// TODO 2^8 (0.00000000256) -pub const BASE_REWARD_RATE_MIN_THRESHOLD: u64 = 2u64.pow(24); +/// The minimum allowed base reward rate, at which point the min difficulty should be increased +pub const BASE_REWARD_RATE_MIN_THRESHOLD: u64 = 2; -/// The maximum threshold for the base reward rate, at which point the min difficulty should be decreased. -// TODO 2^32 (0.04294967296) -pub const BASE_REWARD_RATE_MAX_THRESHOLD: u64 = 2u64.pow(26); +/// The maximum allowed base reward rate, at which point the min difficulty should be decreased. +pub const BASE_REWARD_RATE_MAX_THRESHOLD: u64 = 2u64.pow(24); /// The spam/liveness tolerance in seconds. pub const TOLERANCE: i64 = 5; /// The minimum difficulty to initialize the program with. -pub const INITIAL_MIN_DIFFICULTY: u32 = 0; // 8; +pub const INITIAL_MIN_DIFFICULTY: u32 = 0; /// The decimal precision of the ORE token. /// There are 100 billion indivisible units per ORE (called "grains"). From 50beff8c7e1fc14a7138f519dc87d76673e88e6e Mon Sep 17 00:00:00 2001 From: Hardhat Chad Date: Sat, 20 Jul 2024 20:34:28 +0000 Subject: [PATCH 2/3] set range for min difficulty changes --- api/src/consts.rs | 8 ++++---- program/src/mine.rs | 2 +- program/src/reset.rs | 10 +++++++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/api/src/consts.rs b/api/src/consts.rs index 9f4ef08..f1ff62c 100644 --- a/api/src/consts.rs +++ b/api/src/consts.rs @@ -6,19 +6,19 @@ use solana_program::{pubkey, pubkey::Pubkey}; pub const ADMIN: Pubkey = pubkey!("HBUh9g46wk2X89CvaNN15UmsznP59rh6od1h8JwYAopk"); /// The base reward rate to intialize the program with. -pub const INITIAL_BASE_REWARD_RATE: u64 = 2u64.pow(10); +pub const INITIAL_BASE_REWARD_RATE: u64 = 2u64.pow(6); /// The minimum allowed base reward rate, at which point the min difficulty should be increased -pub const BASE_REWARD_RATE_MIN_THRESHOLD: u64 = 2; +pub const BASE_REWARD_RATE_MIN_THRESHOLD: u64 = 2u64.pow(5); /// The maximum allowed base reward rate, at which point the min difficulty should be decreased. -pub const BASE_REWARD_RATE_MAX_THRESHOLD: u64 = 2u64.pow(24); +pub const BASE_REWARD_RATE_MAX_THRESHOLD: u64 = 2u64.pow(8); /// The spam/liveness tolerance in seconds. pub const TOLERANCE: i64 = 5; /// The minimum difficulty to initialize the program with. -pub const INITIAL_MIN_DIFFICULTY: u32 = 0; +pub const INITIAL_MIN_DIFFICULTY: u32 = 8; /// The decimal precision of the ORE token. /// There are 100 billion indivisible units per ORE (called "grains"). diff --git a/program/src/mine.rs b/program/src/mine.rs index 758b19c..b5f7a3c 100644 --- a/program/src/mine.rs +++ b/program/src/mine.rs @@ -115,7 +115,7 @@ pub fn process_mine<'a, 'info>( // If user has greater than or equal to the max stake on the network, they receive 2x multiplier. // Any stake less than this will receives between 1x and 2x multipler. The multipler is only active // if the miner's last stake deposit was more than one minute ago. - if config.max_stake.gt(&0) + if config.top_staker_balance.gt(&0) && proof.balance.gt(&0) && proof.last_stake_at.saturating_add(ONE_MINUTE).le(&t) { diff --git a/program/src/reset.rs b/program/src/reset.rs index 63c0754..35b1a87 100644 --- a/program/src/reset.rs +++ b/program/src/reset.rs @@ -172,7 +172,8 @@ mod tests { use crate::calculate_new_reward_rate; use ore_api::consts::{ - BUS_EPOCH_REWARDS, MAX_EPOCH_REWARDS, SMOOTHING_FACTOR, TARGET_EPOCH_REWARDS, + BASE_REWARD_RATE_MIN_THRESHOLD, BUS_EPOCH_REWARDS, MAX_EPOCH_REWARDS, SMOOTHING_FACTOR, + TARGET_EPOCH_REWARDS, }; const FUZZ_SIZE: u64 = 10_000; @@ -201,6 +202,13 @@ mod tests { assert!(new_rate.lt(¤t_rate)); } + #[test] + fn test_calculate_new_reward_rate_lower_edge() { + let current_rate = BASE_REWARD_RATE_MIN_THRESHOLD; + let new_rate = calculate_new_reward_rate(current_rate, TARGET_EPOCH_REWARDS + 1); + assert!(new_rate.lt(¤t_rate)); + } + #[test] fn test_calculate_new_reward_rate_lower_fuzz() { let mut rng = rand::thread_rng(); From 15f86584bb95a03140b5769d6efa6a253e15d1bd Mon Sep 17 00:00:00 2001 From: Hardhat Chad Date: Sat, 20 Jul 2024 20:36:07 +0000 Subject: [PATCH 3/3] rename const --- api/src/consts.rs | 4 ++-- program/src/initialize.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api/src/consts.rs b/api/src/consts.rs index f1ff62c..e45eabc 100644 --- a/api/src/consts.rs +++ b/api/src/consts.rs @@ -2,8 +2,8 @@ use array_const_fn_init::array_const_fn_init; use const_crypto::ed25519; use solana_program::{pubkey, pubkey::Pubkey}; -/// The admin allowed to initialize the program. -pub const ADMIN: Pubkey = pubkey!("HBUh9g46wk2X89CvaNN15UmsznP59rh6od1h8JwYAopk"); +/// The authority allowed to initialize the program. +pub const INITIALIZER_ADDRESS: Pubkey = pubkey!("HBUh9g46wk2X89CvaNN15UmsznP59rh6od1h8JwYAopk"); /// The base reward rate to intialize the program with. pub const INITIAL_BASE_REWARD_RATE: u64 = 2u64.pow(6); diff --git a/program/src/initialize.rs b/program/src/initialize.rs index ce850e3..6ccbf26 100644 --- a/program/src/initialize.rs +++ b/program/src/initialize.rs @@ -91,7 +91,7 @@ pub fn process_initialize<'a, 'info>( load_sysvar(rent_sysvar, sysvar::rent::id())?; // Check signer - if signer.key.ne(&ADMIN) { + if signer.key.ne(&INITIALIZER_ADDRESS) { return Err(ProgramError::MissingRequiredSignature); }