Hyperparameters
rho
Steepness of the classic Yuma trust sigmoid mapping consensus alignment to trust.
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 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
Reading and setting
Inspect with:
btcli sudo get --netuid N --name rhoOwner-settable:
btcli sudo set --netuid N --name rho --value 10The value is a plain integer (stored as u16), not a fraction.