RootClaimable
Storage Map Poll per tempo v334 → v411 Changed in v411Per-subnet alpha claimable by a hotkey from root network emissions .
Explore chainQueried by: validatorsstakerswallets
The Big Picture
Root network participants earn emissions based on their stake weight. This storage tracks accumulated rewards per (hotkey, netuid), with the per-subnet breakdown nested inside the value BTreeMap. To compute total claimable for a hotkey, sum the I96F32 values across all netuids in its map.
Use Cases
- Check pending root rewards across all subnets
- Build reward notification systems
- Track per-subnet emission accumulation
Purpose & Usage
Purpose
Tracks pending root-network reward shares as a map of (netuid → alpha amount) per hotkey. Value type is BTreeMap<NetUid, I96F32>, NOT a single TAO amount.
Common Query Patterns
- Query by hotkey
- Iterate inner BTreeMap to sum across subnets
Query Keys
| # | Name | Type | Description |
|---|---|---|---|
| 1 | hotkey hotkey raw: key1 | [u8; 32] [32] | key1 ([u8; 32]) |
Stored Value
value (BTreeMap)
Decoding the value
BTreeMap<NetUid, I96F32>Outer value is BTreeMap<NetUid, I96F32>. Each I96F32 is Q96.32 fixed-point — raw bits / 2^32 gives the rational. To compute total claimable for a hotkey, sum bits across all netuids.
Common bug
Original metadata description said "TAO amount" — this is WRONG. The value is a per-subnet map of alpha, not a single TAO total. Reading as scalar yields garbage.
// PAPI returns a Map; sum the .bits fields
let total = 0n;
for (const v of map.values()) total += v.bits;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 RootClaimable storage
const key1 = "0x0000000000000000000000000000000000000000000000000000000000000000";
const result = await api.query.SubtensorModule.RootClaimable.getValue(key1);
console.log("RootClaimable:", result);Version History
v334 block 6,811,690 Added
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
- v334
- Current Version
- v411
- Population
- sparse-by-value (~84,469 entries)