Hyperparameters
commit_reveal_weights_enabled
Whether validators must submit weights through commit-reveal, hiding them from copiers until the reveal.
commit_reveal_weights_enabled decides how weights reach the chain. When on
(the default for new subnets), validators must commit a hidden form of their
weights first and the actual values only become public an epoch or more later
— so weight-copying validators cannot free-ride on others' scoring work by
mirroring their submissions in the same epoch.
How it works
The flag flips the accepted submission path. With it on, the plain
set_weights extrinsic is rejected outright with CommitRevealEnabled
(pallets/subtensor/src/macros/dispatches.rs); validators must instead
commit — either a salted hash (revealed later by a matching
reveal_weights call) or a timelock-encrypted payload that the chain
auto-decrypts at a drand round, no reveal transaction needed. With it
off, commits are rejected with CommitRevealDisabled and plain
set_weights is the only path.
The reveal delay is governed by
commit_reveal_period, and the
weights_rate_limit cooldown
applies at commit time rather than set time. Revealed weights pass through
the full set_weights validation (length, cap, version key) when they land.
Validators do not need to branch on this flag themselves: btcli tx set-weights (the set_weights intent) reads it and automatically dispatches
to plaintext set_weights or a timelocked commit, so the same command works
in either regime.
With the flag on, this is the only path weights can take: commit hidden, wait, reveal. Plain set_weights is rejected with CommitRevealEnabled; turn the flag off and commits are rejected instead.
e+0
commit
e+1
reveal
e+2
expired
e+3
expired
e+4
expired
e+5
expired
e+6
expired
e+7
expired
Reveal epoch
commit epoch + 1
valid in exactly this epoch
Hidden for
≈ 360 blocks
≈ 72 min at tempo 360, 12s blocks
Allowed range
1 – 100 epochs
enforced by set_reveal_period
Reading and setting
btcli sudo get --netuid N --name commit_reveal_weights_enabledOwner-settable; the value is a flag (true/false or 1/0):
btcli sudo set --netuid N --name commit_reveal_weights_enabled --value trueRelated
commit_reveal_period— how long weights stay hiddenweights_rate_limit— cooldown applied at commit timeweights_version— version gate on revealed weightsmin_allowed_weights— floor on submission size in either mode