From 651280c625f1636e6eb61ede2cd4f53d33ad6a3a Mon Sep 17 00:00:00 2001 From: drcpu Date: Tue, 2 Jul 2024 17:16:26 +0000 Subject: [PATCH] feat(staking): discard nanoWits for average epoch computation when adding stake --- data_structures/src/staking/stake.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/data_structures/src/staking/stake.rs b/data_structures/src/staking/stake.rs index 321259b64..4652f977f 100644 --- a/data_structures/src/staking/stake.rs +++ b/data_structures/src/staking/stake.rs @@ -81,12 +81,14 @@ where for capability in ALL_CAPABILITIES { let epoch_before = self.epochs.get(capability); - let product_before = coins_before * epoch_before; - let product_added = coins * epoch; + let product_before = coins_before.lose_precision(WIT_DECIMAL_PLACES) * epoch_before; + let product_added = coins.lose_precision(WIT_DECIMAL_PLACES) * epoch; #[allow(clippy::cast_possible_truncation)] let epoch_after = Epoch::from( - (u64::from(product_before + product_added) / u64::from(coins_after)) as u32, + (u64::from(product_before + product_added) + / u64::from(coins_after.lose_precision(WIT_DECIMAL_PLACES))) + as u32, ); self.epochs.update(capability, epoch_after); }