Table Details
| Property | Value |
|---|---|
| Table Name | monad.staking.validator_rewards |
| Table Status | Production-Ready |
| Unique Key | block_timestamp::date, unique_id |
| Clustering Key(s) | block_timestamp::date |
Table Columns
| Column Name | Data Type | Description |
|---|---|---|
| validator_id | VARCHAR(16777216) | Unique identifier of the validator receiving the reward |
| auth_address | VARCHAR(16777216) | Authorized address associated with the validator that received this reward. |
| amount_str | VARCHAR(16777216) | String representation of the reward amount in MON |
| amount | FLOAT | Float representation of the reward amount in MON |
| epoch | NUMBER(38,0) | The epoch number for this reward |
| from_address | VARCHAR(16777216) | Source address of the reward (typically system address) |
| contract_address | VARCHAR(42) | Address of the staking precompile contract |
| transaction_hash | VARCHAR(66) | Hash of the transaction containing the reward distribution |
| transaction_index | NUMBER(38,0) | Index of the transaction in the block |
| transaction_from_address | VARCHAR(42) | Address that initiated the transaction |
| transaction_to_address | VARCHAR(42) | Target address of the transaction |
| log_index | NUMBER(38,0) | Index of the event log in the transaction |
| block_timestamp | TIMESTAMP_NTZ(9) | Timestamp of the block containing the reward distribution |
| block_number | NUMBER(38,0) | Block number containing the reward distribution |
| block_hash | VARCHAR(66) | Hash of the block containing the reward distribution |
| unique_id | VARCHAR(16777216) | Unique identifier for the reward event |
| _created_at | TIMESTAMP_NTZ(9) | Timestamp of when the entry was created in the database. |
| _updated_at | TIMESTAMP_NTZ(9) | Timestamp of when the entry was last updated in the database. |
| _changed_since_full_refresh | BOOLEAN | Indicates if the record has changed since the last full data refresh. |
Sample Query
Calculate total rewards per validator across all epochs:SELECT
validator_id,
COUNT(DISTINCT epoch) as epochs_active,
SUM(amount) as total_rewards,
AVG(amount) as avg_reward_per_epoch
FROM monad.staking.validator_rewards
GROUP BY validator_id
ORDER BY total_rewards DESC;