Hyperparameters

adjustment_interval

Blocks between adjustments of the registration difficulty and burn cost (legacy cadence).

View as Markdown

Historically the cadence of Bittensor's registration-price controller: every adjustment_interval blocks, the chain compared registrations against target_regs_per_interval and moved the burn cost and PoW difficulty up or down. It matters today mostly as context — the current chain adjusts the burn price continuously instead.

How it works

The parameter lives in AdjustmentInterval storage (u16 block count, default 100 blocks ≈ 20 minutes, from SubtensorInitialAdjustmentInterval in runtime/src/lib.rs). In the current runtime, however, no adjustment logic reads it: the interval-based controller was replaced by a per-block mechanism in pallets/subtensor/src/subnets/registration.rs where each registration multiplies the burn by burn_increase_mult and the price decays every block with half-life burn_half_life, clamped to [min_burn, max_burn]. The value is still stored, returned by the subnet_hyperparameters query, and settable — the extrinsic (sudo_set_adjustment_interval in pallets/admin-utils/src/lib.rs) checks only that the subnet exists — but changing it has no effect on registration pricing. Even the root subnet's per-interval registration counter resets on the root epoch boundary (tempo), not on this interval.

The chart below replays the same registration burst under the old once-per-interval controller and the current per-block one — drag the interval to see what the cadence used to change.

Then vs now: registration pricing

The same demand burst (~2h of registrations, then quiet) priced two ways. Then (dotted steps): the price only moved once per adjustment_interval — drag it to make the steps wider or narrower. Now (solid): the price reacts per registration and decays per block; the interval no longer affects it.

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_interval

Root/governance only — sudo_set_adjustment_interval requires the root origin, so subnet owners cannot change it. The value is a plain block count (12-second blocks).