Child Hotkeys
This guide describes the child hotkeys feature and how to use it. With the child hotkeys, a subnet validator is no longer required to use the same delegate hotkey for every subnet they validate in. The subnet validator can use a separate child hotkey per subnet. The subnet validator does this by re-delegating a portion of their stake from their delegate hotkey to this separate child hotkey on a subnet. The originating delegate hotkey is called the parent hotkey.
The owner of this child hotkey would then validate in the subnet on behalf of the parent hotkey. The child hotkey would receive a percentage take
from the resulting dividends.
See the above diagram. Without the child hotkeys, a subnet validator's delegate hotkey would have to sign all the validation operations in all the subnets. This exposes the delegate hotkey in all the subnets. An attacker can get hold of the delegate hotkey from any one subnet in order to take over the validation operations with this hotkey, thereby crippling this subnet validator in all their subnets across the entire Bittensor network.
See the above diagram. With the child hotkeys, if an attacker steals a child hotkey, then only those subnets are at risk where this child hotkey is used as the delegate hotkey.
Benefits of child hotkeys
- Security for parent hotkeys: Re-delegating stake to multiple child hotkeys enhances the security of the parent hotkey. Each child hotkey can validate on a specific subnet using a different machine. The child hotkey would sign the validation operations on behalf of the parent hotkey: There is no need to use the parent hotkey on any of these subnets. As a consequence, the exposure of the parent hotkey can be minimized. The parent hotkey can even be moved to a secure location until it is needed, for example, to revoke a child hotkey.
- Validators can easily scale up: As Bittensor scales up towards hundreds of subnets, it is not practical for a single delegate to validate in every single subnet. With child hotkeys, a validator can easily make this feasible by re-delegating and offloading the validating operations to multiple child hotkeys.
- Increased bandwidth for a subnet owner: A validator can also re-delegate to a subnet owner's hotkey. The subnet owner would then do the validation work on the subnet, in exchange for a percentage
take
from the resulting dividends. A subnet owner can increase their access bandwidth into their own subnet in this way. - A child hotkey and a parent hotkey need not be owned by the same entity.
- A validator can re-delegate to a hotkey of any other validator on any subnet. After re-delegation, the hotkey that is the source of the stake is called parent hotkey and the hotkey that receives this re-delegated stake is called child hotkey.
"Child hotkey" and "parent hotkey" are terms of convenience
The terms "child hotkey" and "parent hotkey" are only terms of convenience. There is nothing inherently different about a "child hotkey" that separates it from a "parent hotkey". Neither have any special attributes compared to a normal hotkey.
Features
The child hotkey features are as follows:
- A hotkey must be registered on a subnet before it can be used as a parent hotkey. The hotkey can be registered on any subnet.
- A parent hotkey can have multiple child hotkeys. Similarly, a child hotkey can have more than one parent hotkey.
- A child hotkey can exist as a registered hotkey in multiple netuids simultaneously.
- IMPORTANT: For a given
netuid
, say,netuid 5
, a single parent hotkey can have at most five (5
) child hotkeys. Moreover, the same parent hotkey on a differentnetuid 11
can have another set of5
child hotkeys. Alternately, on thisnetuid 11
the same parent hotkey can also have the same (5
) child hotkeys that are in the netuid5
. - While setting the child hotkeys, the proportion field can have proportions that add to less than
1.0
. The proportion that was not assigned to the child hotkeys will remain with the parent hotkey. However, a proportion cannot be zero. A0
proportion value will result in an error.
Rate limits
The following rate limits apply for child hotkeys:
- A child hotkey's take rate can only be adjusted once per 30 days.
- One successful execution of
set_children
orrevoke_children
is allowed for every 720 blocks.
Installing
This feature is available in Bittensor 7.4.0 and later versions. See Install Bittensor.
Child hotkey commands
Use the btcli
command options described below to work with child hotkeys.
Setting a child hotkey
This command assigns a proportion of the parent hotkey's stake weight to the child hotkeys. Specific proportion for each child hotkey can be set. The parent hotkey must be registered on at least one netuid
. This netuid
need not be the same netuid
used in this command. Only the stake TAO of the parent hotkey can be assigned to the child hotkeys.
Usage
btcli stake set_children --netuid <netuid> --children <a list of SS58 child hotkeys> --proportions <a list of decimal numbers> --hotkey <parent hotkey> --wallet.name <coldkey>