Skip to main content
SUBMIT A PRSUBMIT AN ISSUElast edit: Mar 18, 2025

Subnet Configuration (Hyperparameters)

Bittensor subnets are configured with a set of state variables (known as hyperparameters) that are recorded on the blockchain. Many of these can be accessed (viewed and set) using the Bittensor CLI btcli, but some of them must be checked or set using Subtensor extrinsics, as noted.

Note that the names of the variables may be slightly different in various representations, e.g. in btcli and in the chain codebase.

Manage hyperparams with btcli

note

Not all hyperparameters can be viewed and set with btcli.

View the hyperparameters

Anyone can view the parameters of any subnet.

Example

btcli subnet hyperparameters --netuid 19
Netuid: 19
Using the specified network test from config

Subnet Hyperparameters
NETUID: 19 (inference) - Network: test


HYPERPARAMETER VALUE NORMALIZED
────────────────────────────────────────────────────────────────────────
rho 10 10
kappa 32767 0.4999923705
immunity_period 5000 5000
min_allowed_weights 1 1
max_weights_limit 65535 65535
tempo 99 99
min_difficulty 10000000 5.421010862e-13
max_difficulty 18446744073709551615 1
weights_version 0 0
weights_rate_limit 100 100
adjustment_interval 360 360
activity_cutoff 5000 5000
registration_allowed True True
target_regs_per_interval 1 1
min_burn 500000 τ 0.0005
max_burn 100000000000 τ 100.0000
bonds_moving_avg 900000 4.878909776e-14
max_regs_per_block 1 1
serving_rate_limit 50 50
max_validators 64 64
adjustment_alpha 58000 3.1441863e-15
difficulty 10000000 5.421010862e-13
commit_reveal_period 1 1
commit_reveal_weights_enabled False False
alpha_high 58982 0.9000076295
alpha_low 45875 0.7000076295
liquid_alpha_enabled False False
────────────────────────────────────────────────────────────────────────
tip

btcli does not include all of the chain state variables, some of which can only be accessed through the Bittensor Python SDK or directly through extrinsic calls.

Set hyperparameters

Use the below command to set these hyperparameters.

tip

Only the coldkey that created the subnet can set the hyperparameters.

btcli sudo set

Subnet Hyperparameters

The following variables are configurable by the subnet creator.

Permissions required to set: Subnet Creator

ActivityCutoff

Type: u16

Default: 5000

btcli setter: btcli sudo set --param activity_cutoff

Setter extrinsic: sudo_set_activity_cutoff

Permissions required to set: Subnet Creator

Description:

The number of blocks for the stake to become inactive for the purpose of epoch in Yuma Consensus. If a validator doesn't submit weights within the first ActivityCutoff blocks of the epoch, it will not be able to participate until the start of the next epoch.

AdjustmentAlpha

Type: u64

Default: 0

btcli setter: btcli sudo set --param adjustment_alpha

Setter extrinsic: sudo_set_activity_cutoff

Permissions required to set: Subnet Creator

Description: AdjustmentAlpha is the rate at which difficulty and burn are adjusted up or down.

AdjustmentInterval

Type: u16

Default: 360

btcli setter: btcli sudo set --param adjustment_interval

Setter extrinsic: sudo_set_adjustment_interval

Permissions required to set: Subnet Creator

Description:

AdjustmentInterval is number of blocks that pass between difficulty and burn adjustments. So, I was wrong about "next block" when I said that if root sets difficulty outside of range, it will get back in range. Difficulty will get back in range at most after AdjustmentInterval blocks pass.

BondsMovingAverage

Type:

Default:

btcli setter: bonds_moving_avg

btcli setter: btcli sudo set --param sudo_set_bonds_moving_average

Permissions required to set: Subnet Creator

Description:

The moving average of bonds. The higher bonds yield to higher dividends for validators.

See Yuma Consensus: bonding mechanics.

BondsPenalty

Type: u16

Default: 0

btcli setter: none

Setter extrinsic: sudo_set_bonds_penalty

Permissions required to set: root

Description: The magnitude of the penalty subtracted from weights for exceeding consensus, for a specific subnet.

See Yuma Consensus: Penalizing out-of-consensus bonds.

CommitRevealPeriod

Type: u16

Default: 1

btcli setter: btcli sudo set --param commit_reveal_period

Setter extrinsic: sudo_set_commit_reveal_weights_interval

Permissions required to set: Subnet Creator

Description:

How long, in blocks, the consensus weights for a subnet remain time-lock encrypted, preventing weight-copying.

