From f4b2fb8f4229e7ae8e16720d27f0a4032d61666c Mon Sep 17 00:00:00 2001 From: Hardhat Chad Date: Fri, 12 Jul 2024 16:54:31 +0000 Subject: [PATCH] bug fixes --- api/src/state/config.rs | 2 +- program/src/crown.rs | 4 ++-- program/src/initialize.rs | 1 - program/src/mine.rs | 10 ++++------ 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/api/src/state/config.rs b/api/src/state/config.rs index d08e00d..970a5d1 100644 --- a/api/src/state/config.rs +++ b/api/src/state/config.rs @@ -10,7 +10,7 @@ use super::AccountDiscriminator; #[repr(C)] #[derive(Clone, Copy, Debug, PartialEq, Pod, ShankAccount, Zeroable)] pub struct Config { - /// The admin authority with permission to update the difficulty. + // TODO Remove this pub admin: Pubkey, /// The base reward rate paid out for a hash of minimum difficulty. diff --git a/program/src/crown.rs b/program/src/crown.rs index 8849f9c..e9a2463 100644 --- a/program/src/crown.rs +++ b/program/src/crown.rs @@ -40,11 +40,11 @@ pub fn process_crown<'a, 'info>( // If top staker is the default null address, skip this. let mut config_data = config_info.data.borrow_mut(); let config = Config::try_from_bytes_mut(&mut config_data)?; - let proof_data = proof_info.data.borrow(); - let proof = Proof::try_from_bytes(&proof_data)?; if config.top_staker.ne(&Pubkey::new_from_array([0; 32])) { // Load current top staker load_any_proof(proof_info, false)?; + let proof_data = proof_info.data.borrow(); + let proof = Proof::try_from_bytes(&proof_data)?; if proof_info.key.ne(&config.top_staker) { return Ok(()); } diff --git a/program/src/initialize.rs b/program/src/initialize.rs index 1a18dbe..dc81adf 100644 --- a/program/src/initialize.rs +++ b/program/src/initialize.rs @@ -138,7 +138,6 @@ pub fn process_initialize<'a, 'info>( let mut config_data = config_info.data.borrow_mut(); config_data[0] = Config::discriminator() as u8; let config = Config::try_from_bytes_mut(&mut config_data)?; - config.admin = *signer.key; config.base_reward_rate = INITIAL_BASE_REWARD_RATE; config.last_reset_at = 0; config.max_stake = 0; diff --git a/program/src/mine.rs b/program/src/mine.rs index f411e80..cf016e0 100644 --- a/program/src/mine.rs +++ b/program/src/mine.rs @@ -104,13 +104,11 @@ pub fn process_mine<'a, 'info>( // if the miner's last stake deposit was more than one minute ago. let t = clock.unix_timestamp; if config.max_stake.gt(&0) && proof.last_stake_at.saturating_add(ONE_MINUTE).le(&t) { - let staking_reward = proof - .balance - .min(config.max_stake) - .checked_mul(reward) + let staking_reward = (reward as u128) + .checked_mul(proof.balance.min(config.max_stake) as u128) .unwrap() - .checked_div(config.max_stake) - .unwrap(); + .checked_div(config.max_stake as u128) + .unwrap() as u64; reward = reward.checked_add(staking_reward).unwrap(); }