From eb8ce05049ef9c3fb7e104669031f4b1d8fd00ad Mon Sep 17 00:00:00 2001 From: Hardhat Chad Date: Wed, 28 Aug 2024 16:37:56 +0000 Subject: [PATCH] fix overflow issue --- program/src/mine.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/program/src/mine.rs b/program/src/mine.rs index 91090bc..e5e5dde 100644 --- a/program/src/mine.rs +++ b/program/src/mine.rs @@ -96,10 +96,11 @@ pub fn process_mine(accounts: &[AccountInfo], data: &[u8]) -> ProgramResult { let normalized_difficulty = difficulty .checked_sub(config.min_difficulty as u32) .unwrap(); - let mut reward = config + let base_reward = config .base_reward_rate .checked_mul(2u64.checked_pow(normalized_difficulty).unwrap()) .unwrap(); + let mut reward = base_reward; // Apply boosts. // @@ -155,7 +156,7 @@ pub fn process_mine(accounts: &[AccountInfo], data: &[u8]) -> ProgramResult { // Apply multiplier if boost is not expired and last stake at was more than one minute ago. if boost.expires_at.gt(&t) && stake.last_stake_at.saturating_add(ONE_MINUTE).le(&t) { let multiplier = boost.multiplier.checked_sub(1).unwrap(); - let boost_reward = (reward as u128) + let boost_reward = (base_reward as u128) .checked_mul(multiplier as u128) .unwrap() .checked_mul(stake.balance as u128) @@ -163,6 +164,8 @@ pub fn process_mine(accounts: &[AccountInfo], data: &[u8]) -> ProgramResult { .checked_div(boost.total_stake as u128) .unwrap() as u64; reward = reward.checked_add(boost_reward).unwrap(); + + // Log event sol_log_data(&[(BoostEvent { mint: boost.mint, reward: boost_reward,