Hyperparameters

adjustment_alpha

Smoothing factor of the legacy difficulty/burn adjustment, stored as u64 (u64::MAX = 1.0).

View as Markdown

The smoothing factor of Bittensor's original registration-price controller. When the chain adjusted burn and PoW difficulty once per adjustment_interval, this value blended the old price into the new one — an exponential moving average where higher alpha meant slower movement. Owners still see it in the hyperparameter listing; on the current chain it is inert.

How it works

The value lives in AdjustmentAlpha storage as a u64 fraction where u64::MAX encodes 1.0. The mainnet default is 0 (SubtensorInitialAdjustmentAlpha in runtime/src/lib.rs) — in the legacy formula next = alpha × current + (1 − alpha) × proposed, zero meant no weight on the previous value, i.e. no smoothing at all.

In the current runtime the legacy interval controller is gone, and nothing reads this value outside of the RPC/metagraph views: registration pricing is handled per block in pallets/subtensor/src/subnets/registration.rs, where each registration bumps the burn by burn_increase_mult and decay with half-life burn_half_life pulls it back toward min_burn. The setter (sudo_set_adjustment_alpha in pallets/admin-utils/src/lib.rs) remains callable by the subnet owner, subject only to the owner rate limit and admin freeze window — but setting it changes nothing about how registrations are priced.

The chart below replays the same registration burst under the old interval-EMA controller (where alpha mattered) and the current continuous one (where it does not).

Then vs now: registration pricing

The same demand burst (~2h of registrations, then quiet) priced two ways. Then (dotted steps): once per interval the price jumped to an EMA-blended value — adjustment_alpha is the weight on the old price, so higher alpha means slower steps. Now (solid): every registration bumps the price and it decays every block; alpha changes nothing on this curve.

Then (dotted)

steps per interval

next = α·old + (1−α)·old·(regs+2)/4

Now (solid)

moves every block

×1.26 per registration, half-life 360 blocks

These sliders affect

only the dotted line

On the current chain both values are stored but unused.

0.00
100 blocks (~20m)

Reading and setting

btcli sudo get --netuid 12 --name adjustment_alpha
btcli sudo set --netuid 12 --name adjustment_alpha --value 0.5

Settable by the subnet owner or root. A value with a decimal point is a 0..1 fraction (0.5 = half weight on the previous value); a plain integer is the raw u64 (u64::MAX = 1.0).