Smooths bond value changes over time.
Current Value
900000The 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