The Big Picture
Bonds represent accumulated 'investment' from validators in miners. When a validator consistently gives weight to a miner, bonds accumulate. Bonds affect dividend distribution - validators earn dividends proportional to their bonds. It's a moving average of historical weight relationships that creates stickiness and rewards long-term commitment.
Why This Matters
Bonds explain why validator dividends aren't just based on current weights. A validator who has supported a miner for a long time has accumulated bonds and earns more when that miner does well.
Example Scenario
Query Bonds(netuid=1, uid=5) returns [(12, 0.15), (47, 0.08), ...]. Validator UID 5 has a 15% bond with miner 12 and 8% with miner 47. These bonds affect dividend calculations.
Common Questions
- How do bonds accumulate?
- Bonds grow when validators give weight to miners, smoothed by BondsMovingAverage parameter. It's like a weighted moving average of historical weight relationships.
- Why do bonds matter for dividends?
- Dividends are distributed based on bonds, not just current weights. This rewards validators who consistently support good miners over time.
- Can bonds decrease?
- Yes, if a validator stops weighting a miner or weights them less, bonds decay over time according to the moving average.
Use Cases
- Understand validator-miner economic relationships
- Analyze network topology and dependencies
- Debug consensus mechanism behavior
- Research bond accumulation dynamics
- Build bond visualization tools
Purpose & Usage
Purpose
Track validator-miner bond relationships - accumulated investment from validators to miners.
Common Query Patterns
- Query by netuid-uid for a validator's bond portfolio
- Analyze bond distribution across miners
- Track bond evolution over time
Query Keys
Stored Value
value (Vec<(u16, u16)>)
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 Bonds storage
const key1 = 0;
const key2 = 0;
const result = await api.query
[stringCamelCase("SubtensorModule")]
[stringCamelCase("Bonds")](
key1,
key2
);
console.log("Bonds:", result.toHuman());On-Chain Activity
Modified by runtime hooks (e.g., epoch transitions), not directly by user extrinsics
As of block 7,429,232
Runtime Info
View Source- Pallet
- SubtensorModule
- Storage Kind
- Map
- First Version
- v101
- Current Version
- v393