StakingHotkeys

Storage Map v159 → v411

List of hotkeys a coldkey has staked to.

Explore chain
Queried by: stakerswalletsdelegatorsanalytics

The Big Picture

Instead of iterating through all possible hotkeys to find where a coldkey has staked, this provides a direct list. It's an index that makes portfolio queries efficient - get the list here, then query Stake for amounts.

Why This Matters

You delegated to several validators but can't remember which ones? This tells you exactly which hotkeys are receiving stake from your coldkey. Use it to enumerate your positions, then query Stake for each amount.

Example Scenario

Query StakingHotkeys(coldkey=your_address) returns [hotkey_A, hotkey_B, hotkey_C]. You're staking to 3 validators. Now query Stake for each to get amounts.

Common Questions

Is this per-subnet?
No, this is across all subnets. Each hotkey appears once even if staked on multiple subnets.
Does my own hotkey appear here?
Yes, if you've staked to your own hotkey, it will be in the list alongside delegated positions.

Use Cases

  • Show list of validators in a wallet's portfolio view
  • Enumerate delegation targets without scanning all Stake entries
  • Build delegation relationship graphs
  • Track diversification of staking positions

From Chain Metadata

MAP ( cold ) --> Vec<hot> | Maps coldkey to hotkeys that stake to it

Purpose & Usage

Purpose

Track delegation relationships for a coldkey.

Common Query Patterns

  • List all hotkeys receiving stake from a coldkey
  • Check if coldkey is staking to a specific hotkey

Query Keys

#NameTypeDescription
1
cold
[u8; 32] [32] cold ([u8; 32], hashed key component)

Stored Value

Vec<hot> (Vec<AccountId>)

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 StakingHotkeys storage
const cold = "0x0000000000000000000000000000000000000000000000000000000000000000";

const result = await api.query.SubtensorModule.StakingHotkeys.getValue(cold);
console.log("StakingHotkeys:", result);

On-Chain Activity

Write Frequency
●●●●●● Ultra-High >10M est. writes

>10M estimated writes

#6 most written storage item

Write Source User Extrinsics

Modified via user-submitted extrinsics

As of block 7,429,232

Version History

v159 block 3,327,737 Added
v166–v194 · runtime versions skipped on chain (never deployed)
v195 block 3,791,350 Internal re-bind
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
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
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
v159
Current Version
v411