ChildkeyTake

Storage Map v195 → v411

Child-hotkey commission fraction on a subnet , encoded as u16. To get the fraction: value / u16::MAX (i.e. value / 65535). NOT basis points (10000) or percent (100).

Explore chain
Queried by: validatorsdelegatorsanalytics

The Big Picture

When a parent delegates stake to a child, the child earns rewards. ChildkeyTake is the child's commission - the fraction they keep before passing rewards back to the parent. Higher take means more for the child, less for the delegating parent. Encoded as u16/u16::MAX.

Why This Matters

What cut does this child keep? ChildkeyTake determines how much flows back to parents. Lower take = better for parents; higher take = better for child operators.

Example Scenario

Query ChildkeyTake(hotkey=child_Y, netuid=1) returns 1500. That's 15% take (1500/10000). The child keeps 15% of their earnings, passing 85% to parents.

Common Questions

How do basis points work?
1500 basis points = 15%. 10000 = 100%. Divide by 100 to get percentage.
Are there limits on take?
Yes, check MinChildkeyTake and MaxChildkeyTake for the allowed range.
Who sets the take rate?
The child hotkey sets their own take rate. Parents choose whether to accept it by establishing or maintaining the relationship.

Use Cases

  • Check child commission rate before establishing relationship
  • Compare child hotkeys by take rate
  • Calculate parent returns after child take
  • Build child key comparison tools
  • Analyze child key economics

From Chain Metadata

DMAP ( hot, netuid ) --> take | Returns the hotkey childkey take for a specific subnet

Purpose & Usage

Purpose

Track what fraction a child-hotkey keeps before passing rewards back to the parent. Stored as u16 normalised to u16::MAX = 100%, matching the SubnetOwnerCut convention.

Common Query Patterns

  • Query by (hotkey, netuid)
  • Divide value by 65535 (u16::MAX) to get fraction
  • Compare against MinChildkeyTake / MaxChildkeyTake bounds (same encoding)

Notes

  • Value is u16 normalised to u16::MAX (NOT basis points, NOT percent). 32767 ≈ 50%, 65535 = 100%.
Part of: Child Hotkeys

Query Keys

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

Stored Value

value (u16)

Decoding the value

u16 (normalised: value / u16::MAX = fraction)

Same encoding as SubnetOwnerCut: value / u16::MAX.

Common bug
Previous version of this doc said "basis points" — WRONG. Dividing by 10000 instead of 65535 yields values ~6.55x too large. Verify any indexer that consumed older docs.
const fraction = (value as number) / 65535;

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

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

On-Chain Activity

Write Frequency
●●○○○○ Minimal <10K est. writes

<10K estimated writes

#58 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