fix: modify tests and add back p2pool external hashrate into donation calculation

This commit is contained in:
mostafaei2002 2024-07-24 12:10:00 +03:30
parent b0834d4c34
commit 9c49aa9755
2 changed files with 26 additions and 5 deletions

View file

@ -678,7 +678,7 @@ Uptime = 0h 2m 4s
assert_eq!(algo.stats.target_donation_hashrate, 10000.0);
lock!(gui_api_p2pool).p2pool_difficulty_u64 = 9_000_000;
lock!(gui_api_p2pool).p2pool_difficulty_u64 = 95_000_000;
lock!(gui_api_xmrig).hashrate_raw_15m = 10000.0;
lock!(gui_api_xvb).stats_priv.runtime_mode = RuntimeMode::Auto;
@ -715,7 +715,7 @@ Uptime = 0h 2m 4s
let xp_alive = false;
let share = 1;
lock!(gui_api_p2pool).p2pool_difficulty_u64 = 9_000_000;
lock!(gui_api_p2pool).p2pool_difficulty_u64 = 95_000_000;
lock!(gui_api_xmrig).hashrate_raw_15m = 20000.0;
lock!(gui_api_xvb).stats_priv.runtime_mode = RuntimeMode::Hero;
@ -734,6 +734,25 @@ Uptime = 0h 2m 4s
xp_alive,
);
assert_eq!(algo.stats.target_donation_hashrate, 10000.0);
assert_eq!(algo.stats.target_donation_hashrate, 15382.1);
lock!(gui_api_p2pool).sidechain_ehr = 25000.0;
let algo = Algorithm::new(
&client,
&pub_api,
&gui_api_xvb,
&gui_api_xmrig,
&gui_api_xp,
&gui_api_p2pool,
token_xmrig,
&state_p2pool,
share,
&time_donated,
rig,
xp_alive,
);
assert_eq!(algo.stats.target_donation_hashrate, 20000.0);
}
}

View file

@ -135,6 +135,7 @@ impl<'a> Algorithm<'a> {
let share_min_hashrate = Self::minimum_hashrate_share(
lock!(gui_api_p2pool).p2pool_difficulty_u64,
state_p2pool.mini,
p2pool_external_hashrate,
);
let spareable_hashrate = hashrate_xmrig - share_min_hashrate;
@ -478,13 +479,14 @@ impl<'a> Algorithm<'a> {
samples.0.iter().sum::<f32>() / samples.0.len() as f32
}
fn minimum_hashrate_share(difficulty: u64, mini: bool) -> f32 {
fn minimum_hashrate_share(difficulty: u64, mini: bool, p2pool_external_hashrate: f32) -> f32 {
let pws = if mini {
BLOCK_PPLNS_WINDOW_MINI
} else {
BLOCK_PPLNS_WINDOW_MAIN
};
let mut minimum_hr = (difficulty / (pws * SECOND_PER_BLOCK_P2POOL)) as f32 * XVB_BUFFER;
let mut minimum_hr = ((difficulty / (pws * SECOND_PER_BLOCK_P2POOL)) as f32 * XVB_BUFFER)
- p2pool_external_hashrate;
info!("Algorithm | (difficulty / (window pplns blocks * seconds per p2pool block) * BUFFER) - outside HR = minimum HR to keep a share\n({difficulty} / ({pws} * {SECOND_PER_BLOCK_P2POOL}) * {XVB_BUFFER}) - {p2pool_external_hashrate} = {minimum_hr}");
if minimum_hr.is_sign_negative() {