Hyperparameters

max_difficulty

PoW difficulty ceiling under independent PoW pricing; the subnet minimum takes precedence.

View as Markdown

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_difficulty

Owner-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 4611686018427387903

The value is a raw u64 difficulty, no human form.

difficulty · min_difficulty · network_pow_registration_allowed · target_regs_per_interval · adjustment_interval · max_burn