diff --git a/ledger-tool/src/main.rs b/ledger-tool/src/main.rs index fb91b93054..93f6ed1115 100644 --- a/ledger-tool/src/main.rs +++ b/ledger-tool/src/main.rs @@ -2094,6 +2094,7 @@ fn main() { activation_epoch: Epoch, deactivation_epoch: Option, point_value: Option, + credits_observed: Option, } use solana_stake_program::stake_state::InflationPointCalculationEvent; let mut stake_calcuration_details: HashMap = @@ -2145,6 +2146,11 @@ fn main() { InflationPointCalculationEvent::RentExemptReserve(reserve) => { detail.rent_exempt_reserve = *reserve; } + InflationPointCalculationEvent::CreditsObserved( + credits_observed, + ) => { + detail.credits_observed = Some(*credits_observed); + } InflationPointCalculationEvent::Delegation( delegation, owner, @@ -2285,6 +2291,7 @@ fn main() { deactivation_epoch: String, earned_epochs: String, earned_credits: String, + credits_observed: String, base_rewards: String, stake_rewards: String, vote_rewards: String, @@ -2328,6 +2335,9 @@ fn main() { ), earned_epochs: format_or_na(detail.map(|d| d.epochs)), earned_credits: format_or_na(detail.map(|d| d.credits)), + credits_observed: format_or_na( + detail.and_then(|d| d.credits_observed), + ), base_rewards: format_or_na(detail.map(|d| d.base_rewards)), stake_rewards: format_or_na( detail.map(|d| d.stake_rewards), diff --git a/programs/stake/src/stake_state.rs b/programs/stake/src/stake_state.rs index 9f8a42f7ee..4bd62cacc9 100644 --- a/programs/stake/src/stake_state.rs +++ b/programs/stake/src/stake_state.rs @@ -37,6 +37,7 @@ pub enum InflationPointCalculationEvent { RentExemptReserve(u64), Delegation(Delegation, Pubkey), Commission(u8), + CreditsObserved(u64), } fn null_tracer() -> Option { @@ -479,6 +480,11 @@ impl Stake { ) .map(|(stakers_reward, voters_reward, credits_observed)| { self.credits_observed = credits_observed; + if let Some(inflation_point_calc_tracer) = inflation_point_calc_tracer { + inflation_point_calc_tracer(&InflationPointCalculationEvent::CreditsObserved( + credits_observed, + )); + } self.delegation.stake += stakers_reward; (stakers_reward, voters_reward) })