> ## Documentation Index
> Fetch the complete documentation index at: https://docs.allium.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Validator Stake Daily

> Daily snapshots of validator stake and commission state on Monad

This table provides daily snapshots of validator stake and commission state on the Monad network, sourced from the staking precompile `getValidator()` call. Each record represents the latest validator state per day.

## Table Schema

| Column Name             | Data Type | Description                                                                                  |
| ----------------------- | --------- | -------------------------------------------------------------------------------------------- |
| date                    | DATE      | Calendar date of the snapshot, derived from block\_timestamp                                 |
| validator\_id           | VARCHAR   | Unique identifier assigned to the validator by the Monad network                             |
| auth\_address           | VARCHAR   | Authorization (operator) address with control over the validator stake                       |
| commission              | DECIMAL   | Validator commission rate at the execution layer, expressed as a fraction (e.g., 0.10 = 10%) |
| stake                   | DECIMAL   | Validator execution-layer stake (upcoming stake pool balance)                                |
| snapshot\_stake         | DECIMAL   | Snapshot stake value recorded for the validator at the time of the read                      |
| consensus\_stake        | DECIMAL   | Active stake used by the consensus layer for the current epoch                               |
| consensus\_commission   | DECIMAL   | Commission rate applied at the consensus layer for the current epoch                         |
| snapshot\_commission    | DECIMAL   | Snapshot commission rate recorded for the validator at the time of the read                  |
| acc\_reward\_per\_token | DECIMAL   | Accumulated reward per token for the validator, used for reward accounting                   |
| unclaimed\_rewards      | DECIMAL   | Total rewards accrued by the validator that have not yet been claimed                        |
| secp\_pubkey            | VARCHAR   | Secp256k1 public key used by the validator for consensus participation                       |
| bls\_pubkey             | VARCHAR   | BLS public key used by the validator for consensus participation                             |
| params                  | VARIANT   | Raw JSON payload returned from the `getValidator()` staking precompile call                  |
| block\_number           | INTEGER   | Block number at which the validator state was read                                           |
| block\_timestamp        | TIMESTAMP | Block timestamp at which the validator state was read                                        |
| block\_hash             | VARCHAR   | Block hash corresponding to the read operation                                               |

## Understanding Validator State

The daily snapshot captures multiple layers of validator state:

### Execution Layer State

* **stake**: Upcoming stake pool balance that will be active in future epochs
* **commission**: Commission rate that will apply to future rewards

### Consensus Layer State

* **consensus\_stake**: Active stake currently used for block production and validation
* **consensus\_commission**: Commission rate currently applied to rewards

### Snapshot State

* **snapshot\_stake**: Historical stake value at the time of the read
* **snapshot\_commission**: Historical commission rate at the time of the read

### Reward Accounting

* **acc\_reward\_per\_token**: Used for calculating delegator rewards
* **unclaimed\_rewards**: Total pending rewards for the validator

## Sample Query

Track validator stake growth over the last 30 days:

```sql theme={null}
SELECT
  validator_id,
  auth_address,
  date,
  stake,
  consensus_stake,
  commission * 100 as commission_pct,
  unclaimed_rewards,
  stake - LAG(stake) OVER (PARTITION BY validator_id ORDER BY date) as daily_stake_change
FROM monad.staking.validator_stake_daily
WHERE date >= CURRENT_DATE - INTERVAL '30 days'
ORDER BY date DESC, stake DESC;
```
