Every score we publish is computed from live subtensor storage and the registered repos' public GitHub metadata, with the recipe published here. Nothing is a verdict — it's a transparent, evidence-first heuristic. Where the chain can't prove a signal, we don't model it.
composite risk, 0 (clean) → 100 (strong adverse signals)
What. The share of a subnet's live emission captured by its single best-earning uid.
How. SubtensorModule::Emission returns one u64 per uid (rao earned this epoch). We normalize by the vector's sum; the maximum entry is the top-1 share. ≤25% scores 0, ≥75% scores 100, linear in between.
Abuse it flags. A scoring topology (or validator block) that consistently pins emission on one insider shows up as extreme, sustained concentration.
What. Development dormancy — how long since the registered repo was last pushed.
How. GitHub pushed_at for the repo registered in SubnetIdentitiesV3, fetched live by the worker. <30 days scores 0, ≥240 days scores 100, linear in between.
Abuse it flags. Founders abandon the product but leave the race running, harvesting emissions with zero work.
What. Whether the subnet actually pays: SubnetEmissionEnabled, FirstEmissionBlockNumber and SubnetTaoInEmission.
How. Any of — emissions disabled by the owner, first-emission block never set, or TaoInEmission = 0 — scores 100 (there is nothing to mine). Otherwise 0.
Abuse it flags. A subnet that markets itself to miners while paying zero is the most basic trap; this signal makes it impossible to miss.
not modeled — and why
These arrive when taonets runs its own indexer. Until then the engine scores a shorter list — but a true one.
clearly-labeled assumptions over live data
what the crown numbers mean
read from the chain, archived per epoch
Every subnet race's scores are read directly from subtensor storage: Incentive (the validator network's normalized per-uid score, 0–65,535, what emission actually follows), Scores (the raw validator-aggregated value in the subnet's own scale) and the per-uid Emission vector for payout context. The scoreboard shows normalized incentive; the raw value is shown alongside because its meaning (seconds, accuracy points, task counts) is subnet-specific.
Stats are computed over qualifiers — uids with a non-zero incentive. “Lowest validated score” is the smallest non-zero incentive; uids at zero did not score. When the top uid holds ≥99.5% of all incentive the race is flagged winner-take-all — a payout structure, not a concentration anomaly.
The chain does not store past vectors, so history starts when taonets first reads a subnet: one archived summary per epoch (epoch = block ÷ Tempo), up to 96 epochs. Hidden per-validator test sets are computed off chain and never published — we show what the chain shows, no reconstruction.
the race-change detector
For every on-chain registered repo, the worker revalidates the default branch's head commit against GitHub roughly every 60 seconds using conditional requests — an unchanged repo answers 304 and costs no rate limit, so the watch is both fast and free. When the head SHA moves, the event (sha, commit message, commit date, detection time) is recorded on the subnet and surfaces on the Race tab, the subnet overview and the dashboard signal feed within ~2 minutes of the push. Every head carries the moment GitHub last confirmed it, and the site shows a stale warning — never an “unchanged” badge — when the watch itself falls behind.
A moved head commit means the race's code, tasks or benchmark may have changed. It is a trigger to re-verify, not a semantic diff: taonets reports exactly what changed at the repo level (the commit itself) and links to it, rather than guessing what the diff means for scoring.
from the projects' own words
Each subnet's name, GitHub description, topics and README head are fetched live for the repo registered in SubnetIdentitiesV3. A weighted word-boundary keyword match assigns a mission type: description and topics weigh most, the name next, the README least. No match → the subnet is shown as unclassified rather than guessed. Labels are auditable: the taxonomy's keywords live in one file in the repo, and every classification can be traced to the exact sentence that triggered it.
Dispute an assessment by emailing [email protected] with your coldkey/hotkey set and evidence. Because every subscore cites its exact storage read, disputes resolve by pointing at the chain: either the read says what we published, or we publish a correction.
Taonets is an independent analytics product. It is not affiliated with Bittensor/Opentensor Foundation. Scores describe statistical patterns on-chain; they are not statements of fact about any person or team.