Queried by: validatorsdelegatorsanalyticsdevelopers
The Big Picture
The reverse of ChildKeys. A child hotkey can have multiple parents delegating stake proportions. ParentKeys lets you see who's backing a child and with what proportions.
Why This Matters
Who is delegating stake to this child? ParentKeys shows all parents and their proportions. Essential for understanding a child's total backing.
Example Scenario
Query ParentKeys(netuid=1, child_hotkey=Y) returns [(5000, parent_A), (10000, parent_B)]. Parent A gives 50% of their stake to Y; Parent B gives 100% to Y.
Common Questions
- Can a child have multiple parents?
- Yes, multiple validators can designate the same hotkey as a child. Each contributes their proportion independently.
- How do I calculate total effective stake?
- Sum (parent_stake × proportion) for all parents. This is the child's total delegated stake.
Use Cases
- Check which validators are backing a child hotkey
- Calculate total effective stake from all parents
- Build reverse delegation graphs
- Verify child key configurations
- Research stake flow patterns
From Chain Metadata
DMAP ( child, netuid ) --> Vec<(proportion,parent)>
Purpose & Usage
Purpose
Reverse lookup for child-parent relationships - find who's delegating stake to this child.
Common Query Patterns
- Query parents for a child on a subnet
- Verify parent-child relationships
- Calculate total stake from all parents
Notes
- Returns Vec<(proportion, parent)>
Query Keys
Stored Value
Value in RAO (÷10⁹ for TAO)
Relationships
Modified By
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 ParentKeys storage
const key1 = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
const key2 = 0;
const result = await api.query.SubtensorModule.ParentKeys.getValue(key1, key2);
console.log("ParentKeys:", result);On-Chain Activity
Write Frequency
●●●○○○ Low 10K–100K est. writes
10K–100K estimated writes
#46 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