# Solana validator performance and behavior

**Search Solana validators by performance, then inspect the epoch history behind each result.** Validator profiles provide period-specific reliability and commission metrics, with recent Clef behavior badges. Linked epoch records support charts and detailed comparisons. ## Coverage - Solana vote accounts from Marinade Finance public epoch snapshots, enriched with available Stake Auction Marketpla…

Solana validator performance and behavior is an open, machine-readable dataset published on Mostly Right as immutable Parquet versions, with a documented column schema, a JSON query API and a direct download. It is free to read and open to AI agents.

## Facts

- Slug: `solana-validator-performance-and-behavior`
- Canonical page: https://mostlyright.md/datasets/solana-validator-performance-and-behavior
- Publisher: mostlyrightmd (https://mostlyright.md/publishers/mostlyrightmd)
- Published: 2026-10-11T18:35:09.042Z
- Tables: 2
- Formats: Apache Parquet (download), JSON (query and sample)
- Cost: free to read; querying and downloading need a free account
- Metadata API: `GET https://mostlyright.md/api/v2/public/datasets/solana-validator-performance-and-behavior`
- Topics: solana, validators, staking, blockchain, performance

## How to use it

1. Read a table's schema — no account needed.
2. Fetch its published sample rows — no account needed.
3. Sign in at https://mostlyright.md/login, connect this dataset to a workspace on its page, and create an `mr_use_` key.
4. Query bounded JSON, or download the complete Parquet snapshot and read it locally.

Agents can do all of this over MCP at `https://mostlyright.md/api/mcp` — searching, reading schemas and sampling rows work with no credential at all.

## Table: validator_history

- Table id: `5223bbc9-d6e1-48c7-910d-1fde3bc6b471`
- Slug: `validator-history`
- Immutable version: `ad5634f2-34b7-57c1-b8ac-a27580ecf8b2`
- Schema: `GET https://mostlyright.md/api/v2/public/tables/5223bbc9-d6e1-48c7-910d-1fde3bc6b471/schema`
- Sample rows, no key: `GET https://mostlyright.md/api/v2/public/tables/5223bbc9-d6e1-48c7-910d-1fde3bc6b471/preview`
- Bounded JSON query: `POST https://mostlyright.md/api/v2/public/tables/5223bbc9-d6e1-48c7-910d-1fde3bc6b471/query` with `x-api-key: mr_use_…`
- Full Parquet snapshot: `GET https://mostlyright.md/api/v2/public/tables/5223bbc9-d6e1-48c7-910d-1fde3bc6b471/current` with `x-api-key: mr_use_…` (application/vnd.apache.parquet)

### Columns (22)

| Column | Type | Description |
| --- | --- | --- |
| `vote_account` | string | Solana vote-account key. |
| `epoch` | integer | Completed epoch number. |
| `validator_name` | string | Name in latest selected SAM snapshot for this epoch. |
| `epoch_start` | timestamp_utc | UTC epoch start from SAM epoch metadata; null if unavailable. |
| `epoch_end` | timestamp_utc | UTC completed epoch end from SAM metadata; null if unavailable. |
| `raw_stake_sol` | number | Raw archive epoch-end stake in SOL. |
| `sam_stake_sol` | number | SAM reported activated stake in SOL. |
| `stake_sol` | number | Raw archive stake in SOL, falling back to SAM when raw is absent. |
| `credits` | integer | Raw voting credits; protocol changes affect cross-period comparability. |
| `commission_pct` | number | Raw epoch-end inflation commission percentage. |
| `sam_max_commission_pct` | number | SAM maximum observed commission percentage for this epoch. |
| `mev_commission_bps` | integer | Raw MEV commission in basis points. |
| `reported_uptime` | number | SAM reported uptime fraction. |
| `assigned_slots` | integer | SAM assigned leader slots. |
| `produced_blocks` | integer | SAM produced blocks. |
| `skipped_slots` | integer | Assigned minus produced when counts are comparable and valid. |
| `skip_rate` | number | Skipped divided by assigned slots; null for zero assignments or missing counts. |
| `estimated_apy` | number | SAM annualized APY fraction, not realized return. |
| `raw_source_url` | string | Raw archived source URL. |
| `sam_source_url` | string | Latest selected SAM archive source URL. |
| `has_raw_observation` | boolean | Raw observation exists for this key. |
| `has_sam_observation` | boolean | SAM observation exists for this key. |

## Table: validator_profiles

- Table id: `77bfdfef-648d-4a61-87ec-a5fff4f2fa21`
- Slug: `validator-profiles`
- Immutable version: `9b78d192-a945-5eb6-808e-fa43e331cffc`
- Schema: `GET https://mostlyright.md/api/v2/public/tables/77bfdfef-648d-4a61-87ec-a5fff4f2fa21/schema`
- Sample rows, no key: `GET https://mostlyright.md/api/v2/public/tables/77bfdfef-648d-4a61-87ec-a5fff4f2fa21/preview`
- Bounded JSON query: `POST https://mostlyright.md/api/v2/public/tables/77bfdfef-648d-4a61-87ec-a5fff4f2fa21/query` with `x-api-key: mr_use_…`
- Full Parquet snapshot: `GET https://mostlyright.md/api/v2/public/tables/77bfdfef-648d-4a61-87ec-a5fff4f2fa21/current` with `x-api-key: mr_use_…` (application/vnd.apache.parquet)

### Columns (108)

| Column | Type | Description |
| --- | --- | --- |
| `vote_account` | string | Solana vote-account identity. |
| `validator_name` | string | Latest non-null name in observed SAM history. |
| `first_epoch` | integer | First retained completed epoch. |
| `latest_epoch` | integer | Latest retained completed epoch for this validator. |
| `history_epochs` | integer | Number of linked validator-history rows. |
| `sam_history_epochs` | integer | Epoch rows with SAM measurements. |
| `latest_stake_sol` | number | Stake in SOL at latest observed epoch. |
| `latest_commission_pct` | number | Raw commission percentage at latest observed epoch. |
| `observed_through` | timestamp_utc | Latest known epoch-end UTC timestamp. |
| `source_url` | string | Latest observed source link. |
| `year_2024_observed_epochs` | integer | year_2024: Distinct observed completed epochs for this validator. |
| `year_2024_available_epochs` | integer | year_2024: Distinct completed epochs available anywhere in the source population for this period; not proof of full calendar coverage. |
| `year_2024_epoch_coverage` | number | year_2024: Observed epochs divided by source-available epochs for the requested period. |
| `year_2024_measured_uptime_epochs` | integer | year_2024: Epochs having publisher uptime fractions. |
| `year_2024_time_weighted_uptime` | number | year_2024: Duration-weighted publisher uptime fraction; an estimate, not independent wall-clock monitoring. |
| `year_2024_min_epoch_uptime` | number | year_2024: Lowest reported epoch uptime fraction. |
| `year_2024_assigned_slots` | integer | year_2024: Sum of assigned leader slots for epochs with both assigned and produced counts. |
| `year_2024_weighted_skip_rate` | number | year_2024: Sum of assigned minus produced blocks divided by sum assigned slots over comparable observations. |
| `year_2024_max_commission_pct` | number | year_2024: Maximum reported epoch inflation commission percentage. |
| `year_2024_observed_start` | timestamp_utc | year_2024: First included epoch start; compare to period_start to detect partial history. |
| `year_2024_observed_end` | timestamp_utc | year_2024: Last included completed epoch end. |
| `year_2025_observed_epochs` | integer | year_2025: Distinct observed completed epochs for this validator. |
| `year_2025_available_epochs` | integer | year_2025: Distinct completed epochs available anywhere in the source population for this period; not proof of full calendar coverage. |
| `year_2025_epoch_coverage` | number | year_2025: Observed epochs divided by source-available epochs for the requested period. |
| `year_2025_measured_uptime_epochs` | integer | year_2025: Epochs having publisher uptime fractions. |
| `year_2025_time_weighted_uptime` | number | year_2025: Duration-weighted publisher uptime fraction; an estimate, not independent wall-clock monitoring. |
| `year_2025_min_epoch_uptime` | number | year_2025: Lowest reported epoch uptime fraction. |
| `year_2025_assigned_slots` | integer | year_2025: Sum of assigned leader slots for epochs with both assigned and produced counts. |
| `year_2025_weighted_skip_rate` | number | year_2025: Sum of assigned minus produced blocks divided by sum assigned slots over comparable observations. |
| `year_2025_max_commission_pct` | number | year_2025: Maximum reported epoch inflation commission percentage. |
| `year_2025_observed_start` | timestamp_utc | year_2025: First included epoch start; compare to period_start to detect partial history. |
| `year_2025_observed_end` | timestamp_utc | year_2025: Last included completed epoch end. |
| `year_2026_observed_epochs` | integer | year_2026: Distinct observed completed epochs for this validator. |
| `year_2026_available_epochs` | integer | year_2026: Distinct completed epochs available anywhere in the source population for this period; not proof of full calendar coverage. |
| `year_2026_epoch_coverage` | number | year_2026: Observed epochs divided by source-available epochs for the requested period. |
| `year_2026_measured_uptime_epochs` | integer | year_2026: Epochs having publisher uptime fractions. |
| `year_2026_time_weighted_uptime` | number | year_2026: Duration-weighted publisher uptime fraction; an estimate, not independent wall-clock monitoring. |
| `year_2026_min_epoch_uptime` | number | year_2026: Lowest reported epoch uptime fraction. |
| `year_2026_assigned_slots` | integer | year_2026: Sum of assigned leader slots for epochs with both assigned and produced counts. |
| `year_2026_weighted_skip_rate` | number | year_2026: Sum of assigned minus produced blocks divided by sum assigned slots over comparable observations. |
| `year_2026_max_commission_pct` | number | year_2026: Maximum reported epoch inflation commission percentage. |
| `year_2026_observed_start` | timestamp_utc | year_2026: First included epoch start; compare to period_start to detect partial history. |
| `year_2026_observed_end` | timestamp_utc | year_2026: Last included completed epoch end. |
| `this_year_observed_epochs` | integer | this_year: Distinct observed completed epochs for this validator. |
| `this_year_available_epochs` | integer | this_year: Distinct completed epochs available anywhere in the source population for this period; not proof of full calendar coverage. |
| `this_year_epoch_coverage` | number | this_year: Observed epochs divided by source-available epochs for the requested period. |
| `this_year_measured_uptime_epochs` | integer | this_year: Epochs having publisher uptime fractions. |
| `this_year_time_weighted_uptime` | number | this_year: Duration-weighted publisher uptime fraction; an estimate, not independent wall-clock monitoring. |
| `this_year_min_epoch_uptime` | number | this_year: Lowest reported epoch uptime fraction. |
| `this_year_assigned_slots` | integer | this_year: Sum of assigned leader slots for epochs with both assigned and produced counts. |
| `this_year_weighted_skip_rate` | number | this_year: Sum of assigned minus produced blocks divided by sum assigned slots over comparable observations. |
| `this_year_max_commission_pct` | number | this_year: Maximum reported epoch inflation commission percentage. |
| `this_year_observed_start` | timestamp_utc | this_year: First included epoch start; compare to period_start to detect partial history. |
| `this_year_observed_end` | timestamp_utc | this_year: Last included completed epoch end. |
| `last_year_observed_epochs` | integer | last_year: Distinct observed completed epochs for this validator. |
| `last_year_available_epochs` | integer | last_year: Distinct completed epochs available anywhere in the source population for this period; not proof of full calendar coverage. |
| `last_year_epoch_coverage` | number | last_year: Observed epochs divided by source-available epochs for the requested period. |
| `last_year_measured_uptime_epochs` | integer | last_year: Epochs having publisher uptime fractions. |
| `last_year_time_weighted_uptime` | number | last_year: Duration-weighted publisher uptime fraction; an estimate, not independent wall-clock monitoring. |
| `last_year_min_epoch_uptime` | number | last_year: Lowest reported epoch uptime fraction. |
| `last_year_assigned_slots` | integer | last_year: Sum of assigned leader slots for epochs with both assigned and produced counts. |
| `last_year_weighted_skip_rate` | number | last_year: Sum of assigned minus produced blocks divided by sum assigned slots over comparable observations. |
| `last_year_max_commission_pct` | number | last_year: Maximum reported epoch inflation commission percentage. |
| `last_year_observed_start` | timestamp_utc | last_year: First included epoch start; compare to period_start to detect partial history. |
| `last_year_observed_end` | timestamp_utc | last_year: Last included completed epoch end. |
| `last_30_days_observed_epochs` | integer | last_30_days: Distinct observed completed epochs for this validator. |
| `last_30_days_available_epochs` | integer | last_30_days: Distinct completed epochs available anywhere in the source population for this period; not proof of full calendar coverage. |
| `last_30_days_epoch_coverage` | number | last_30_days: Observed epochs divided by source-available epochs for the requested period. |
| `last_30_days_measured_uptime_epochs` | integer | last_30_days: Epochs having publisher uptime fractions. |
| `last_30_days_time_weighted_uptime` | number | last_30_days: Duration-weighted publisher uptime fraction; an estimate, not independent wall-clock monitoring. |
| `last_30_days_min_epoch_uptime` | number | last_30_days: Lowest reported epoch uptime fraction. |
| `last_30_days_assigned_slots` | integer | last_30_days: Sum of assigned leader slots for epochs with both assigned and produced counts. |
| `last_30_days_weighted_skip_rate` | number | last_30_days: Sum of assigned minus produced blocks divided by sum assigned slots over comparable observations. |
| `last_30_days_max_commission_pct` | number | last_30_days: Maximum reported epoch inflation commission percentage. |
| `last_30_days_observed_start` | timestamp_utc | last_30_days: First included epoch start; compare to period_start to detect partial history. |
| `last_30_days_observed_end` | timestamp_utc | last_30_days: Last included completed epoch end. |
| `last_90_days_observed_epochs` | integer | last_90_days: Distinct observed completed epochs for this validator. |
| `last_90_days_available_epochs` | integer | last_90_days: Distinct completed epochs available anywhere in the source population for this period; not proof of full calendar coverage. |
| `last_90_days_epoch_coverage` | number | last_90_days: Observed epochs divided by source-available epochs for the requested period. |
| `last_90_days_measured_uptime_epochs` | integer | last_90_days: Epochs having publisher uptime fractions. |
| `last_90_days_time_weighted_uptime` | number | last_90_days: Duration-weighted publisher uptime fraction; an estimate, not independent wall-clock monitoring. |
| `last_90_days_min_epoch_uptime` | number | last_90_days: Lowest reported epoch uptime fraction. |
| `last_90_days_assigned_slots` | integer | last_90_days: Sum of assigned leader slots for epochs with both assigned and produced counts. |
| `last_90_days_weighted_skip_rate` | number | last_90_days: Sum of assigned minus produced blocks divided by sum assigned slots over comparable observations. |
| `last_90_days_max_commission_pct` | number | last_90_days: Maximum reported epoch inflation commission percentage. |
| `last_90_days_observed_start` | timestamp_utc | last_90_days: First included epoch start; compare to period_start to detect partial history. |
| `last_90_days_observed_end` | timestamp_utc | last_90_days: Last included completed epoch end. |
| `last_365_days_observed_epochs` | integer | last_365_days: Distinct observed completed epochs for this validator. |
| `last_365_days_available_epochs` | integer | last_365_days: Distinct completed epochs available anywhere in the source population for this period; not proof of full calendar coverage. |
| `last_365_days_epoch_coverage` | number | last_365_days: Observed epochs divided by source-available epochs for the requested period. |
| `last_365_days_measured_uptime_epochs` | integer | last_365_days: Epochs having publisher uptime fractions. |
| `last_365_days_time_weighted_uptime` | number | last_365_days: Duration-weighted publisher uptime fraction; an estimate, not independent wall-clock monitoring. |
| `last_365_days_min_epoch_uptime` | number | last_365_days: Lowest reported epoch uptime fraction. |
| `last_365_days_assigned_slots` | integer | last_365_days: Sum of assigned leader slots for epochs with both assigned and produced counts. |
| `last_365_days_weighted_skip_rate` | number | last_365_days: Sum of assigned minus produced blocks divided by sum assigned slots over comparable observations. |
| `last_365_days_max_commission_pct` | number | last_365_days: Maximum reported epoch inflation commission percentage. |
| `last_365_days_observed_start` | timestamp_utc | last_365_days: First included epoch start; compare to period_start to detect partial history. |
| `last_365_days_observed_end` | timestamp_utc | last_365_days: Last included completed epoch end. |
| `recent_behavior` | string | Recent ten-epoch window only. Model-selected historical label accepted only with supporting deterministic metrics; otherwise insufficient_evidence. |
| `recent_emoji` | string | Recent ten-epoch window only. Period-specific behavior badge. |
| `recent_model_probability` | number | Recent ten-epoch window only. Top model probability; uncalibrated, not a probability of investment safety. |
| `recent_model_scores` | string | Recent ten-epoch window only. Full probability vector from Clef. |
| `recent_model` | string | Recent ten-epoch window only. Served pinned Clef model. |
| `recent_model_integrity` | integer | Recent ten-epoch window only. One only for a response from the expected model with every score in range. |
| `recent_period_start` | timestamp_utc | Recent ten-epoch window only. Earliest included completed epoch start, UTC. |
| `recent_period_end` | timestamp_utc | Recent ten-epoch window only. Latest included completed epoch end, UTC. |
| `recent_as_of_epoch` | integer | Recent ten-epoch window only. Latest completed epoch in this rolling source window. |
| `behavior_summary` | string | Measured behavior description for semantic search, with recent badge scope explicit. |

## Citing this dataset

Cite the dataset by name and canonical URL (https://mostlyright.md/datasets/solana-validator-performance-and-behavior), the table, and the immutable `version_id` the rows came from. A query response carries `table.version_id` and `table.content_digest`; a download carries a strong ETag and a `Content-Digest` header.
