# set-children (/docs/tx/set-children)

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 [#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 [#cli]

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

```bash
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 [#python]

```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:

```python
await client.execute_tool("set_children", {...}, wallet)
```
