How Taonets judges
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.
Integrity score (live-chain engine)
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.
Signals we refuse to fabricate
not modeled — and why
- • Owner self-mining. Requires walking transfer/stake/registration-fee edges from owner coldkeys — a transfer indexer taonets doesn't run yet.
- • Validator oligopoly. Requires the validator set and stake weights (metagraph), not read by the worker today.
- • Registration capture. Requires per-uid registration history and winner distributions over time.
- • Race churn / pool games. Require crown-change history and transfer timing — same missing indexer.
These arrive when taonets runs its own indexer. Until then the engine scores a shorter list — but a true one.
Worth-mining model
clearly-labeled assumptions over live data
- • Live inputs: daily emission (SubnetTaoInEmission), alpha price (SubnetMovingPrice), pool depth (SubnetAlphaIn/Out), registration burn (Burn) and active miners (Active).
- • Marginal share ≈ (1 / active miners) × your skill multiplier — an approximation; real share follows the subnet's own scoring.
- • Revenue = share × daily emission, valued at the live alpha price.
- • Slippage scales with daily reward sales vs pool depth (3× the consumed fraction, capped 90%).
- • Upfront cost = hardware + registration burn; break-even = upfront ÷ net daily.
- • Verdicts: worth it > 8% monthly ROI · thin > 2% · no otherwise. Zero-emission subnets always model to “no”, because there is genuinely nothing to mine.
Emission dominance
what the crown numbers mean
- • The top uid of a subnet is whoever's entry in the Emission vector is largest right now — the de-facto champion of the live race.
- • Top-1 / top-10 shares are that uid's (and the ten largest uids') fraction of total subnet emission, normalized per epoch.
- • Earning uids counts non-zero entries; active miners counts flags in the Active bitmap from the last epoch.
- • Per-uid identities, reigns and crown-change history need metagraph history; until that indexer exists, taonets shows concentration without names.
Race scores
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.
Repo watch
the race-change detector
For every on-chain registered repo, the worker revalidates the default branch's head commit against GitHub roughly every 10 minutes 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 minutes of the push.
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.
Semantic labels
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.
Appeals & corrections
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.