Skip to content

Commit

Permalink
Define epoch-rewards partition data program id (solana-labs#34862)
Browse files Browse the repository at this point in the history
* Create new program id for epoch-rewards partition data PDAs

* Remove misleading repr attribute

* Remove storage of HasherKind

* Split up seeds
  • Loading branch information
Tyera authored Jan 23, 2024
1 parent 9122193 commit 8aa726b
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
3 changes: 1 addition & 2 deletions runtime/src/bank.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ use {
},
epoch_info::EpochInfo,
epoch_rewards_partition_data::{
get_epoch_rewards_partition_data_address, EpochRewardsPartitionDataVersion, HasherKind,
get_epoch_rewards_partition_data_address, EpochRewardsPartitionDataVersion,
PartitionData,
},
epoch_schedule::EpochSchedule,
Expand Down Expand Up @@ -3603,7 +3603,6 @@ impl Bank {
let epoch_rewards_partition_data = EpochRewardsPartitionDataVersion::V0(PartitionData {
num_partitions,
parent_blockhash,
hasher_kind: HasherKind::Sip13,
});
let address = get_epoch_rewards_partition_data_address(self.epoch());

Expand Down
15 changes: 10 additions & 5 deletions sdk/program/src/epoch_rewards_partition_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,14 @@ pub enum EpochRewardsPartitionDataVersion {
V0(PartitionData),
}

#[repr(u8)]
impl EpochRewardsPartitionDataVersion {
pub fn get_hasher_kind(&self) -> HasherKind {
match self {
EpochRewardsPartitionDataVersion::V0(_) => HasherKind::Sip13,
}
}
}

#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub enum HasherKind {
Sip13,
Expand All @@ -21,14 +28,12 @@ pub struct PartitionData {
pub num_partitions: usize,
/// Blockhash of the last block of the previous epoch, used to create EpochRewardsHasher
pub parent_blockhash: Hash,
/// Kind of hasher used to generate partitions
pub hasher_kind: HasherKind,
}

pub fn get_epoch_rewards_partition_data_address(epoch: u64) -> Pubkey {
let (address, _bump_seed) = Pubkey::find_program_address(
&[b"EpochRewardsPartitionData", &epoch.to_le_bytes()],
&crate::stake::program::id(),
&[b"EpochRewards", b"PartitionData", &epoch.to_le_bytes()],
&crate::sysvar::id(),
);
address
}

0 comments on commit 8aa726b

Please sign in to comment.