Hyperparameters

rho

Steepness of the classic Yuma trust sigmoid mapping consensus alignment to trust.

View as Markdown

rho sets the temperature (steepness) of the sigmoid that maps a validator's consensus alignment to trust in the classic Yuma Consensus formulation. Subnet owners tuning how sharply the network rewards agreement with consensus are the main audience.

How it works

The formula lives in sigmoid_safe (pallets/subtensor/src/epoch/math.rs):

trust = 1 / (1 + e^(−rho × (x − kappa)))

where x is the stake fraction aligned with a validator's view and kappa is the midpoint. Higher rho makes the curve steeper: alignment just above kappa maps to trust near 1, just below to near 0. The recommended range in the code is 0 to 40; the mainnet default is 10.

One caveat, straight from the source: the current epoch (pallets/subtensor/src/epoch/run_epoch.rs) computes consensus as the kappa-weighted median of weights and clips to it — the helper that would feed rho into the sigmoid (get_float_rho) is defined but not called on the active path. rho remains a stored, owner-settable parameter of the Yuma formulation, but changing it does not alter today's epoch output. See Yuma Consensus for the full pipeline.

rho / kappa trust sigmoid

rho is the temperature of the trust sigmoid, sigmoid_safe in epoch/math.rs: trust = 1 / (1 + e^(−rho × (x − kappa))). The dashed ghost curves fix rho at 2 and 40 — slide rho between them and watch the curve snap from a gentle ramp into a near-step at kappa.

Trust at midpoint

0.50

always 0.5 at x = kappa

Slope at midpoint

2.50

rho / 4

kappa raw (u16)

32768

65535 = 1.0; 32767 ≈ 0.5

10
0.50

Reading and setting

Inspect with:

btcli sudo get --netuid N --name rho

Owner-settable:

btcli sudo set --netuid N --name rho --value 10

The value is a plain integer (stored as u16), not a fraction.

kappa · tempo · activity_cutoff · max_validators