* Check feature_set for enable_partitioned_epoch_reward
* Keep common variable outside if case
* Keep common early return out of if case, since the first_slot_in_epoch must exist for partiion PDA to exist
* Get and parse epoch partition data PDA
* Find partition index for all addresses
* Pull relevant blocks and get rewards
* Reuse ordering and reformatting
* Remove feature deactivation from TestValidator
* Restore rewards iteration in first block in epoch for feature case to catch Voting rewards
* Add fn get_reward_map helper to dedupe code
* No need to start 2nd get_block_with_limit call with first block again
* Replace filter_map to parameterize RewardType filter expression
* Weird thing to make clippy and compiler agree (https://github.com/rust-lang/rust-clippy/issues/8098)
* Use activated_slot to ensure the right approach for past rewards epochs
* Improve help text
* Add max_accounts cli arg and halt loop accordingly
* Log totals before max_account exit
* Add test of early end on max_accounts
* Add logging when account-creation loop breaks
#### Problem
The implementation of write_accounts() for HotAccountStorage is missing.
It consists of the writing of account blocks, index block, and owners block.
#### Summary of Changes
This PR completes part of the HotStorageWriter::write_accounts().
Specifically, it finishes the writing of account blocks and index block.
#### Test Plan
A new unit-test is added to verify the correctness of the work-in-progress
HotStorageWriter::write_accounts().
* implement a custom parser for `VoteState` which is usuable in a bpf context
* derive or impl `Arbitrary` for `VoteStateVersions` and its component types, for test builds only
* Move EpochRewardsHasher to solana-sdk
* Cargo.lock
* Apparently we're allowing arithmetic_side_effects in all of runtime
* Move allow stmt to block instead of module
* Also allow in test mod
* add `_from_source` function variants for signer, keypair, and pubkey
* make `parse_signer_source` an associated function of `SignerSource`
* refactor `SignerSource` into `input_parsers::signer`
* make `_from_source` functions public
* remove unnecessary import
* Refactor bank load_and_execute_transactions
* Remove redundant clippy annotation
* Report check time where it is done in load_and_execute_transactions
* add `try_split_u64`
* add `try_combine_lo_hi_u64`
* add `try` variants of ciphertext arithmetic functions
* use try functions in proof generaiton and verification logic
* deprecate non-`try` functions
* use try functions in proof generaiton and verification logic
* Apply suggestions from code review
Co-authored-by: Jon C <me@jonc.dev>
* cargo fmt
---------
Co-authored-by: Jon C <me@jonc.dev>
* Introduce primitive threading in unified scheduler
* Make the internal struct ExecutedTask not pub
* Improve wording a bit
* Explain scheduler main loop's overhead sensitivity
* Improve wording a bit
* Define ChainedChannel{Sender, Receiver} wrappers
* Clean up a bit
* Use derivative to avoid manual Clone impl
* Clarify comment
* Remove extra whitespace in comment
* Remove unneeded dyn trait for ChainedChannel
* Remove the accumulator thread for now
* Fix typo
* Use unimplemented!() to convey intention better
#### Problem
To write the owners-block, it requires an in-memory struct that maintains
a set of unique owner addresses while providing a look-up function to
obtain the OwnerOffset with the specified owner address.
#### Summary of Changes
This PR adds OwnersTable, the in-memory struct that maintains
a set of unique owner addresses while providing a look-up function to
obtain the OwnerOffset with the specified owner address.
#### Test Plan
A new unit-test is added.
* remove println from a test
* sync fee_structure with fee_rate_governor;
remove congestion_multiplier from calculacte_fee(), leave parameters unused for now.