TAO Flow

Emission

Algorithm determining how emission shares are allocated across subnets based on EMA of net TAO inflow/outflow activity.

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)

ItemTypeRole
SubnetTaoFlow SubtensorModulestorageNet TAO inflow/outflow per subnet per block
SubnetEmaTaoFlow SubtensorModulestorageEMA of TAO flow used for smoothed emission allocation
FlowEmaSmoothingFactor SubtensorModulestorageEMA alpha parameter for flow smoothing
FlowNormExponent SubtensorModulestoragePower exponent for normalization of flow shares
TaoFlowCutoff SubtensorModulestorageLower limit cutoff for flow values
NetworksAdded SubtensorModulestorageRegistry of active subnets
SubtokenEnabled SubtensorModulestorageWhether subnet Alpha token is enabled
FirstEmissionBlockNumber SubtensorModulestorageBlock number after which subnet is eligible for emission

Outputs (2)

ItemTypeRole
SubnetTAO SubtensorModulestorageTAO allocated to subnet pools based on emission shares
SubnetAlphaIn SubtensorModulestorageAlpha minted into subnet pools proportional to emission share

Source Files

pallets/subtensor/src/coinbase/run_coinbase.rs
run_coinbase()
pallets/subtensor/src/coinbase/subnet_emissions.rs
get_shares()get_shares_flow()

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)

TypeScript: computeTaoFlowShare() in yuma-formulas.ts

TAO Flow Calculator

Emission Calculator

See how block emission flows through subnets to participants

= 500,000,000 RAO

Subnet Configuration

SubnetTAO Flow %Owner Cut %Pool TAOPool Alphaα PriceActions
SN11.200τ
SN20.800τ
SN31.000τ

α Price auto-calculates from Pool TAO / Pool Alpha

Emission Breakdown (per block)

SubnetTAO Inα MintedOwnerMinersValidators
SN10.2500τ0.2083α0.0208α (0.0250τ)0.0938α (0.1125τ)0.0938α (0.1125τ)
SN20.1500τ0.1875α0.009375α (0.007500τ)0.0891α (0.0712τ)0.0891α (0.0712τ)
SN30.1000τ0.1000α0.00e+0α (0.00e+0τ)0.0500α (0.0500τ)0.0500α (0.0500τ)
Total0.5000τ~0.0325τ~0.2337τ~0.2337τ

Your Position

Your emission per block
0.009375α
≈ 0.0112 TAO value
Per hour (~300 blocks)
3.3750 TAO
Per day (~7,200 blocks)
81.0000 TAO

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.

Read the deep dive: TAO Flow

Version History

v290 TAO Flow introduced with dTAO upgrade
v340 EMA smoothing factor adjusted for stability
v360 Flow-based allocation replaced root weight allocation