Hyperparameters

commit_reveal_weights_enabled

Whether validators must submit weights through commit-reveal, hiding them from copiers until the reveal.

View as Markdown

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.

Commit-reveal timeline

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

1 epoch

Reading and setting

btcli sudo get --netuid N --name commit_reveal_weights_enabled

Owner-settable; the value is a flag (true/false or 1/0):

btcli sudo set --netuid N --name commit_reveal_weights_enabled --value true