Delegates

Storage Map v101 → v411

Whether a hotkey is a delegate (accepts stake ).

Explore chain
Queried by: stakersdelegatorsanalyticswallets

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
Part of: Delegation

Query Keys

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

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

<10K estimated writes

#54 most written storage item

Write Source User Extrinsics

Modified via user-submitted extrinsics

As of block 7,429,232

Version History

v101 block 1 Added
v123 block 720,235 Internal re-bind
v149 block 3,014,339 Internal re-bind
v278–v289 · runtime versions skipped on chain (never deployed)
v290 block 5,947,548 Internal re-bind Current

Runtime Info

View Source
Pallet
SubtensorModule
Storage Kind
Map
First Version
v101
Current Version
v411