Subnet Miner Fairness
Last updated
Measure whether a subnet's registered miners actually earn, over a 7d/30d/90d window rather than from a snapshot. Every dashboard publishes a miner count; the median subnet has 99.2% of its non-validator UIDs on zero emission, so that count read as a count of earners is close to fiction. Reports the daily zero rate, how many days each miner UID earned on -- earned on 0 of 31 and earned on 3 of 31 are different answers a snapshot collapses -- and emission concentration across controlling ENTITIES (the addresses holding the UIDs) as the headline lens, because a subnet with three operators behind 256 UIDs is not diverse and the per-UID Gini alone hides that. Descriptive only: there is no fairness score, because a high Gini on a subnet whose task genuinely has one best answer is not misconduct.
Path Parameters
0 <= valueQuery Parameters
Trailing lookback window the response is computed over, ending at the most recent data point rather than at today. Accepts 7d, 30d, 90d. A longer window is not a superset of a shorter one -- rankings and rates are recomputed over the whole window, not summed.
"30d"Value in
- "7d"
- "30d"
- "90d"
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/subnets/0/miner-fairness"{ "data": { "concentration": { "entity": { "holders": 1, "nakamoto_coefficient": 1 }, "uid": { "holders": 1, "nakamoto_coefficient": 1 } }, "days_covered": 1, "entity_count": 1, "field_sources": { "example": { "kind": "measured", "storage": "example" } }, "miner_uid_count": 1, "netuid": 7, "persistence": { "earned_every_day_count": 1, "max_earning_days": 0.5, "median_earning_days": 0.5, "never_earned_count": 1 }, "point_count": 1, "points": [ { "earning_miner_count": 1, "miner_count": 1, "snapshot_date": "example" } ], "schema_version": 1, "uids_per_entity": 0.5, "window": "30d" }, "meta": { "artifact_path": "example", "cache": "short", "contract_version": "2026-06-29.1", "generated_at": "2026-06-01T00:00:00.000Z", "pagination": { "collection": "example", "cursor": 1, "limit": 1, "next_cursor": 1, "order": "asc", "returned": 1, "sort": "example", "total": 1 }, "published_at": "2026-06-01T00:00:00.000Z", "source": "live-cron-prober", "stale_contract": { "built_under": "example", "live": "example" } }, "ok": true, "schema_version": 1}