Transactions
set-children
Assign child hotkeys with stake-weight proportions on a subnet.
Childkeys let a parent hotkey delegate a fraction of its stake weight to
other hotkeys on one subnet — commonly used to split validation duties or
point stake at a separate validating key without moving the stake itself.
Each entry in children is a pair of proportion and hotkey ss58, where
proportion is a u64 share of u64::MAX; the proportions must not sum past
the whole. The call replaces the full child set, so pass an empty list to
revoke all children. Signed by the coldkey that owns the parent hotkey,
and subject to the chain's childkey rate limit.
Chain guards: not allowed on the root subnet; at most 5 children per hotkey per subnet; duplicate children are rejected; a hotkey that is a parent of this hotkey cannot be added as its child (relations stay bipartite); and the parent hotkey needs a minimum own stake (StakeThreshold) unless it is the subnet-owner hotkey. Changes take effect after a chain-defined cooldown, except on subnets whose subtoken is not yet enabled, where they apply immediately.
| Signer | Pallet | Wraps |
|---|---|---|
coldkey | SubtensorModule | SubtensorModule.set_children |
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
netuid | integer | yes | Subnet on which the child relationships apply. |
children | array | yes | JSON list of proportion-and-hotkey pairs; each proportion is a u64 share of u64::MAX of the parent's stake weight delegated to that child. An empty list revokes all children. |
hotkey_ss58 | string | no | Hotkey the operation applies to. |
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-children \
--netuid <int> \
--children <a,b,c> --dry-run
btcli tx set-children \
--netuid <int> \
--children <a,b,c> -w my_coldkeyPython
import bittensor as sub
from bittensor.wallet import Wallet
wallet = Wallet(name="my_coldkey", hotkey="my_hotkey")
intent = sub.SetChildren(netuid=1, children=[...])
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_children", {...}, wallet)