Hyperparameters
weights_rate_limit
Minimum number of blocks a validator must wait between weight submissions on a subnet.
weights_rate_limit (on chain: WeightsSetRateLimit) is the cooldown between
a validator's weight submissions, measured in 12-second blocks. The default is
100 blocks (20 minutes). It keeps validators from churning weights every
block, which would bloat chain state and make consensus inputs noisy.
How it works
The chain tracks each UID's last submission block (LastUpdate).
check_rate_limit (pallets/subtensor/src/subnets/weights.rs) passes when
current_block - last_update >= weights_rate_limit; a UID that has never
submitted always passes. Too-frequent calls fail with SettingWeightsTooFast.
Which call is limited depends on the commit-reveal setting. With commit-reveal
off, the limit applies to set_weights itself. With it on, the limit applies
to the commit (failing with CommittingWeightsTooFast), and the reveal is
exempt — the commit already paid the cooldown, and updates LastUpdate at
commit time.
Because LastUpdate also feeds the activity
cutoff, the rate limit bounds how
fresh a validator's weights can be — a subnet's cutoff should comfortably
exceed its rate limit.
btcli tx set-weights (the set_weights intent) preflights this check: it
reads LastUpdate before signing and, if you are inside the cooldown, fails
immediately with the number of blocks (and approximate seconds) left to wait
instead of submitting a doomed extrinsic.
Drag the limit to see which submission attempts survive the cooldown:
Each bar is a set_weights attempt; its height is the number of blocks since the last accepted submission. Attempts reaching the dashed line (gap ≥ weights_rate_limit) pass and reset the clock; shorter ones fail with SettingWeightsTooFast. A UID that has never submitted always passes.
weights_rate_limit
100 blocks
≈ 20 min at 12s blocks
Accepted
3 / 8 attempts
dark bars on the timeline
Rejected with
SettingWeightsTooFast
inside the cooldown window
Reading and setting
btcli sudo get --netuid N --name weights_rate_limitRoot/governance-only — not settable by the subnet owner. The value is a plain block count.
Related
commit_reveal_weights_enabled— decides whether the limit hits set or commitmin_allowed_weights— the floor on submission sizemax_weights_limit— cap on any single weightactivity_cutoff— staleness window fed by the same LastUpdatetempo— how often submitted weights are consumed