TAO Flow
EmissionAlgorithm determining how emission shares are allocated across subnets based on EMA of net TAO inflow/outflow activity.
TAO Flow Distribution
dTAO Emission Flow (per block)
Example: Who Gets What (one block, one subnet)
Click items to navigate to their reference pages.
The Big Picture
TAO Flow is the market-driven mechanism that decides which subnets get how much of the block emission. It measures net staking activity — subnets attracting net TAO inflows receive larger emission shares. The signal is smoothed with an EMA to prevent volatility from causing wild emission swings.
Why This Matters
TAO Flow directly controls how much each subnet earns. A subnet with a low TAO Flow share receives less emission regardless of its internal validator/miner performance.
Example Scenario
With 50 subnets active and 0.5 TAO per block, the top subnet might get 5% share (0.025 TAO/block ≈ 180 TAO/day). A small subnet with 0.5% share gets 10× less. Stakers drive this by where they allocate capital — subnets with net positive staking flow attract more emission.
Common Questions
- Can a subnet lose all emission?
- If net staking flow is zero or negative and the EMA decays to the cutoff, the subnet gets near-zero emission. It still exists but earns almost nothing.
Use Cases
- Comparing subnet emission potential
- Understanding staking flow impact on emissions
- Planning stake allocation across subnets
- Modeling subnet revenue projections
TAO Flow determines each subnet's share of total block emissions. It uses an exponential moving average (EMA) of net TAO staking inflow/outflow per subnet — subnets attracting more net stake receive more emission. The EMA flow values are offset by a lower limit, raised to a power exponent, and normalized to produce shares.
This runs every block as part of run_coinbase. Subnets must have SubtokenEnabled and have passed their FirstEmissionBlockNumber to be eligible for emission.
Triggers
- Every block (computed in run_coinbase during block_step)
Inputs (8)
| Item | Type | Role |
|---|---|---|
| SubnetTaoFlow SubtensorModule | storage | Net TAO inflow/outflow per subnet per block |
| SubnetEmaTaoFlow SubtensorModule | storage | EMA of TAO flow used for smoothed emission allocation |
| FlowEmaSmoothingFactor SubtensorModule | storage | EMA alpha parameter for flow smoothing |
| FlowNormExponent SubtensorModule | storage | Power exponent for normalization of flow shares |
| TaoFlowCutoff SubtensorModule | storage | Lower limit cutoff for flow values |
| NetworksAdded SubtensorModule | storage | Registry of active subnets |
| SubtokenEnabled SubtensorModule | storage | Whether subnet Alpha token is enabled |
| FirstEmissionBlockNumber SubtensorModule | storage | Block number after which subnet is eligible for emission |
Outputs (2)
| Item | Type | Role |
|---|---|---|
| SubnetTAO SubtensorModule | storage | TAO allocated to subnet pools based on emission shares |
| SubnetAlphaIn SubtensorModule | storage | Alpha minted into subnet pools proportional to emission share |
Source Files
pallets/subtensor/src/coinbase/run_coinbase.rs pallets/subtensor/src/coinbase/subnet_emissions.rs Formulas
TAO Flow Share
Each subnet's emission share is based on the EMA of net TAO inflow/outflow, offset by a lower limit, power-normalized.
ema_flow[i] = SubnetEmaTaoFlow[i] // EMA of net staking activity lower_limit = max(cutoff, min(min(ema_flow), 0)) offset_flow[i] = max(ema_flow[i] - lower_limit, 0) shares = pow_normalize(offset_flow, FlowNormExponent)
Allocation %
TypeScript: computeTaoFlowShare() in yuma-formulas.ts
TAO Flow Calculator
Emission Calculator
See how block emission flows through subnets to participants
Subnet Configuration
| Subnet | TAO Flow % | Owner Cut % | Pool TAO | Pool Alpha | α Price | Actions |
|---|---|---|---|---|---|---|
| SN1 | 1.200τ | |||||
| SN2 | 0.800τ | |||||
| SN3 | 1.000τ |
α Price auto-calculates from Pool TAO / Pool Alpha
Emission Breakdown (per block)
| Subnet | TAO In | α Minted | Owner | Miners | Validators |
|---|---|---|---|---|---|
| SN1 | 0.2500τ | 0.2083α | 0.0208α (0.0250τ) | 0.0938α (0.1125τ) | 0.0938α (0.1125τ) |
| SN2 | 0.1500τ | 0.1875α | 0.009375α (0.007500τ) | 0.0891α (0.0712τ) | 0.0891α (0.0712τ) |
| SN3 | 0.1000τ | 0.1000α | 0.00e+0α (0.00e+0τ) | 0.0500α (0.0500τ) | 0.0500α (0.0500τ) |
| Total | 0.5000τ | ~0.0325τ | ~0.2337τ | ~0.2337τ |
Your Position
Flow: Block emission → divided by TAO Flow % → converted to Alpha at pool price → owner cut taken first → remainder split 50/50 between miners/validators.
Try: Change pool TAO to see how Alpha price affects the TAO-equivalent value. Higher-priced Alpha means each token is worth more TAO.