Expand description
Epoch rewards for current epoch
The epoch rewards sysvar provides access to the EpochRewards
type,
which tracks the progress of epoch rewards distribution. It includes the
- total rewards for the current epoch, in lamports
- rewards for the current epoch distributed so far, in lamports
- distribution completed block height, i.e. distribution of all staking rewards for the current epoch will be completed at this block height
EpochRewards
implements Sysvar::get
and can be loaded efficiently without
passing the sysvar account ID to the program.
See also the Solana documentation on the epoch rewards sysvar.
§Examples
Accessing via on-chain program directly:
fn process_instruction(
program_id: &Pubkey,
accounts: &[AccountInfo],
instruction_data: &[u8],
) -> ProgramResult {
let epoch_rewards = EpochRewards::get()?;
msg!("epoch_rewards: {:#?}", epoch_rewards);
Ok(())
}
Accessing via on-chain program’s account parameters:
fn process_instruction(
program_id: &Pubkey,
accounts: &[AccountInfo],
instruction_data: &[u8],
) -> ProgramResult {
let account_info_iter = &mut accounts.iter();
let epoch_rewards_account_info = next_account_info(account_info_iter)?;
assert!(epoch_rewards::check_id(epoch_rewards_account_info.key));
let epoch_rewards = EpochRewards::from_account_info(epoch_rewards_account_info)?;
msg!("epoch_rewards: {:#?}", epoch_rewards);
Ok(())
}
Accessing via the RPC client:
fn print_sysvar_epoch_rewards(client: &RpcClient) -> Result<()> {
let epoch_rewards = client.get_account(&epoch_rewards::ID)?;
let data: EpochRewards = bincode::deserialize(&epoch_rewards.data)?;
Ok(())
}
Structs§
Constants§
- The const program ID.
Functions§
- Returns
true
if given pubkey is the program ID. - Returns the program ID.