BlockAtRegistration

Storage Map v101 → v411 Changed in v411

Block number when a neuron registered.

Explore chain
Queried by: minersvalidatorsdevelopersanalytics

The Big Picture

This records when each neuron first registered. Combined with ImmunityPeriod, it determines if a neuron is still protected from pruning. Also useful for tenure analysis - how long have neurons been active?

Why This Matters

Are you still immune from pruning? Check (current_block - BlockAtRegistration) < ImmunityPeriod. Also shows your tenure on the subnet.

Example Scenario

Query BlockAtRegistration(netuid=1, uid=47) returns 7000000. Current block is 7005000. You registered 5000 blocks ago. If ImmunityPeriod is 7200, you're still protected.

Common Questions

What if I re-register?
If you're pruned and re-register, BlockAtRegistration updates to the new registration. You get a fresh immunity period.
Can I check other neurons' registration time?
Yes, this is public. You can see when any neuron registered and calculate their age and immunity status.

Use Cases

  • Check if you're still in immunity period
  • Calculate neuron age on a subnet
  • Build neuron tenure analytics
  • Research registration patterns over time
  • Debug immunity-related issues

From Chain Metadata

DMAP ( netuid, uid ) --> block_at_registration

Purpose & Usage

Purpose

Track registration timing for immunity - when did this neuron first appear.

Common Query Patterns

  • Query by netuid-uid
  • Calculate immunity status
  • Research neuron age
Part of: Neuron Pruning

Query Keys

#NameTypeDescription
1
netuid
u16 netuid (u16, hashed key component)
2
uid
u16 uid (u16, hashed key component)

Stored Value

block_at_registration (u64)

RAO -> TAO (/ 10^9)

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 BlockAtRegistration storage
const netuid = 1;
const uid = 0;

const result = await api.query.SubtensorModule.BlockAtRegistration.getValue(netuid, uid);
console.log("BlockAtRegistration:", result);

On-Chain Activity

Write Frequency
●●●●○○ Medium 100K–1M est. writes

100K–1M estimated writes

#29 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
v120 block 315,568 Internal re-bind
v123 block 720,235 Internal re-bind
v128–v132 · runtime versions skipped on chain (never deployed)
v133 block 1,404,224 Internal re-bind
v136 block 1,756,781 Internal re-bind
v138 block 1,907,363 Internal re-bind
v140 block 1,929,216 Internal re-bind
v146 block 2,848,978 Internal re-bind
v149 block 3,014,339 Internal re-bind
v154 block 3,308,611 Internal re-bind
v166–v194 · runtime versions skipped on chain (never deployed)
v195 block 3,791,350 Internal re-bind
v202 block 3,848,823 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
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
v241–v243 · runtime versions skipped on chain (never deployed)
v244 block 4,999,897 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
v363–v364 · runtime versions skipped on chain (never deployed)
v365 block 7,135,419 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
v403–v410 · runtime versions skipped on chain (never deployed)
v411 block 8,283,784 Internal re-bind Current

Runtime Info

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