Weights

Storage Map v101 → v411 Changed in v411

Weight matrix set by validators on a subnet .

Explore chain
Queried by: validatorsminersanalytics

The Big Picture

This is where validators record their judgments. Each validator sets weights on other neurons - higher weight means 'I think this neuron is doing good work.' These weights feed into Yuma Consensus to determine emissions. It's the core of Bittensor's incentive mechanism.

Why This Matters

Want to know why miner X is earning so much? Check what weights validators gave them. This storage is the raw input to consensus - understanding it reveals network dynamics.

Example Scenario

Query Weights(netuid=1, uid=5) returns [(12, 3500), (47, 2100), (8, 1800), ...]. Validator UID 5 gave weight 3500 to UID 12, 2100 to UID 47, etc. Higher values = more favorable scoring.

Common Questions

What are the weight values?
Weights are u16 values (0-65535) representing relative importance. They're normalized during consensus calculation.
Do all neurons set weights?
Only validators with ValidatorPermit can set weights. Miners typically don't set weights (or set empty weights).

Use Cases

  • Understand how a validator is scoring miners
  • Reconstruct the full weight matrix for analysis
  • Debug why certain neurons receive emissions
  • Build transparency tools showing validator behavior

From Chain Metadata

DMAP ( netuid, uid ) --> weights

Purpose & Usage

Purpose

Store validator judgments used for incentive calculation.

Common Query Patterns

  • Query weights set by a specific UID
  • Build weight matrix for consensus
Part of: Yuma ConsensusWeight ManagementCommit-Reveal Weights (CRV3)

Query Keys

#NameTypeDescription
1
netuid
u16 Subnet ID. Source-level type is `NetUidStorageIndex` (a u16 remap of NetUid used only for storage layout).
2
uid
u16 Neuron UID that set these weights

Stored Value

Weight vector — list of (peer_uid, weight_u16) pairs

Relationships

Code Examples

import { createClient, Binary } from "polkadot-api";
import { getWsProvider } from "polkadot-api/ws";
import { sub } from "@polkadot-api/descriptors"; // generated by: npx papi add sub -w wss://entrypoint-finney.opentensor.ai:443

const client = createClient(getWsProvider("wss://entrypoint-finney.opentensor.ai:443"));
const api = client.getTypedApi(sub);

// Query Weights storage
const netuid = 1;
const uid = 0;

const result = await api.query.SubtensorModule.Weights.getValue(netuid, uid);
console.log("Weights:", result);

On-Chain Activity

Write Frequency
●●●●●● Ultra-High >10M est. writes

>10M estimated writes

#1 most written storage item

Write Source Calls + Hooks

Modified by both user extrinsics and runtime hooks

As of block 7,429,232

Version History

v101 block 1 Added
v120 block 315,568 Internal re-bind
v123 block 720,235 Internal re-bind
v128–v132 · runtime versions skipped on chain (never deployed)
v133 block 1,404,224 Internal re-bind
v136 block 1,756,781 Internal re-bind
v138 block 1,907,363 Internal re-bind
v140 block 1,929,216 Internal re-bind
v146 block 2,848,978 Internal re-bind
v149 block 3,014,339 Internal re-bind
v151 block 3,157,274 Internal re-bind
v154 block 3,308,611 Internal re-bind
v166–v194 · runtime versions skipped on chain (never deployed)
v195 block 3,791,350 Internal re-bind
v202 block 3,848,823 Internal re-bind
v207–v209 · runtime versions skipped on chain (never deployed)
v210 block 4,345,556 Internal re-bind
v213–v215 · runtime versions skipped on chain (never deployed)
v216 block 4,510,996 Internal re-bind
v220–v232 · runtime versions skipped on chain (never deployed)
v233 block 4,920,350 Internal re-bind
v235–v237 · runtime versions skipped on chain (never deployed)
v238 block 4,936,550 Internal re-bind
v241–v243 · runtime versions skipped on chain (never deployed)
v244 block 4,999,897 Internal re-bind
v266–v272 · runtime versions skipped on chain (never deployed)
v273 block 5,659,032 Internal re-bind
v278–v289 · runtime versions skipped on chain (never deployed)
v290 block 5,947,548 Internal re-bind
v293–v296 · runtime versions skipped on chain (never deployed)
v297 block 6,067,943 Internal re-bind
v307–v314 · runtime versions skipped on chain (never deployed)
v315 block 6,414,634 Internal re-bind
v316–v319 · runtime versions skipped on chain (never deployed)
v320 block 6,523,566 Internal re-bind
v327–v333 · runtime versions skipped on chain (never deployed)
v334 block 6,811,690 Internal re-bind
v353–v360 · runtime versions skipped on chain (never deployed)
v361 block 7,063,679 Internal re-bind
v363–v364 · runtime versions skipped on chain (never deployed)
v365 block 7,135,419 Internal re-bind
v386–v390 · runtime versions skipped on chain (never deployed)
v391 block 7,782,857 Internal re-bind
v394–v400 · runtime versions skipped on chain (never deployed)
v401 block 8,036,576 Internal re-bind
v403–v410 · runtime versions skipped on chain (never deployed)
v411 block 8,283,784 Internal re-bind Current

Runtime Info

View Source
Pallet
SubtensorModule
Storage Kind
Map
First Version
v101
Current Version
v411