Hyperparameters
min_difficulty
Lower bound for the PoW registration difficulty controller; u64::MAX pins difficulty at maximum, disabling PoW registration.
min_difficulty is the floor under
difficulty, the proof-of-work target
for PoW neuron registration. However cheap registrations get, the
difficulty controller never lets the PoW price fall below this value.
Setting it to u64::MAX pins difficulty at maximum, which effectively
disables PoW registration outright. Miners care because it fixes the
minimum compute cost of a PoW slot; root/governance sets it.
How it works
Storage is MinDifficulty in
pallets/subtensor/src/lib.rs, read and
written by
get_min_difficulty /
set_min_difficulty
(pallets/subtensor/src/utils/misc.rs). In the classic controller,
difficulty was rescaled each adjustment interval by how far registrations
ran over or under target, then clamped to the
[min_difficulty, max_difficulty] band — so with quiet demand,
difficulty decayed until it sat on this floor.
The chain-wide migration
migrate_set_min_difficulty
(pallets/subtensor/src/migrations/migrate_set_min_difficulty.rs) set the
floor to 10,000,000 on every subnet, matching the runtime default
(SubtensorInitialMinDifficulty in
runtime/src/lib.rs).
The subnet-owner-controlled floor for dynamic PoW pricing. Quiet periods decay difficulty to this floor. The effective minimum is at least one; an owner maximum below it cannot override it.
See difficulty for the active PoW controller and its shared settings.
Reading and setting
btcli sudo get --netuid N --name min_difficultySubnet owner or root/governance:
sudo_set_min_difficulty
in the AdminUtils pallet takes a raw u64. Owner changes use the standard
per-parameter cooldown and admin freeze window, and can be delegated through
an Owner proxy. Root remains able to override the owner cooldown.
To enable PoW on a subnet whose floor is pinned at u64::MAX, lower
min_difficulty and then set difficulty to the desired starting value.
Both calls can be submitted atomically with Utility.batch_all; changing
one parameter does not consume the other parameter's cooldown.
Related
difficulty ·
max_difficulty ·
network_pow_registration_allowed ·
target_regs_per_interval ·
adjustment_interval ·
min_burn