Hyperparameters

bonds_moving_avg

Smoothing factor for the validator bonds EMA — higher retains more of past bonds each epoch.

View as Markdown

bonds_moving_avg controls how slowly validator bonds track a validator's current weights. Subnet owners tune it to decide how long validators must hold a position before their bonds (and thus dividends) catch up; validators care because it sets how fast early, correct weight calls pay off.

How it works

Bonds are an exponential moving average over each validator–miner pair. Every epoch the chain computes

B(t) = alpha × ΔB + (1 − alpha) × B(t−1)

where alpha = 1 − bonds_moving_avg / 1,000,000 (compute_ema_bonds_normal in pallets/subtensor/src/epoch/run_epoch.rs). The default 900,000 gives alpha = 0.1: each epoch a bond moves 10% of the way toward the validator's instant bond. Higher values mean stickier bonds and slower dividend response; lower values make bonds chase current weights quickly, weakening the reward for early conviction.

The flat rate applies on the classic consensus path, and also on the yuma3_enabled path whenever liquid_alpha_enabled is off (compute_disabled_liquid_alpha). With liquid alpha on, the per-pair sigmoid rate replaces it entirely.

Subnet owners can set at most 975,000 (BondsMovingAverageMaxReached in pallets/admin-utils/src/lib.rs); only root can go higher.

Liquid alpha: per-weight bonds EMA rate

With liquid alpha off, alpha_sigmoid never runs: every validator–miner pair smooths at the single flat rate 1 − bonds_moving_avg / 1,000,000, the solid line here. Drag the slider to move the line; re-enable liquid alpha to see the flat rate become the dashed fallback under the sigmoid.

Flat EMA rate

0.100

1 − 900,000 / 1,000,000

Bond kept per epoch

0.900

share of last epoch’s bond that survives

Epochs to close ~90% of a gap

22

how long conviction takes to pay off

900,000 (0.900)
45,875 (0.700)
58,982 (0.900)
1000 (slope 10.0; negative is root-only)

Reading and setting

btcli sudo get --netuid N --name bonds_moving_avg

Stored over 1,000,000 (900000 = 0.9). The set command accepts either the raw integer or the human fraction with a decimal point:

btcli sudo set --netuid N --name bonds_moving_avg --value 0.9

liquid_alpha_enabled, alpha_low, alpha_high, bonds_penalty, yuma3_enabled