See Commit Reveal

CommitRevealWeightsEnabled

Type: Boolean

Default: false

btcli setter: yes

Setter extrinsic: sudo_set_commit_reveal_weights_enabled

Permissions required to set: Subnet Creator

Description:

Enables Commit Reveal

Difficulty

Type: u64

Default: 10000000

btcli setter: none

Setter extrinsic: sudo_set_difficulty

Permissions required to set: Root

Description:

Current dynamically computed value for the proof-of-work (POW) requirement for POW hotkey registration. Decreases over time but increases after new registrations, between the min and the maximum set by the subnet creator. see [#max-difficulty].

ImmunityPeriod

Type: u16

Default: 5000

btcli setter: yes

Setter extrinsic: sudo_set_immunity_period

Permissions required to set: Subnet creator

Description:

The number of blocks after registration when a miner is protected from deregistration

Kappa

Type: u16

Default: 32767 ( or approximately 0.5 normalized )

btcli setter: yes

Setter extrinsic: sudo_set_kappa

Permissions required to set: Subnet creator

Description:

The consensus majority ratio: The weights set by validators who have lower normalized stake than Kappa are not used in calculating consensus, which affects ranks, which affect incentives.

the consensus threshold for bond-clipping during Yuma Consensus

LiquidAlphaEnabled

Type: Bool

Default: False

btcli setter: btcli sudo set --param liquid_alpha_enabled

Setter extrinsic: sudo_set_liquid_alpha_enabled

Permissions required to set: SN creator

Description:

Enables the liquid alpha feature.

MaxAllowedValidators

Type: u16

Default: 64

btcli setter: btcli sudo set --param max_validators

Setter extrinsic: sudo_set_max_allowed_validators

Permissions required to set: Root

Description:

Maximum validators on a subnet.

MaxBurn

Type: u64

Default: 100000000000 normalized to 100.0000(τ)

btcli setter: btcli sudo set --param max_burn

Setter extrinsic: sudo_set_max_burn

Permissions required to set: Subnet creator

Description:

The maximum of the dynamic range for TAO cost of burn registration on the subnet.

MaxDifficulty

Type: u64

Default: 18446744073709551615 normalized to 1

btcli setter: btcli sudo set --param min_difficulty

Setter extrinsic:

Permissions required to set: Subnet creator

Description:

The maximum of the dynamic range for difficulty of proof-of-work registration on the subnet.

MaxRegistrationsPerBlock

Type: u16

Default: 1

btcli setter: btcli sudo set --param max_regs_per_block

Setter extrinsic: sudo_set_max_registrations_per_block

Permissions required to set: Subnet creator

Description:

Maximum neuron registrations per block. Note: Actual limit may be lower, as there is also per interval limit TargetRegistrationsPerInterval.

MaxWeightsLimit

Type: u16

Default: 65535

btcli setter: btcli sudo set --param max_weights_limit

Setter extrinsic: sudo_set_max_weight_limit

Permissions required to set: Subnet creator

Description: The limit for the u16-normalized weights. If some weight is greater than this limit when all weights are normalized so that maximum weight is 65535, then it will not be used.

MinAllowedWeights

Type: u16

Default: 1

btcli setter: btcli sudo set --param min_allowed_weights

Setter extrinsic: sudo_set_min_allowed_weights

Permissions required to set: Subnet creator

Description: Minimum number of weights for a validator to set when setting weights.

MinBurn

Type: u64

Default: 500000 normalized to 0.0005(τ)

btcli setter: btcli sudo set --param min_burn

Setter extrinsic: sudo_set_min_burn

Permissions required to set: Subnet creator

Description:

The minimum of the range of the dynamic burn cost for registering on the subnet.

MinDifficulty

Type: u64

Default: 10000000 normalized to 5.421010862e-13

btcli setter: btcli sudo set --param min_difficulty

Setter extrinsic: sudo_set_min_difficulty

Permissions required to set: Subnet creator

Description:

The minimum of the range of the proof-of-work for registering on the subnet

NetworkPowRegistrationAllowed

Type: Boolean

Default: False

btcli setter: none

Setter extrinsic: sudo_set_network_pow_registration_allowed

Permissions required to set: Subnet creator

Description:

NetworkPowRegistrationAllowed is a flag that toggles PoW registrations on a subnet

NetworkRateLimit

Type: u64

Default: 7200

btcli setter: none

Setter extrinsic:

Permissions required to set: root

Description:

Rate limit for network registrations expressed in blocks

NetworkRegistrationAllowed

Type: Boolean

Default: True

btcli setter: btcli sudo set --param registration_allowed

Setter extrinsic: sudo_set_network_registration_allowed

Permissions required to set: Subnet creator

Description:

NetworkRegistrationAllowed determines if burned registrations are allowed. If both burned and pow registrations are disabled, the subnet will not get emissions.

Rho

Type: u16

Default: 10

btcli setter: yes

Setter extrinsic: sudo_set_rho

Permissions required to set: Subnet creator

Description:

Deprecated.

ServingRateLimit

Type: u16

Default: 50

btcli setter:

Setter extrinsic: sudo_set_serving_rate_limit

Permissions required to set: Subnet creator

Description:

Rate limit for calling serve_axon and serve_prometheus extrinsics used by miners.

TargetRegistrationsPerInterval

Type: u16

Default: 1

btcli command: btcli sudo set --param target_regs_per_interval

Setter extrinsic: sudo_set_target_registrations_per_interval

Permissions required to set: root

Description:

Maximum number of neuron registrations allowed per interval. Interval is AdjustmentInterval

Tempo

Type: u16

Default: 360

btcli setter: btcli sudo set --param tempo

Setter extrinsic: sudo_set_tempo

Permissions required to set: root

Description:

Length of subnet tempo in blocks. See Emission

ToggleTransfer

Type: Boolean

Default: True

btcli setter: none

Setter extrinsic: sudo_set_toggle_transfer

Permissions required to set: Subnet creator

Description:

Allows/disallows transfer of stake between coldkeys.

WeightsVersion

Type: u16

Default: 0

btcli setter: btcli sudo set --param weights_version

Setter extrinsic: sudo_set_weights_version_key

Permissions required to set: Subnet Creator

Description:

If the version key specified in set_weights extrinsic is lower than this system-wide setting (WeightsVersionKey), the transaction will fail. This is a fool-proofing protection for validators to update, not a security feature.

WeightsRateLimit / CommitmentRateLimit

Type: u12

Default: 100

btcli setter: btcli sudo set --param weights_rate_limit

Setter extrinsic:

Permissions required to set: Root

Description:

How long, in blocks, a validator must wait between weight commits on a subnet.

Global/Root State Variables

The following variables are global and/or can only be configured with root permissions, which are held by a triumvirate of Opentensor Foundation employees. They are listed here for reference.

ColdkeySwapScheduleDuration

Type: u12

Default:

btcli setter: no

Setter extrinsic: sudo_set_coldkey_swap_schedule_duration

Permissions required to set: Root

Description:

The duration in blocks of the waiting period before a coldkey swap.

See Rotate/Swap your Coldkey

Issuance

Type: u64

Description: Refers to total issuance, the amount of TAO in circulation.

LockReductionInterval

Type: u64

Default: 14 * 7200

btcli setter:

Setter extrinsic:

Permissions required to set: root

Description:

The number of blocks that need to pass in order for the network lock cost to half.

sudo_set_lock_reduction_interval| root

NetworkMinLockCost

btcli setter: none

Setter extrinsic: sudo_set_network_min_lock_cost

Permissions required to set: root

Description:

NetworkMinLockCost is the minimum TAO to pay for subnet registration

StakeThreshold

Type: u12

Default: 1000

btcli setter: none

Setter extrinsic: sudo_set_stake_threshold

Permissions required to set: root

Description:

The minimum stake required for validating. Currently 1000

TxDelegateTakeRateLimit

Type: u64

Default: 216000

btcli setter:

Setter extrinsic:

Permissions required to set: root

Description:

Rate limit of how frequently can a delegate take be increased

DissolveNetworkScheduleDuration

Deprecated

EmissionValue

Description:

Deprecated. replaced with SubnetAlphaInEmission, SubnetAlphaOutEmission, and SubnetTaoInEmission.

EvmChainId

Permissions required to set: root

Description:

The Chain ID. 945 for Bittensor mainnet, a.k.a. Finney.

TxRateLimit

Type: u64

Default: 1000

btcli setter: none

Setter extrinsic: sudo_set_tx_rate_limit

Permissions required to set: root

Description:

Rate limit for swap_hotkey extrinsic.

SubnetOwnerCut

btcli setter: none

Setter extrinsic: sudo_set_subnet_owner_cut

Permissions required to set: root

Description:

The ratio of all subnet alpha emissions that is given to subnet owner as stake. (Global, fixed at 18%.)