beacon.validator.income
table provides a daily snapshot of the consensus & execution layer income (MEV rewards) of active validators. There is one unique income record per active validator per day. There will be an entry until the validator is fully withdrawn.
Consensus Layer Income
Validators on Beacon Chain earn consensus layer income from the following sources:- rewards (attestation, block proposing, sync committee rewards)
- penalties (attester slashing, proposer slashing)
beacon.raw.total_rewards
) which is ~ 230 billion records for every single active validator. The daily consensus layer income received by each validator is calculated by summing the total attestation rewards (from beacon.raw.total_rewards), sync committee rewards (from beacon.raw.sync_committee_rewards) and slot proposing rewards (from beacon.raw.block_rewards). Slashing penalties are not included in the consensus layer income. The income can be negative if the validator received penalties.
For granular consensus income data, please query beacon.validator.consensus_income
model - this table provides slot-level consensus income from attestations, block proposing and sync committee reward paritcipation.
Execution Layer Income
Execution Layer Income of the validator is dependent on whether there is proposer-builder separation (PBS).- PBS Blocks: These are blocks where the builder sends an MEV payout to the Proposer Fee Recipient (block proposer), which typically happens in the last transaction of a block.
- Non-PBS Blocks: For blocks that do not have build -> proposer MEV payout, the execution layer income will be the total builder priority fee reward from transactions + the total direct ETH transferred to block builders.
Assumptions
- the proposer fee recipient (MEV Reward) on the Execution Layer is the same entity as the Validator that is proposing the block on the Consensus Layer.

Execution Income Pre-MergeBefore the Ethereum merge, there was no execution (L1) income for validators because validators on the Beacon Chain did not propose blocks. Block proposals and transaction execution were managed by miners on the Ethereum mainnet (proof-of-work chain).Post-merge, Ethereum switched to proof-of-stake, where Beacon Chain validators propose blocks built by block builders on the execution chain. Execution income, including MEV rewards, is mapped from these blocks to validators.
Sample Query
Finding daily income of active validators by ETH1withdrawal_address
specified in withdrawal credentials.

Table Columns
Unique Key:slot_timestamp
(daily) + validator_index
Column Name | Description | Example |
---|---|---|
slot_number | Slot number of the balance snapshot. | 6,411,598 |
slot_timestamp | Slot timestamp of balance snapshot. | 2023-05-10 23:59:59 |
validator_index | Unique index of the validator. | 459,015 |
total_income | Total income = consensus + execution income | 0.002814952 |
consensus_income | Consensus layer (Beaon Chain) income. | 0.002814952 |
execution_income | Execution layer income, if validator proposed block and block miner sent MEV rewards in the block proposed. | 0 |
execution_income_pbs | PBS blocks income - MEV payout transfer from block builder to proposer fee recipient. | 0 |
execution_income_non_pbs | Non-PBS blocks income - assuming that there is no MEV payout in that transaction. | 0 |
income_7d | 7 day validator income to the current slot_timestamp. | 0.019833533 |
income_30d | 30 day validator income to the current slot_timestamp. | 0.084810516 |
income_90d | 90 day validator income to the current slot_timestamp. | 1.94E-01 |
apr_7d | Estimated APR based on income in the last 7 days. Where APR_7D = income_7d/sum_effective_balance_7d/365.25*100 | 3.234016932 |
apr_30d | Estimated APR based on income in the last 30 days. | 3.226775101 |
apr_90d | Estimated APR based on income in the last 90 days. | 4.439010365 |
current_balance | Balance of the validator at current date timestamp. | 32.00094938 |
previous_balance | Balance of the validator at the previous date timestamp. | 32.01058424 |
withdrawal_amount | Total ETH withdrawn for the validator at the current date. This will be 0 if no withdrawals are made for the day. | 0.012449812 |
deposit_amount | Total ETH deposit for the current validator at the current date. This will be 0 if no deposits were made for the day. | 0 |
status | Current status of the validator. Note that only active validators are included. | active_ongoing |
is_slashed | Was validator slashed (not longer active). | FALSE |
pubkey | The validator’s BLS public key, uniquely identifying them. 48-bytes, hex encoded with 0x prefix, case insensitive. | 0x9373298f965025e074c6be92d38e5e3d6049dcad80546f81ea1859e694f3f147d85918a4e87341a294cedf9c29165c90 |
withdrawal_prefix | The first byte of this credential is known as the withdrawal prefix. This value is currently either 0x00 or 0x01. | 0x01 |
withdrawal_address | ETH1 Withdrawal address specified in withdrawal credentials, applicable for validators with 0x01 withdrawal credentials only. | 0x94e69f03d5d02acbab4b22747a064103fb6b6be0 |
current_effective_balance | Effective staked balance of the validator at current date. | 32 |
previous_effective_balance | Effective staked balance of the validator at previous date. | 32 |
unique_id | Unique ID of the income entry | date-2023-05-10_validator_index-459015 |
slot_change | Slot change from the previous date to the current date. | 7,200 |