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 { createClient, Binary } from "polkadot-api";
import { getWsProvider } from "polkadot-api/ws";
import { sub } from "@polkadot-api/descriptors"; // generated by: npx papi add sub -w wss://entrypoint-finney.opentensor.ai:443

const client = createClient(getWsProvider("wss://entrypoint-finney.opentensor.ai:443"));
const api = client.getTypedApi(sub);

// Query InitialBondsMovingAverage constant
const value = await api.constants.SubtensorModule.InitialBondsMovingAverage();
console.log("InitialBondsMovingAverage:", value);
// Balance: divide by 10^9 for TAO
const tao = value / 1_000_000_000n;

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
v411