ChildKeys

Storage Map v195 → v411

Child hotkeys and proportions for a parent hotkey on a subnet .

Explore chain
Queried by: validatorsdelegatorsanalyticsdevelopers

The Big Picture

Child keys allow a parent hotkey to distribute its stake among multiple child hotkeys. Each child receives a proportion of the parent's stake, enabling complex validator operations - like running multiple specialized miners under one validator umbrella.

Why This Matters

How does a validator split stake among its operations? ChildKeys shows the distribution. Each child receives a proportion of the parent's stake for their specific role.

Example Scenario

Query ChildKeys(netuid=1, parent_hotkey=X) returns [(5000, child_A), (3000, child_B), (2000, child_C)]. Child A gets 50%, B gets 30%, C gets 20% of the parent's stake on subnet 1.

Common Questions

What are proportions in?
Basis points typically (10000 = 100%). Proportions should sum to 10000 for full distribution.
Why use child keys?
Validators with complex operations can delegate stake to specialized child hotkeys without moving actual TAO. Enables organizational flexibility.
How does this affect emissions?
Children earn based on their effective stake (proportion × parent stake). Emissions flow through the hierarchy based on these proportions.

Use Cases

  • Check how a validator distributes stake to child operations
  • Build stake flow visualizations
  • Calculate child hotkey effective stakes
  • Research stake delegation patterns
  • Verify child key configurations

From Chain Metadata

DMAP ( parent, netuid ) --> Vec<(proportion,child)>

Purpose & Usage

Purpose

Track stake distribution to child hotkeys - enables stake delegation within hotkey relationships.

Common Query Patterns

  • Query children for a parent on a subnet
  • Iterate all parent-child relationships
  • Calculate stake distribution from parent to children

Notes

  • Returns Vec<(proportion, child)>
Part of: Child Hotkeys

Query Keys

#NameTypeDescription
1
parent account
raw: key1
AccountId key1 (AccountId) (hex -> SS58)
2
netuid netuid
raw: key2
u16 key2 (u16)

Stored Value

Value in RAO (÷10⁹ for TAO)

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 ChildKeys storage
const key1 = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
const key2 = 0;

const result = await api.query.SubtensorModule.ChildKeys.getValue(key1, key2);
console.log("ChildKeys:", result);

On-Chain Activity

Write Frequency
●●●○○○ Low 10K–100K est. writes

10K–100K estimated writes

#45 most written storage item

Write Source User Extrinsics

Modified via user-submitted extrinsics

As of block 7,429,232

Version History

v195 block 3,791,350 Added
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
v266–v272 · runtime versions skipped on chain (never deployed)
v273 block 5,659,032 Internal re-bind
v275–v275 · runtime versions skipped on chain (never deployed)
v276 block 5,781,672 Internal re-bind
v278–v289 · runtime versions skipped on chain (never deployed)
v290 block 5,947,548 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
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 Current

Runtime Info

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