Skip to content

SFDP Watch

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

Current epoch, funded counts and snapshot age

Mainnet-beta348 funded
epoch 1047
in progress · Approved
Testnet417 funded
epoch 1049
in progress · Approved + TestnetOnboarded
Snapshotlive
13h ago
hourly · 112 checks
On record170 changes
10,975
applicants ever recorded · 82 in the pipeline

Program-wide figures

Funded, mainnet-beta
348
Approved · 3.17% of 10,975 on record
Funded, testnet
417
Approved + TestnetOnboarded · testnet is a prerequisite, not an alternative
Pass rate, mainnet-beta
97.3%
155,223 of 159,524 graded epochs
Pass rate, testnet
94.7%
195,779 of 206,801 graded epochs
Lost mainnet stake
64
observed here since 2026-07-30, never an exit date
Top failure reason
Vote credits below floor
8,702 of 18,916 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 98610161045
Mainnet-beta (solid)2.33%8/344Testnet (dashed)20.10%83/413
Epoch by epoch, and how this is measured
Program-wide failed and graded validator counts per epoch, both clusters
EpochMainnet failed/gradedRateTestnet failed/gradedRate
10458/3442.33%——
104412/3443.49%——
104313/3543.67%——
104213/3543.67%——
10415/3541.41%83/41320.10%
10405/3541.41%21/4135.08%
10395/3551.41%19/4124.61%
10383/3540.85%26/4136.30%
10372/3540.56%35/4128.50%
10365/3541.41%44/41310.65%
10356/3541.69%20/4134.84%
103419/3545.37%24/4145.80%

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 →

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

SFDP criteria thresholds compared between mainnet-beta and testnet
CriterionMainnet-betaepoch 1046Testnetepoch 1048
Min vote creditsDIFFERS97%0%
Max skip rateDIFFERS5%40%
Max commissionDIFFERS5%100%
Max MEV commissionDIFFERS10%—
Min Agave version4.3.04.3.0
Min Firedancer versionDIFFERS0.1204.403000.1300.0
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
  • 69TestnetOnboardedtestnet only0.63% of all records
  • 348Approvedmainnet-beta + testnet3.2% of all records
  • 7,002Rejectednone63.8% of all records
  • 3,543Retirednone32.3% 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 →

170 observed · 64 lost mainnet stake · 8 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-10-02 10:02:44 UTC · watching since 2026-07-30 07:46:51 UTC