Transactions

set-children

Assign child hotkeys with stake-weight proportions on a subnet.

View as Markdown

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.

SignerPalletWraps
coldkeySubtensorModuleSubtensorModule.set_children

Parameters

ParameterTypeRequiredDescription
netuidintegeryesSubnet on which the child relationships apply.
childrenarrayyesJSON 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_ss58stringnoHotkey 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_coldkey

Python

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)