# Subnet parameters

In addition to miners and validator code, each subnet has a set of hyperparameters that define how it will interact with the bittensor network.

_Source: https://beta.taostats.io/docs/concepts/subnets/subnet-parameters_

_Last reviewed: 2026-09-15_

In addition to miners and validator code, each subnet has a set of hyperparameters that define how it will interact with the bittensor network.

### Full hyperparameter reference

The canonical, current list of subnet hyperparameters (as of the latest chain release). **Owner-settable** shows whether the subnet owner can change the value themselves (`✅ yes`) or whether it is `sudo only` (governance / sudo-controlled). Read the live values for a subnet with `btcli sudo get --netuid <N>`; owners change the owner-settable ones with `btcli sudo set`.

> [!NOTE]
> This table is reconciled against the official chain docs ([RaoFoundation/subtensor](https://github.com/RaoFoundation/subtensor)) and regenerated on each chain release. If a parameter here doesn't match what `btcli` returns, the chain is the source of truth — flag it and we'll re-sync.

| Hyperparameter | Unit | Owner-settable | What it controls |
|---|---|---|---|
| `rho` | integer | ✅ yes | legacy; stored but not used by the current epoch |
| `kappa` | fraction (u16, 65535 = 1.0) | sudo only | consensus majority-stake threshold |
| `immunity_period` | blocks (12s) | ✅ yes | prune-immunity window for new neurons |
| `min_allowed_weights` | integer | ✅ yes | minimum weights per submission |
| `max_weights_limit` | fraction (u16, 65535 = 1.0) | fixed | fixed at 65535 (no cap); not settable |
| `tempo` | blocks (12s) | ✅ yes | blocks per consensus epoch |
| `min_difficulty` | PoW difficulty (u64) | sudo only | PoW registration difficulty floor |
| `max_difficulty` | PoW difficulty (u64) | ✅ yes | PoW registration difficulty ceiling |
| `difficulty` | PoW difficulty (u64) | sudo only | current PoW registration difficulty |
| `weights_version` | integer | ✅ yes | minimum version key for set_weights |
| `weights_rate_limit` | blocks (12s) | sudo only | wait between weight submissions |
| `adjustment_interval` | blocks (12s) | sudo only | legacy; no longer used for subnet registration pricing |
| `activity_cutoff` | blocks (12s) | ✅ yes | legacy absolute value; superseded by `activity_cutoff_factor` |
| `activity_cutoff_factor` | integer | ✅ yes | activity cutoff, per-mille of tempo |
| `registration_allowed` | flag | sudo only | new neuron registrations allowed |
| `network_pow_registration_allowed` | flag | disabled | PoW registration is removed; setting it always fails |
| `target_regs_per_interval` | integer | sudo only | legacy on subnets; only the root network still enforces it |
| `min_burn` | TAO amount in rao | ✅ yes | burned-registration cost floor |
| `max_burn` | TAO amount in rao | ✅ yes | burned-registration cost ceiling |
| `bonds_moving_avg` | fraction (1,000,000 = 1.0) | ✅ yes | bonds EMA smoothing factor |
| `max_regs_per_block` | integer | sudo only | per-block registration cap |
| `serving_rate_limit` | blocks (12s) | ✅ yes | cooldown between axon serve calls |
| `max_validators` | integer | sudo only | top-stake validator permit cap |
| `adjustment_alpha` | fraction (u64, u64::MAX = 1.0) | ✅ yes | legacy; no longer used for subnet registration pricing |
| `commit_reveal_period` | epochs (tempos) | ✅ yes | weight commit-to-reveal delay |
| `commit_reveal_weights_enabled` | flag | ✅ yes | commit-reveal weights toggle |
| `alpha_high` | fraction (u16, 65535 = 1.0) | ✅ yes | liquid-alpha smoothing upper bound |
| `alpha_low` | fraction (u16, 65535 = 1.0) | ✅ yes | liquid-alpha smoothing lower bound |
| `liquid_alpha_enabled` | flag | ✅ yes | per-weight bonds EMA (liquid alpha) |
| `bonds_penalty` | fraction (u16, 65535 = 1.0) | ✅ yes | penalty on out-of-consensus bonds |
| `alpha_sigmoid_steepness` | integer | ✅ yes | liquid-alpha sigmoid steepness |
| `min_childkey_take` | fraction (u16, 65535 = 1.0) | ✅ yes | floor for childkey take |
| `owner_immune_neuron_limit` | integer | ✅ yes | owner-designated prune-immune UIDs |
| `max_allowed_uids` | integer | ✅ yes | neuron slot capacity before pruning |
| `burn_increase_mult` | multiplier (U64F64 bits / 2^64) | ✅ yes | burn cost bump per registration |
| `burn_half_life` | blocks (12s) | ✅ yes | burn cost decay half-life |
| `collateral_lock_share` | fraction (u16, 65535 = 1.0) | ✅ yes | registration price share locked |
| `collateral_drain_ratio` | multiplier (U64F64 bits / 2^64) | ✅ yes | collateral released per α earned |
| `yuma3_enabled` | flag | ✅ yes | yuma3 consensus variant toggle |
| `yuma_version` | integer | read-only | reported value: 3 if `yuma3_enabled`, else 2 |
| `subnet_is_active` | flag | sudo only | subnet started (staking + emissions) |
| `subnet_emission_enabled` | flag | sudo only | root switch for TAO emission share |
| `user_liquidity_enabled` | flag | sudo only | legacy user-LP flag (always false) |
| `bonds_reset_enabled` | flag | ✅ yes | bonds reset on metadata commit |
| `transfers_enabled` | flag | ✅ yes | stake transfers between coldkeys |
| `owner_cut_enabled` | flag | ✅ yes | owner emission cut toggle |
| `owner_cut_auto_lock_enabled` | flag | ✅ yes | auto-lock the owner's emission cut |

### Taostats

Each subnet tab lists pertinent hyperparameters:

![Dark-themed subnet metagraph tab with a Settings & Metrics grid of hyperparameter label-value cards including UID counts, validator/miner counts, and epoch countdowns](https://beta.taostats.io/images/docs/concepts/taostats-subnet-hyperparameters-metrics-panel.png)

The full list can be found at: [https://taostats.io/settings?subnet=19](https://taostats.io/settings?subnet=19) (update the subnet number for the specific subnet parameters)

### Using CLI

To see the parameters of a subnet, use the `btcli su get`**or** `btcli s hyperparameters`

Here are example parameters from Subnet 15 at the time of writing:

```
btcli s hyperparameters
Netuid: 19
                                                                           
                          Subnet Hyperparameters                           
                        NETUID: 19 - Network: finney                       
                                                                           
                                                                           
 HYPERPARAMETER                     VALUE                  NORMALIZED      
 ───────────────────────────────────────────────────────────────────────── 
   rho                              10                     10              
   kappa                            32767                  0.4999923705    
   immunity_period                  7000                   7000            
   min_allowed_weights              1                      1               
   max_weight_limit                 65535                  1               
   tempo                            360                    360             
   min_difficulty                   18446744073709551615   1               
   max_difficulty                   18446744073709551615   1               
   weights_version                  60000                  60000           
   weights_rate_limit               100                    100             
   adjustment_interval              360                    360             
   activity_cutoff                  20000                  20000           
   registration_allowed             True                   True            
   target_regs_per_interval         1                      1               
   min_burn                         100                    τ0.000000100    
   max_burn                         100000000000           τ100.000000000  
   bonds_moving_avg                 900000                 4.878909776e-14 
   max_regs_per_block               1                      1               
   serving_rate_limit               50                     50              
   max_validators                   64                     64              
   adjustment_alpha                 14757395258967642112   0.8             
   difficulty                       18446744073709551615   1               
   commit_reveal_weights_interval   1                      1               
   commit_reveal_weights_enabled    False                  False           
   alpha_high                       58982                  0.9000076295    
   alpha_low                        45875                  0.7000076295    
   liquid_alpha_enabled             False                  False           
 ───────────────────────────────────────────────────────────────────────── 
                                                  
```

## Hyperparameter descriptions

* **rho**: Defaults to 10. Rho is still stored and reported per subnet, but the current Yuma epoch doesn't read it. It has no effect on emissions or consensus.
* **kappa**: Defaults to 32767 (0.5). Kappa is the stake majority used for consensus. For each miner, Yuma takes the stake-weighted median of validator weights at the κ point: the highest weight that validators holding at least κ of the active stake agree on. Validator weights above that consensus value are clipped. Only root can change it.
* **Immunity Period**: This parameter defines the duration during which new neurons are protected from certain network penalties or restrictions. (At 12 s/block, 1000 blocks is \~ 3.3 hours.)
* **Min Allowed Weights**: The minimum number of UIDs a subnet validator must set weights on, before the subnet validator is allowed to set weights on the blockchain.
* **Max Weight Limit**: Fixed at 65535 (1.0) on every subnet, so a validator can put its whole weight on one miner. It can't be changed.
* **Tempo**: Blocks between epochs. New subnets start at 360 (about 72 minutes). The subnet owner can set any value from 360 to 50,400 blocks, at most once per 360 blocks; root can set any value. Changing tempo restarts the epoch cycle.
* **min\_difficulty / max\_difficulty / difficulty**: Left over from proof-of-work registration, which has been removed. All neuron registration is burned registration, so these values have no effect.
* **weights version**: Sets the minimum version of validator code that a validator can use (and still set weights).
* **weights rate limit**: time (in blocks) that a validator may update weights.
* **Registration price (`burn`, `burn_increase_mult`, `burn_half_life`)**: The cost to register a neuron goes up by `burn_increase_mult` after every registration and decays every block with a half-life of `burn_half_life` blocks. It always stays between `min_burn` and `max_burn`. `adjustment_interval` and `adjustment_alpha` are legacy settings that no longer affect subnet registration price.
* **activity\_cutoff\_factor**: Sets the activity cutoff in thousandths of a tempo: cutoff blocks = factor × tempo / 1000. The default of 13,889 gives 5,000 blocks at tempo 360. A validator that hasn't set weights within the cutoff is treated as inactive, and its weights are ignored by consensus. The subnet owner can set it from 1,000 to 50,000 (1 to 50 tempos). The older absolute `activity_cutoff` value is superseded by the factor.
* **registration\_allowed**: Only root can change this. When registration is off, no one can register a neuron on the subnet, and the subnet receives no tao emission. Its share goes to the other subnets.
* **target\_regs\_per\_interval**: Legacy on normal subnets: the registration price controls demand, and the only hard limit is `max_regs_per_block`. The root network still uses it, capping root registrations per root tempo at 3× this value.
* **min\_burn/max\_burn**: The floor and ceiling of the neuron registration price (in rao, 1e-9 tao). The right column shows the value in tao.
* **serving\_rate\_limit**: Determines how often you can change your node's IP address on the blockchain. Expressed in number of blocks. Applies to both subnet validator and subnet miner nodes. Used when you move your node to a new machine.
* **[Bonds Moving Avg](https://github.com/opentensor/developer-docs/blob/4d0319415d96462c1ffc48c76f2f9c913df5707e/docs/subnets/subnet-hyperparameters.md?plain=1#L289)** :
  * The weight given to old bonds in the bond EMA, scaled so 1,000,000 = 1.0 (default 900,000 = 0.9). Each epoch, new bond = (1 − m) × this epoch's bond + m × old bond.\
    A **high** value keeps bonds slow-moving: bonds take many epochs to build, and they also take many epochs to fade after a validator stops setting weights.\
    A **low** value makes bonds follow current weights quickly, in both directions.
    With liquid alpha enabled, the smoothing factor is set per bond between `alpha_low` and `alpha_high` instead.
* **Max Validators**: The number of validator permits on the subnet, given to the highest-stake hotkeys. New subnets start with 64. Only root can change it.
* **Adjustment alpha:** Legacy. It no longer affects the subnet registration price; see `burn_increase_mult` and `burn_half_life`.
* **Commit Reveal Period**: Weights are encrypted for this many epochs (tempos) before auto-reveal, to prevent [Weight Copying](https://beta.taostats.io/docs/concepts/validators/weight-copying). (Formerly `commit_reveal_weights_interval`, measured in blocks.)
* **Commit Reveal Weights Enabled**: Boolean if commit reveal is on or off.
* **alpha\_high/alpha\_low**: used in Liquid alpha math. Not related to the alpha token
* **Liquid Alpha Enabled**: Liquid alpha allows for a Consensus based weights.
