ChildkeyTake
Storage Map v195 → v411Child-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 chainThe 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%.
Query Keys
Stored Value
value (u16)
Decoding the value
u16 (normalised: value / u16::MAX = fraction)Same encoding as SubnetOwnerCut: value / u16::MAX.
const fraction = (value as number) / 65535;Relationships
Modified By
Related Events
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
<10K estimated writes
#58 most written storage item
Modified via user-submitted extrinsics
As of block 7,429,232
Version History
Runtime Info
View Source- Pallet
- SubtensorModule
- Storage Kind
- Map
- First Version
- v195
- Current Version
- v411