RootClaimable

Storage Map Poll per tempo v334 → v411 Changed in v411

Per-subnet alpha claimable by a hotkey from root network emissions .

Explore chain
Queried 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

#NameTypeDescription
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)