Queried by: validatorsdelegatorsdevelopersanalytics
The Big Picture
The protocol limits validator commissions. MaxDelegateTake prevents validators from charging unreasonable fees. This protects the delegation market - without caps, validators could charge 99% leaving almost nothing for delegators.
Why This Matters
Starting a validator? Your take rate can't exceed this maximum. Protects delegators from predatory fees and ensures competitive delegation market.
Example Scenario
Query MaxDelegateTake() returns 1800 (18%). No validator can charge more than 18% take. Attempting to set higher will fail.
Common Questions
- Can this change?
- It's a protocol parameter. Changes would require governance approval as it affects all validators and delegators.
- Why 18% (or whatever the current value)?
- Balances validator compensation with delegator returns. Low enough to attract delegators, high enough to compensate validator operations.
Use Cases
- Check maximum allowed take when becoming a delegate
- Build UI sliders with correct max bounds
- Verify validator take rates are within protocol limits
- Compare take rate headroom for validators
- Research delegation economics
From Chain Metadata
ITEM ( default_delegate_take )
Purpose & Usage
Purpose
Cap on how much delegates can charge - protects delegators from excessive fees.
Common Query Patterns
- Single value query
- Verify take rate is within bounds
- Build take rate pickers with correct limits
Notes
- Value is in basis points
Stored Value
default_delegate_take (u16)
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 MaxDelegateTake storage (no keys - plain value)
const result = await api.query.SubtensorModule.MaxDelegateTake.getValue();
console.log("MaxDelegateTake:", result);Version History
v195 block 3,791,350 Added
v220–v232 · runtime versions skipped on chain (never deployed)
v233 block 4,920,350 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
- Plain
- First Version
- v195
- Current Version
- v411