ChildKeys
Storage Map v195 → currentChild hotkeys and proportions for a parent hotkey on a subnet .
Explore chainThe 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)>
Query Keys
Stored Value
Value in RAO (÷10⁹ for TAO)
Relationships
Modified By
Code Examples
import { ApiPromise, WsProvider } from "@polkadot/api";
import { stringCamelCase } from "@polkadot/util";
const provider = new WsProvider("wss://entrypoint-finney.opentensor.ai:443");
const api = await ApiPromise.create({ provider });
// Query ChildKeys storage
const key1 = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
const key2 = 0;
const result = await api.query
[stringCamelCase("SubtensorModule")]
[stringCamelCase("ChildKeys")](
key1,
key2
);
console.log("ChildKeys:", result.toHuman());On-Chain Activity
10K–100K estimated writes
#45 most written storage item
Modified via user-submitted extrinsics
As of block 7,429,232
Runtime Info
View Source- Pallet
- SubtensorModule
- Storage Kind
- Map
- First Version
- v195
- Current Version
- v393