Transactions
set-weights
Set validator weights, auto-selecting plaintext or commit-reveal.
The one entry point validators need for scoring miners: it conforms the
weights to the subnet's hyperparameters (max-weight clip, u16 quantization,
minimum weight count) and submits via whichever path the subnet runs — a
plain set_weights when commit-reveal is off, or a timelock-encrypted
commit (auto-revealed by the chain at the drand reveal round) when it is on.
Signed by the hotkey, which must be registered on the subnet. Before
signing it preflights registration and the rate limit, so those failures
are caught fast with the same error the chain would return; the rate-limit
error says how many blocks to wait. The chain additionally enforces checks
that are not preflighted: the hotkey must hold the minimum stake to set
weights, must hold a validator permit to set non-self weights (the subnet
owner is exempt), and version_key must not be older than the subnet's
required version. Prefer this over commit_weights/reveal_weights
unless you specifically need to force one path.
| Signer | Pallet | Wraps |
|---|---|---|
hotkey | SubtensorModule | SubtensorModule.set_mechanism_weights, SubtensorModule.commit_timelocked_mechanism_weights |
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
netuid | integer | yes | Subnet whose miners the weights score. |
uids | array of integer | no | Miner UIDs being weighted, as a list parallel to weights. Omit when weights is given as a uid-to-weight mapping. |
weights | array of number | no | Relative 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. |
mechid | integer | no | Mechanism index within the subnet. 0 is the default (and for most subnets the only) mechanism. |
version_key | integer | no | Weights version key checked against the subnet's required version. Leave 0 unless the subnet owner requires a specific value. |
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 set-weights \
--netuid <int> --dry-run
btcli tx set-weights \
--netuid <int> -w my_coldkeyPython
import bittensor as sub
from bittensor.wallet import Wallet
wallet = Wallet(name="my_coldkey", hotkey="my_hotkey")
intent = sub.SetWeights(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("set_weights", {...}, wallet)