InitialBondsMovingAverage

Constant v101 → current u64

Smooths bond value changes over time.

Current Value

900000
Relevant for: validatorssubnet ownersanalytics

The Big Picture

Bonds represent the accumulated trust between validators and miners over time. Rather than resetting bonds each epoch, Bittensor uses an exponential moving average (EMA) to smooth changes. This constant controls how much weight is given to historical bonds vs new weights. Higher values = more historical inertia; lower values = faster adaptation to new weights.

Why This Matters

Bond EMA affects how quickly your validator's weight changes impact emissions. High EMA means your past weight history matters more than your current weights, providing stability but slower response to performance changes.

Example

With BondsMovingAverage of 900000 (out of 1000000), 90% of bond values come from history and 10% from current weights. If you suddenly change your weights, the full effect takes many epochs to manifest. This prevents rapid gaming of the emission system.

Common Questions

Can subnet owners adjust the moving average?
Yes, via hyperparameter updates. Lower values make the subnet more responsive but potentially more volatile. Higher values provide stability but slow adaptation.
What's a typical value?
Most subnets use high values (0.9+) to prevent weight manipulation. The exact value depends on the subnet's desired responsiveness vs stability trade-off.

Use Cases

  • Bond calculations
  • Incentive distribution

Code Examples

import { ApiPromise, WsProvider } from "@polkadot/api";
import { stringCamelCase } from "@polkadot/util";

const provider = new WsProvider("wss://entrypoint-finney.opentensor.ai:443");
const api = await ApiPromise.create({ provider });

// Query InitialBondsMovingAverage constant
const value = api.consts[stringCamelCase("SubtensorModule")][stringCamelCase("InitialBondsMovingAverage")];
console.log("InitialBondsMovingAverage:", value.toHuman());

// Convert RAO to TAO if this is a balance value
const taoValue = value.toBigInt() / BigInt(1e9);
console.log("TAO:", taoValue.toString());

Type Information

Type
u64
Byte Size
8 bytes
Encoding
fixed
Raw Hex
0xa0bb0d0000000000

Runtime Info

Pallet
SubtensorModule
First Version
v101
Latest Version
v101
Current Runtime
v393