Activity Cutoff Factor

How the activity cutoff factor subnet hyperparameter expresses validator inactivity tolerance in per-mille epochs so the effective window scales with tempo.

Activity cutoff factor is a per-subnet hyperparameter, listed in the documentation as ActivityCutoffFactor, that sets how much validator inactivity a subnet tolerates before a validator’s stake stops counting for epoch participation. It is expressed in per-mille epochs rather than a fixed block count, so the effective window scales with the subnet’s tempo (Subnet Hyperparameters).

What It Controls

Per-mille means thousandths of an epoch, so a value of one thousand corresponds to one tempo and the default sits at roughly fourteen tempos of tolerated silence. The factor supplies only the allowed span; the per-neuron last-update block supplies the timestamp it is measured from, and a validator counts as inactive only when the gap since its last update exceeds that span (Subnet Hyperparameters, The Subnet Metagraph).

Because the tolerance is read against tempo, the same factor yields a longer real-time window on a subnet with a long tempo and a shorter window on a subnet with a short tempo. A subnet owner tuning the factor is therefore tuning tolerance in epoch units, and the block-level window follows from whatever tempo the subnet runs (Subnet Hyperparameters, Glossary: Tempo).

It is a participation gate, not a performance score: it decides whether a validator’s stake and weights still enter the current Yuma Consensus pass, not how good those weights are or how much the validator earns (Yuma Consensus).

Documented Type, Default, and Setter

The Subnet Hyperparameters reference lists ActivityCutoffFactor as a u32 with a default of 13,889. The default is chosen so that, at the default tempo, the tolerance matches the inactivity window subnets previously used, which keeps the move from a fixed block cutoff to per-mille tolerance transparent. The factor is owner-tunable per subnet, so the live value on one netuid can differ from the default and from another subnet’s value (Subnet Hyperparameters).

In exact terms, 13,889 per-mille epochs equals 13.889 tempos. With the documented default tempo of 360 blocks, that preserves the legacy inactivity window at about 5,000 blocks rather than changing validator tolerance when the representation moved from fixed blocks to a tempo-scaled factor (Subnet Hyperparameters, Glossary: Tempo).

It is changed through the set_activity_cutoff_factor extrinsic, exposed in tooling as btcli sudo set --param activity_cutoff_factor, and the reference marks the permission required to set it as subnet owner (Subnet Hyperparameters).

The value is bounded. The reference documents an allowed range from 1,000 to 50,000 per-mille, governed by MinActivityCutoffFactorMilli and MaxActivityCutoffFactorMilli, so a subnet owner cannot set tolerance below one tempo or above fifty (Subnet Hyperparameters).

Those two bounds are exposed as fixed chain constants. The constants reference lists api.consts.subtensorModule.minActivityCutoffFactorMilli as 1000 and maxActivityCutoffFactorMilli as 50000, the per-mille floor and ceiling the owner setter is clamped between. Because 1,000 per-mille is one tempo and 50,000 per-mille is fifty, those constants pin the tolerance band to one through fifty tempos no matter which block-level tempo a subnet runs, so the band is the same everywhere even though the resulting block window is not (Subtensor Constants: minActivityCutoffFactorMilli, Subnet Hyperparameters).

ActivityCutoffFactor is also one of the rows returned by the canonical get_subnet_hyperparams_v3 runtime API, so the live factor for a subnet can be read from the current hyperparameter table rather than inferred from the default (Subnet Hyperparameters).

Reading the Live Value for netuid 1

Activity cutoff factor is per-subnet chain state, so any live claim is tied to a specific netuid. For the documented example netuid 1 on Finney mainnet, readers can verify the live factor and the tempo it scales against with btcli subnet hyperparameters --netuid 1 --network finney, which prints that subnet’s hyperparameter table (Subnet Hyperparameters: View hyperparameters). The infobox uses netuid 1 only as an example label; other subnets expose their own values (Bittensor Networks).

Distinction from Activity Cutoff

Activity cutoff factor is the live, settable input under dynamic tempos, while activity cutoff is the older fixed block-count value that is no longer the configured setting. Documentation still shows the computed activity-cutoff block value for readability, but the tolerance is now expressed through the factor so it tracks the epoch length instead of a constant (Subnet Hyperparameters, Glossary: Activity Cutoff).

  • Activity cutoff — the legacy fixed block-count cutoff still shown for readability.
  • Activity cutoff factor — the live per-mille tolerance that scales the window with tempo.

Further Reading

Topics ConsensusSubnets