From 075a9a73b026c93916bbad6b2b544df6fdcf93c1 Mon Sep 17 00:00:00 2001 From: mubariz Date: Tue, 17 Feb 2026 14:41:06 +0500 Subject: [PATCH 1/2] refactor refactor_epoch_inflation_rewards --- agave | 2 +- src/flamenco/rewards/fd_rewards.c | 30 ++++++++++++++---------------- src/flamenco/rewards/fd_rewards.h | 8 ++++---- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/agave b/agave index 7fe1b415d86..50d0436550f 160000 --- a/agave +++ b/agave @@ -1 +1 @@ -Subproject commit 7fe1b415d8642a3621a725a382575f9685c4696c +Subproject commit 50d0436550f7d3689102dfc07b42a6e5be235130 diff --git a/src/flamenco/rewards/fd_rewards.c b/src/flamenco/rewards/fd_rewards.c index b38f1a4b002..fd827be1c2f 100644 --- a/src/flamenco/rewards/fd_rewards.c +++ b/src/flamenco/rewards/fd_rewards.c @@ -418,19 +418,18 @@ epoch_duration_in_years( fd_bank_t const * bank, return (double)slots_in_epoch / (double)fd_bank_slots_per_year_get( bank ); } -/* https://github.com/anza-xyz/agave/blob/7117ed9653ce19e8b2dea108eff1f3eb6a3378a7/runtime/src/bank.rs#L2128 */ +/* https://github.com/anza-xyz/agave/blob/3eb0a7b7bcf5a5f2346b9a39b92c6896fe8fe668/runtime/src/bank.rs#L2400 */ static void -calculate_previous_epoch_inflation_rewards( fd_bank_t const * bank, - ulong prev_epoch_capitalization, - ulong prev_epoch, - fd_prev_epoch_inflation_rewards_t * rewards ) { +calculate_epoch_inflation_rewards( fd_bank_t const * bank, + ulong capitalization, + ulong epoch, + fd_epoch_inflation_rewards_t * rewards ) { double slot_in_year = slot_in_year_for_inflation( bank ); - + double epoch_duration_in_years_ = epoch_duration_in_years( bank, epoch ); rewards->validator_rate = validator( fd_bank_inflation_query( bank ), slot_in_year ); rewards->foundation_rate = foundation( fd_bank_inflation_query( bank ), slot_in_year ); - rewards->prev_epoch_duration_in_years = epoch_duration_in_years( bank, prev_epoch ); - rewards->validator_rewards = (ulong)(rewards->validator_rate * (double)prev_epoch_capitalization * rewards->prev_epoch_duration_in_years); - FD_LOG_DEBUG(( "Rewards %lu, Rate %.16f, Duration %.18f Capitalization %lu Slot in year %.16f", rewards->validator_rewards, rewards->validator_rate, rewards->prev_epoch_duration_in_years, prev_epoch_capitalization, slot_in_year )); + rewards->validator_rewards_lamports = (ulong)(rewards->validator_rate * (double)capitalization * epoch_duration_in_years_); + FD_LOG_DEBUG(( "Rewards %lu, Rate %.16f, Duration %.18f Capitalization %lu Slot in year %.16f", rewards->validator_rewards_lamports, rewards->validator_rate, epoch_duration_in_years_, capitalization, slot_in_year )); } /* https://github.com/anza-xyz/agave/blob/cbc8320d35358da14d79ebcada4dfb6756ffac79/programs/stake/src/lib.rs#L29 */ @@ -706,14 +705,14 @@ calculate_rewards_for_partitioning( fd_bank_t * bank, fd_capture_ctx_t * capture_ctx, ulong prev_epoch, fd_partitioned_rewards_calculation_t * result ) { - fd_prev_epoch_inflation_rewards_t rewards; + fd_epoch_inflation_rewards_t rewards; - calculate_previous_epoch_inflation_rewards( bank, - fd_bank_capitalization_get( bank ), - prev_epoch, - &rewards ); + calculate_epoch_inflation_rewards( bank, + fd_bank_capitalization_get( bank ), + prev_epoch, + &rewards ); - ulong total_rewards = rewards.validator_rewards; + ulong total_rewards = rewards.validator_rewards_lamports; uint128 points = calculate_validator_rewards( bank, accdb, @@ -731,7 +730,6 @@ calculate_rewards_for_partitioning( fd_bank_t * bank, result->validator_rewards = total_rewards; result->validator_rate = rewards.validator_rate; result->foundation_rate = rewards.foundation_rate; - result->prev_epoch_duration_in_years = rewards.prev_epoch_duration_in_years; result->capitalization = fd_bank_capitalization_get( bank ); } diff --git a/src/flamenco/rewards/fd_rewards.h b/src/flamenco/rewards/fd_rewards.h index 30b18d449b4..46219e2f764 100644 --- a/src/flamenco/rewards/fd_rewards.h +++ b/src/flamenco/rewards/fd_rewards.h @@ -5,13 +5,13 @@ #include "../stakes/fd_stake_delegations.h" -struct fd_prev_epoch_inflation_rewards { - ulong validator_rewards; - double prev_epoch_duration_in_years; +// https://github.com/anza-xyz/agave/blob/3eb0a7b7bcf5a5f2346b9a39b92c6896fe8fe668/runtime/src/bank.rs#L972 +struct fd_epoch_inflation_rewards { + ulong validator_rewards_lamports; double validator_rate; double foundation_rate; }; -typedef struct fd_prev_epoch_inflation_rewards fd_prev_epoch_inflation_rewards_t; +typedef struct fd_epoch_inflation_rewards fd_epoch_inflation_rewards_t; struct fd_partitioned_rewards_calculation { uint128 validator_points; From 20c68222d3b3f40e888b69585a2c40744b304244 Mon Sep 17 00:00:00 2001 From: mubariz Date: Tue, 17 Feb 2026 15:00:45 +0500 Subject: [PATCH 2/2] remove unused field prev_epoch_duration_in_years --- src/flamenco/rewards/fd_rewards.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/flamenco/rewards/fd_rewards.h b/src/flamenco/rewards/fd_rewards.h index 46219e2f764..170baed4f50 100644 --- a/src/flamenco/rewards/fd_rewards.h +++ b/src/flamenco/rewards/fd_rewards.h @@ -19,7 +19,6 @@ struct fd_partitioned_rewards_calculation { ulong validator_rewards; double validator_rate; double foundation_rate; - double prev_epoch_duration_in_years; ulong capitalization; }; typedef struct fd_partitioned_rewards_calculation fd_partitioned_rewards_calculation_t;