Hyperparameters

weights_rate_limit

Minimum number of blocks a validator must wait between weight submissions on a subnet.

View as Markdown

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:

Rate-limit timeline

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

100 blocks ≈ 20 min

Reading and setting

btcli sudo get --netuid N --name weights_rate_limit

Root/governance-only — not settable by the subnet owner. The value is a plain block count.