Hyperparameters

min_childkey_take

Per-subnet floor on the take a childkey may charge its parent hotkeys.

View as Markdown

Sets the minimum take a childkey can charge on this subnet. It matters to validators running parent–child hotkey setups (set-children): the take is the share of child-earned dividends the childkey keeps before passing the rest back to its parents. A subnet owner can raise this floor to stop childkeys from undercutting each other to zero.

How it works

The value is stored per subnet as a PerU16 fraction (65535 = 100%). The chain combines it with the global, root-set minimum: the effective floor is the greater of the two, so a subnet can only make the global minimum stricter, never looser. Both defaults are currently 0.

The floor is enforced in two places. Setting a take via set-childkey-take rejects values below the effective floor (or above the global maximum, 11796/65535 ≈ 18%) with InvalidChildkeyTake. And every read of a childkey's take clamps up to the floor — so raising it immediately re-prices existing childkeys that were set lower, without anyone resubmitting.

The setter itself bounds the floor to the [global min, global max] range, so an owner cannot set a floor above 18%.

Raise the floor below and watch an existing childkey's take get pushed up:

Allowed childkey-take window

The shaded band is the range set-childkey-take accepts: from the effective floor — max(global min_childkey_take, this subnet's floor) — up to the global max of 11796/65535 ≈ 18%. The marker is one childkey's stored take; when the floor rises past it, every read clamps the take up to the floor, and re-submitting the old value is rejected with InvalidChildkeyTake.

allowed
0%5%10%15%max
○ stored take● take as read

Effective floor

0.0%

max(global min, subnet floor)

Childkey take (as read)

3.0%

Stored value, above the floor

Re-setting stored value

accepted

Inside the allowed window

0.0%
3.0%

Reading and setting

btcli sudo get --netuid 12 --name min_childkey_take
btcli sudo set --netuid 12 --name min_childkey_take --value 0.05

Settable by the subnet owner or root. The value is a fraction between 0 and 1 written with a decimal point (0.05 = 5%, stored as 3276/65535). The get command reports the effective floor — the max of global and per-subnet values.