From b9947bd327ef44e0bcc921c76dcf851f04677e63 Mon Sep 17 00:00:00 2001 From: Tyera Date: Tue, 23 Jan 2024 21:54:06 -0700 Subject: [PATCH] Support json parsing of epoch-rewards partition data sysvar accounts (#34914) --- account-decoder/src/parse_sysvar.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/account-decoder/src/parse_sysvar.rs b/account-decoder/src/parse_sysvar.rs index 35746949c7..3fda8e8560 100644 --- a/account-decoder/src/parse_sysvar.rs +++ b/account-decoder/src/parse_sysvar.rs @@ -9,6 +9,7 @@ use { bv::BitVec, solana_sdk::{ clock::{Clock, Epoch, Slot, UnixTimestamp}, + epoch_rewards_partition_data::EpochRewardsPartitionDataVersion, epoch_schedule::EpochSchedule, pubkey::Pubkey, rent::Rent, @@ -96,7 +97,24 @@ pub fn parse_sysvar(data: &[u8], pubkey: &Pubkey) -> Result(data) + { + let EpochRewardsPartitionDataVersion::V0(partition_data) = + epoch_rewards_partition_data; + Some(SysvarAccountType::EpochRewardsPartitionData( + UiEpochRewardsPartitionData { + version: 0, + num_partitions: partition_data.num_partitions as u64, + parent_blockhash: partition_data.parent_blockhash.to_string(), + }, + )) + } else { + None + } } }; parsed_account.ok_or(ParseAccountError::AccountNotParsable( @@ -120,6 +138,7 @@ pub enum SysvarAccountType { StakeHistory(Vec), LastRestartSlot(UiLastRestartSlot), EpochRewards(EpochRewards), + EpochRewardsPartitionData(UiEpochRewardsPartitionData), } #[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Default)] @@ -239,6 +258,14 @@ pub struct UiLastRestartSlot { pub last_restart_slot: Slot, } +#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Default)] +#[serde(rename_all = "camelCase")] +pub struct UiEpochRewardsPartitionData { + pub version: u32, + pub num_partitions: u64, + pub parent_blockhash: String, +} + #[cfg(test)] mod test { #[allow(deprecated)]