Use parent blockhash to seed EpochRewardsHasher #34744
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Partitioned rewards code requires exposing the parent bank's hash to clients trying to find stake rewards, because that is the seed used for the partition hasher:
solana/runtime/src/bank.rs
Line 2360 in 166be29
The EpochRewardsHasher calls this the
parent_block_hash
solana/runtime/src/epoch_rewards_hasher.rs
Line 45 in 166be29
Either way, it will certainly be easier for clients if we use the blockhash, since this is already stored in block metadata (and can be easily looked up).
Summary of Changes
Update
Bank::calculate_rewards_for_partitioning()
to pass the parent blockhash toEpochRewardsHasher::calculate_rewards_for_partitioning()