The Big Picture
Emission is the final payout - the TAO actually earned by each neuron. While Incentive and Dividends show proportional shares, Emission shows the actual token amounts. This is the bottom line that miners and validators care about - real earnings, not percentages.
Why This Matters
Forget percentages - how much TAO did you actually earn? Emission is the real number. This tells you exactly what each neuron received in the last distribution cycle.
Example Scenario
Query Emission(netuid=1, uid=47) returns 5000000000 (5 TAO in RAO). Your neuron earned 5 TAO in the last epoch. Multiply by epochs per day to estimate daily earnings.
Common Questions
- How often do emissions update?
- Every tempo (emission interval) for the subnet. Check Tempo(netuid) for the interval in blocks.
- Is this cumulative or per-epoch?
- This is the emission for the most recent epoch. For historical totals, you need to track over time or use an indexer.
- Why is my emission lower than expected from my incentive?
- Emission = incentive × subnet_emission_allocation × various factors. The subnet's total emission pool varies based on its performance.
Use Cases
- Check how much TAO your neuron earned in the last epoch
- Build emission tracking dashboards and leaderboards
- Calculate ROI and compare neurons by earnings
- Verify emission distribution is working correctly
- Track historical earnings patterns
Purpose & Usage
Purpose
Track actual emissions received by each neuron.
Common Query Patterns
- Query by netuid-uid for specific neuron
- Iterate all neurons to get emission distribution
- Compare emissions across neurons for analysis
Query Keys
| # | Name | Type | Description |
|---|---|---|---|
| 1 | key1 | u16 | key1 (u16) |
Stored Value
Value in RAO (÷10⁹ for TAO)
Relationships
Modified By
Related Events
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 Emission storage
const key1 = 0;
const result = await api.query
[stringCamelCase("SubtensorModule")]
[stringCamelCase("Emission")](
key1
);
console.log("Emission:", result.toHuman());On-Chain Activity
100K–1M estimated writes
#36 most written storage item
Modified by both user extrinsics and runtime hooks
As of block 7,429,232
Runtime Info
View Source- Pallet
- SubtensorModule
- Storage Kind
- Map
- First Version
- v101
- Current Version
- v393