ValidatorPermit
Storage Map v101 → v411 Changed in v411Whether a neuron has validator permit .
Explore chainThe Big Picture
Not everyone can be a validator. ValidatorPermit determines who can set weights and participate in consensus as a validator. Without a permit, you're a miner only - you receive weights but can't set them.
Why This Matters
Can this neuron validate? ValidatorPermit answers definitively. If false, they can't set weights and earn dividends. If true, they're a validator.
Example Scenario
Query ValidatorPermit(netuid=1, uid=5) returns true. UID 5 on subnet 1 can set weights and participate as a validator. Query for UID 47 returns false - they're a miner only.
Common Questions
- How do you get a validator permit?
- Based on stake. Top MaxAllowedValidators by stake on the subnet get permits. Permits are dynamic - gain enough stake and you get one, lose stake and you might lose it.
- Can miners become validators?
- Yes, if they accumulate enough stake to enter the top MaxAllowedValidators. The same neuron can transition between roles based on stake.
- What if I have a permit but don't set weights?
- You might lose dividends and could eventually lose your permit to more active validators. Permits come with responsibility.
Use Cases
- Check if a neuron can act as validator
- Verify validator status before delegating
- Build validator-only listings
- Debug weight-setting failures
- Research validator distribution on subnet
From Chain Metadata
MAP ( netuid ) --> validator_permit
Purpose & Usage
Purpose
Track validator authorization - only neurons with permits can set weights.
Common Query Patterns
- Query by netuid-uid
- Check validator eligibility
- Build validator listings
Query Keys
| # | Name | Type | Description |
|---|---|---|---|
| 1 | netuid | u16 | netuid (u16, hashed key component) |
Stored Value
validator_permit (Vec<bool>)
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 ValidatorPermit storage
const netuid = 1;
const result = await api.query.SubtensorModule.ValidatorPermit.getValue(netuid);
console.log("ValidatorPermit:", result);On-Chain Activity
100K–1M estimated writes
#38 most written storage item
Modified by both user extrinsics and runtime hooks
As of block 7,429,232
Version History
Runtime Info
View Source- Pallet
- SubtensorModule
- Storage Kind
- Map
- First Version
- v101
- Current Version
- v411