Transactions

commit-weights

Timelock-encrypt and commit weights, forcing the commit-reveal path.

View as Markdown

Encrypts the weights with drand timelock encryption and submits the ciphertext; the weights stay hidden until the chain auto-decrypts and applies them at the reveal round (no separate reveal call is needed). Hiding weights until the round closes prevents other validators from copying them. Signed by the hotkey, with the same preflight, conforming, and rate-limit behavior as set_weights. Use set_weights instead unless you need to force the commit path regardless of the subnet's commit-reveal setting.

SignerPalletWraps
hotkeySubtensorModuleSubtensorModule.commit_timelocked_mechanism_weights

Parameters

ParameterTypeRequiredDescription
netuidintegeryesSubnet whose miners the weights score.
uidsarray of integernoMiner UIDs being weighted, as a list parallel to weights. Omit when weights is given as a uid-to-weight mapping.
weightsarray of numbernoRelative weight per miner: either a JSON object mapping uid to weight, or a list parallel to uids. Values are relative, not absolute; they are clipped to the subnet's max-weight limit, normalized, and quantized before submission.
mechidintegernoMechanism index within the subnet. 0 is the default (and for most subnets the only) mechanism.
version_keyintegernoWeights version key checked against the subnet's required version. Leave 0 unless the subnet owner requires a specific value.
commit_reveal_versionintegernoCommit-reveal protocol version to tag the commit with. Keep the default unless the subnet requires an older protocol.

Address parameters (--hotkey, --coldkey, --dest, ...) accept a raw ss58 address, an address-book or proxy-book name, or a local wallet/hotkey name.

CLI

Preview with --dry-run (shows fee, effects, and policy result without submitting), then submit:

btcli tx commit-weights \
  --netuid <int> --dry-run
btcli tx commit-weights \
  --netuid <int> -w my_coldkey

Python

import bittensor as sub
from bittensor.wallet import Wallet

wallet = Wallet(name="my_coldkey", hotkey="my_hotkey")
intent = sub.CommitWeights(netuid=1)

async with sub.Client("finney") as client:
    plan = await client.plan(intent, wallet)   # fee, effects, policy — no submission
    result = await client.execute(intent, wallet)
    if not result.success:
        print(result.error.code, result.error.remediation)

Or build it by op name, as an agent would:

await client.execute_tool("commit_weights", {...}, wallet)