The Big Picture
Not all hotkeys accept external stake. Only delegates (validators who called become_delegate) can receive stake from other coldkeys. This storage tells you who's open for business.
Why This Matters
Before you can delegate to a hotkey, they must be a delegate. This is the first check when evaluating validators - is this hotkey even accepting stake?
Example Scenario
Query Delegates(hotkey=X). If true, you can stake to X. If false (or not found), X only accepts stake from their own coldkey.
Common Questions
- Why can't I stake to some validators?
- They may not be delegates. Only hotkeys that called become_delegate accept external stake.
Use Cases
- Find validators accepting delegation
- Check if you can stake to a specific hotkey
- Build delegate discovery tools
From Chain Metadata
MAP ( hot ) --> take | Returns the hotkey delegation take. And signals that this key is open for delegation.
Purpose & Usage
Purpose
Track which hotkeys can receive delegated stake.
Common Query Patterns
- Check if hotkey accepts delegation
- List all delegates by iterating
Query Keys
| # | Name | Type | Description |
|---|---|---|---|
| 1 | hotkey hotkey raw: key1 | [u8; 32] [32] | Hotkey address |
Stored Value
Take rate as a u16 value. Real ratio = value / 65535 (u16-normalized scale where u16::MAX = 100%). Empirically confirmed at v411: rpc_info/delegate_info.rs computes `U64F64::saturating_from_num(take.0).safe_div(u16::MAX.into())`. Presence of an entry signals the hotkey accepts delegation. Note this differs from the MaxDelegateTake / MinDelegateTake constants which use a different scale.
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 Delegates storage
const key1 = "0x0000000000000000000000000000000000000000000000000000000000000000";
const result = await api.query.SubtensorModule.Delegates.getValue(key1);
console.log("Delegates:", result);On-Chain Activity
<10K estimated writes
#54 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
- v101
- Current Version
- v411