Beacon Chain Attestation Rewards

The majority of a validator’s rewards come from making attestations. While assigning committees and slots is randomized, each active validator is guaranteed to make one attestation per epoch.

Validators earn rewards for attestations only when included in Beacon Chain blocks. Each attestation consists of three votes, with rewards based on the following criteria:

  • Inclusion of the attestation with the correct source checkpoint within 5 slots

  • Inclusion of the attestation with the correct target checkpoint within 32 slots

  • Inclusion of the attestation with the correct head block within 1 slot

https://besu.hyperledger.org/23.7.3/public-networks/concepts/proof-of-stake/attestations

More on Beacon Chain Attestation rewards

https://eth2book.info/capella/part2/incentives/rewards/

More on Beacon Chain Attestation rewards

Attestation rewards for Beacon chain are split up into two separate tables. Both tables are retrieved from /eth/v1/beacon/rewards/attestations/{epoch} RPC Method.

Table NameDescription
beacon.raw.attestation_rewards_dailyTable that aggregates the total reward metrics for individual validators by day.
beacon.raw.total_rewardsTable containing total reward metrics for individual validators in the specified epoch.

This table returns the total number of active, ongoing validators in each Epoch.

Note: this table size is large. Expect that query performance to be slow. It increases by about 225 epoch * # active validators ~ 250m+ rows in size daily.
beacon.raw.ideal_rewardsTable containing ideal reward metrics for attestations in the specified epoch.

Currently, there (as of Epoch 289619), there are always 32 rows for each epoch, each for effective balance (1 to 32 ETH) of ETH staked.

Attestation Rewards Daily

Attestation reward rewards collected by validator aggregated by day from beacon.raw.total_rewards. Note that attestation does not include sync committee rewards.

For each validator, there is only entry daily.

Column NameDescriptionExample
DateDate288389
validator IndexValidator Index 1296908
min_epochThe lowest Epoch number that the validator started attesting287663
max_epochThe largest Epoch number that the validator started attesting287887
epoch_countNumber of unique epochs that the validator participated in for attestation within the day.225
headThe sum reward for attesting to the head block for the specified validator534132
targetThe sum reward for attesting to the target block for the specified validator1034226
sourceThe sum reward for attesting to the source block for the specified validator552116
inclusion_delay(Optional) The sum reward for including the attestation in a block with a specific delay for the specified validator0
inactivity(Optional) The inactivity penalty for the total reward calculation for the specified validator0
total_rewardsThe sum of rewards across head, target, source, inclusion_delay and inactivity. 2120474

Total Rewards

Query Sample

Finding the total rewards for specific Epoch

select 

    epoch, 

    count(distinct validator_index) as validators, 

    sum(head) as sum_head,

    sum(target) as sum_target,

    sum(source) as sum_source,

    sum(inactivity) as sum_inactvity,

    sum_head + sum_target + sum_source + sum_inactvity as epoch_attestation_reward

from beacon.raw.total_rewards

where epoch = 289610

group by all 

Total Reward Columns

beacon.raw.total_rewards contains the reward metrics for individual validators in the specified epoch.

Column NameDescriptionExample
epochEpoch number288389
epoch_timestampEpoch Timestamp2024-06-05 05:29:59
execution_optimisticA boolean indicating whether the execution of rewards for the specified epoch is done optimistically or notFALSE
validator IndexValidator Index 1296908
headThe reward for attesting to the head block for the specified validator2442
targetThe reward for attesting to the target block for the specified validator4604
sourceThe reward for attesting to the source block for the specified validator2477
inclusion_delay(Optional) The reward for including the attestation in a block with a specific delay for the specified validator
inactivity(Optional) The inactivity penalty for the total reward calculation for the specified validator0

Ideal Reward Columns

Table containing ideal reward metrics for attestations in the specified epoch.

Column NameDescriptionExample
epochEpoch number5
epoch_timestampEpoch Timestamp2020-12-01 12:01:23
execution_optimisticA boolean indicating whether the execution of rewards for the specified epoch is done optimistically or notFALSE
effective_balanceThe effective balance for the ideal reward calculation18,000,000,000.00
headThe reward for attesting to the head block9287
targetThe reward for attesting to the target block9621
sourceThe reward for attesting to the source block9622
inclusion_delay(Optional) The reward for including the attestation in a block with a specific delay9707
inactivity(Optional) The inactivity penalty for the ideal reward calculation0