Hyperparameters
max_difficulty
PoW difficulty ceiling under independent PoW pricing; the subnet minimum takes precedence.
max_difficulty is the ceiling over
difficulty, the proof-of-work target
for PoW neuron registration. However hot registration demand runs, the
controller caps the price at this value unless it is below the team-controlled
minimum, which takes precedence. u64::MAX permits the full u64 range. Subnet owners tune it to cap how expensive a PoW slot can become
during registration rushes.
How it works
Storage is MaxDifficulty in
pallets/subtensor/src/lib.rs, accessed via
get_max_difficulty /
set_max_difficulty
(pallets/subtensor/src/utils/misc.rs). In the classic controller,
difficulty was rescaled each adjustment interval by registration pressure
against the target rate, then clamped to the
[min_difficulty, max_difficulty] band — sustained over-target demand
walked difficulty up until it hit this ceiling. The mainnet default is
u64::MAX / 4 (SubtensorInitialMaxDifficulty
in runtime/src/lib.rs).
The owner-controlled ceiling for dynamic PoW pricing. Only successful PoW registrations increase difficulty using the shared multiplier; per-block decay uses the shared half-life. The subnet minimum takes precedence if this maximum is configured below it.
See difficulty for the active PoW controller and its shared settings.
Reading and setting
btcli sudo get --netuid N --name max_difficultyOwner-settable (the AdminUtils extrinsic
sudo_set_max_difficulty
accepts
the subnet owner or root, inside the admin window and subject to the owner
rate limit):
btcli sudo set --netuid N --name max_difficulty --value 4611686018427387903The value is a raw u64 difficulty, no human form.
Related
difficulty ·
min_difficulty ·
network_pow_registration_allowed ·
target_regs_per_interval ·
adjustment_interval ·
max_burn