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
From Chain Metadata
DMAP ( netuid, uid ) --> bonds
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
bonds (Vec<(u16, u16)>)
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 Bonds storage
const netuid = 1;
const uid = 0;
const result = await api.query.SubtensorModule.Bonds.getValue(netuid, uid);
console.log("Bonds:", result);On-Chain Activity
Modified by runtime hooks (e.g., epoch transitions), not directly by user extrinsics
As of block 7,429,232
Version History
Runtime Info
View Source- Pallet
- SubtensorModule
- Storage Kind
- Map
- First Version
- v101
- Current Version
- v411