Skip to content

SFDP Watch

Program membership and grades, per cluster, measured not asserted.

Current epoch, funded counts and snapshot age

Mainnet-beta370 funded
epoch 1017
in progress · Approved
Testnet476 funded
epoch 1008
in progress · Approved + TestnetOnboarded
Snapshotlive
14m ago
hourly · 33 checks
On record69 changes
10,966
applicants ever recorded · 119 in the pipeline

Program-wide figures

Funded, mainnet-beta
370
Approved · 3.37% of 10,966 on record
Funded, testnet
476
Approved + TestnetOnboarded · testnet is a prerequisite, not an alternative
Pass rate, mainnet-beta
97.3%
145,174 of 149,227 graded epochs
Pass rate, testnet
95.0%
181,437 of 191,056 graded epochs
Lost mainnet stake
37
observed here since 2026-07-30, never an exit date
Top failure reason
Vote credits below floor
7,743 of 16,773 published reasons; many failures carry none

Failed epochs, program-wide

Full dashboard →

failed ÷ graded per epoch · last 60 epochs · the program’s own grades, not derived here

28%21%14%7%0%
epoch 9579871016
Mainnet-beta (solid)4.17%15/360Testnet (dashed)13.03%61/468
Epoch by epoch, and how this is measured
Program-wide failed and graded validator counts per epoch, both clusters
EpochMainnet failed/gradedRateTestnet failed/gradedRate
101615/3604.17%
10159/3602.50%
101411/3613.05%
10134/3601.11%
10125/3611.39%
10118/3612.22%
10104/3611.11%
100915/3664.10%
100817/3664.64%
100716/3674.36%61/46813.03%
100615/3674.09%60/46812.82%
100520/3685.43%66/46814.10%

Each point is failed divided by graded for that epoch. Epochs the program never assessed are on neither side of the division, so a gap is never counted as a failure. Epochs with fewer than 20 graded validators are dropped and break the line rather than rendering as a value. An em dash means no plotted data for that cluster and epoch, which is not the same as a measured zero. The two clusters are judged against different published floors, so their rates are not a like-for-like comparison. The window is the last 60 epochs; testnet settles epochs at a different rate from mainnet-beta, so its line can end earlier.

Two clusters, two rulebooks

Every published threshold →

5 of 5 comparable thresholds differ, every one· read live from the program’s config, nothing hardcoded

SFDP criteria thresholds compared between mainnet-beta and testnet
CriterionMainnet-betaepoch 1016Testnetepoch 1007
Min vote credits97%85%
Max skip rate5%40%
Max commission5%100%
Max MEV commission10%
Min Agave version4.2.0-rc.14.2.0-rc.0
Min Firedancer version0.1104.0-rc.402000.1102.0-beta.40201
How these thresholds are measured

The program publishes its thresholds per epoch and per cluster, and they are not the same. A validator can sit comfortably inside testnet’s limits while failing mainnet’s, so the two readings are never like for like. Thresholds are published once an epoch completes, so the values above are the most recent settled ones rather than the epoch in progress; the epoch each column came from is stated in its heading.

Every pass or fail on this site is computed from these published numbers against a measured value, both shown. Nothing is hardcoded, and no threshold is inferred.

Where everyone stands

Browse all validators →

state decides cluster standing, not pubkeys

  • 13Pendingnone yet0.12% of all records
  • 106TestnetOnboardedtestnet only0.97% of all records
  • 370Approvedmainnet-beta + testnet3.4% of all records
  • 6,985Rejectednone63.7% of all records
  • 3,492Retirednone31.8% of all records
How states map to clusters

State, not which pubkeys a record carries, is what determines cluster standing. Almost every record here, rejected ones included, holds both a mainnet and a testnet pubkey, because a mainnet key is registered at application time. Approved validators run both clusters; TestnetOnboarded is the only genuinely testnet-only state. TestnetOnboarded plus Pending is the pipeline toward mainnet delegation.

Recent changes

Full ledger →

69 observed · 37 lost mainnet stake · 3 gained · observed times, not program decision times

Go deeper

Where these numbers come from

Membership is the documented sfdp_participants endpoint: one request, no parameters, the complete table, polled hourly and diffed against the previous snapshot. Grades, failure reasons and community-cluster data are read from files committed to this repository, never fetched while a page renders. Pass rates count Bonus and Baseline grades over graded epochs only; epochs the program never assessed sit in neither the numerator nor the denominator.

The validators/list endpoint silently ignores every filter parameter: ?state=approved returns byte-identical results to ?state=bogusvalue, mostly rejected and retired records. This site never relies on it for membership.

The grade history covers today’s funded validators plus those observed leaving, so older epochs show the survivors’ history rather than everyone who was in the program at the time. Where a validator was graded before its recorded join date, the record is shown as it was published and labelled on that validator’s page.

snapshot · grades 2026-08-18 04:11:28 UTC · watching since 2026-07-30 07:46:51 UTC