Queried by: validatorsminersdelegatorsdevelopersanalytics
The 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
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 | key1 | u16 | key1 (u16) |
Stored Value
Vec<bool> Vec
value (Vec<bool>)
Relationships
Modified By
Related Events
Code Examples
import { ApiPromise, WsProvider } from "@polkadot/api";
import { stringCamelCase } from "@polkadot/util";
const provider = new WsProvider("wss://entrypoint-finney.opentensor.ai:443");
const api = await ApiPromise.create({ provider });
// Query ValidatorPermit storage
const key1 = 0;
const result = await api.query
[stringCamelCase("SubtensorModule")]
[stringCamelCase("ValidatorPermit")](
key1
);
console.log("ValidatorPermit:", result.toHuman());On-Chain Activity
Write Frequency
●●●●○○ Medium 100K–1M est. writes
100K–1M estimated writes
#38 most written storage item
Write Source Calls + Hooks
Modified by both user extrinsics and runtime hooks
As of block 7,429,232
Runtime Info
View Source- Pallet
- SubtensorModule
- Storage Kind
- Map
- First Version
- v101
- Current Version
- v393