Release v438 · PR #2968 · Explainer

Root Reborn — A New Engine for Bittensor's Risk-Free Rate

A tiered explainer of Root Reborn, batched into subtensor Release v438 (PR #2968): how root dividends move from auto-sell-to-TAO to auto-buy-into-a-validator-curated subnet basket.

Bittensor Release v438 · live at spec_version 441 Status: Live on mainnet · spec_version 441 · from Release v438 (PR #2968)

TL;DR

Root dividends still come from selling alpha. But instead of cashing out to root stakers as TAO, the proceeds are immediately re-bought into a basket of subnets chosen by each root validator. Stakers compound in alpha exposure, redeem to TAO on demand.

What changes:

Status: Live on mainnet. Root Reborn shipped in Release v438 (PR #2968) and the chain is now running spec_version 441.


1. What is "root" and why does it have a risk-free rate?

Bittensor has one base subnet, subnet 0 (root). Everyone who stakes on root holds TAO directly — no per-subnet alpha exposure, no impermanent-loss risk, no betting on a particular subnet's success or failure. In return, root stakers earn a slice of the network's emissions, which lands in their stake periodically.

Because root carries no subnet risk, its yield is the risk-free rate of the Bittensor economy: the baseline return any TAO-holder can get just by staking on the safest possible thing. Every other yield in the network — alpha staking on subnet N, providing liquidity, locking for conviction — has to beat root's rate to be worth the extra risk.

But today's "risk-free rate" is decaying. Root prop — the fraction of each subnet's emissions earmarked for root — is on a downtrend, recalculated periodically and shrinking as the network matures. Lower root prop = smaller TAO dividend per unit of root stake = lower effective root APY each cycle. So today's risk-free rate isn't a stable floor; it's a slowly eroding one. That decay is one of the structural problems Root Reborn is trying to address — not by changing root prop, but by giving the same dividend stream a more productive substrate to compound in.


2. The problem today: auto-sell, then leak

Where does root's yield actually come from? Right now, here's the chain of events each block:

  1. Subnet emissions mint alpha into every subnet's reward pool.
  2. Some fraction of those emissions is owed to root as the root proportion (the "root prop" on each pool).
  3. The network sells that alpha back into TAO through the subnet's AMM pool automatically. It doesn't happen every block — it settles on an irregular schedule, in practice roughly every couple of days.
  4. The TAO is paid out to root stakers as flat dividends and lands back in TAO circulation.

It works, but it has three real problems:


3. The proposal: redirect the proceeds into a chosen basket

Root Reborn keeps the auto-sell on the origin subnet (where the root dividend was minted) and redirects the resulting TAO into buys across other subnets:

  1. Each root validator publishes a vector of weights w across the network's subnets — a list saying "buy 20% into subnet 1, 15% into subnet 5, 10% into subnet 28…" etc. Subnets the validator doesn't list get weight zero.
  2. Each cycle, every root dividend the validator earns (from any subnet) is auto-sold to TAO as today, but instead of being paid to stakers, that TAO is immediately spent: buys are placed across the weighted subnets per w, and the bought alpha is staked under a special escrow coldkey with the validator as the hotkey.
  3. The escrow basket compounds. Each cycle adds more alpha across the weighted subnets. The subnets' own price movements add (or subtract) NAV. The basket keeps growing while it's left alone.
  4. Stakers who want their yield in TAO call claim_root whenever they like. One call redeems their fund shares pro-rata across every holding in the validator's basket, swaps that slice back to TAO through the existing AMM, and stakes it onto root. Nobody is forced to redeem on a fixed schedule.

Key point: the sell side doesn't change for the origin subnet. Every subnet that has root proportion still mints alpha for root and still has that alpha sold to TAO on the same schedule, exactly as today. What changes is where the TAO goes next: it used to leave the subnet economy, now it's spent as fresh buy orders across the basket subnets.

For any individual subnet, the net effect is:

The mental model: instead of root paying out dividends as a continuous trickle of TAO, root pays you a continuously growing credit in a basket of subnet exposures. You cash in the credit on your schedule, not the chain's.

Critically, the round-trip is TotalStake-neutral. No TAO is created or destroyed. The alpha that would have been sold is now bought-and-held instead. The accounting is conservation-correct: every deposit mints fund shares at the current net asset value, so the sum of all stakers' share values always equals the fund's live NAV — no share can over- or under-draw.


4. What changes for each participant

Root stakers (everyone staking TAO on subnet 0)

Before: Your balance goes up on its own. Rewards are swapped to TAO and added to your root stake automatically, landing periodically (roughly every couple of days). You do nothing — but the rate is decaying, because root prop is on a downtrend, so the effective TAO APY each cycle is lower than the last.

After:

Key shift: today your balance rises automatically in TAO; tomorrow it rises only when you claim, and in the meantime compounds as subnet alpha exposure. You gain upside (and downside) from subnet performance instead of a flat TAO yield — and you decide when to lock it in.

New consideration: two forces pull in opposite directions. Claiming more often cuts your subnet-alpha price exposure (each claim returns to TAO root stake), but every claim pays a fee — so frequent small claims waste money on fees. If you're long the network, the efficient move is to leave it compounding and claim rarely.

Switching validators — claim first. Your basket entitlement is tied to the root stake you have delegated to that specific validator — it is not a token you carry with you. If you move your stake to a different validator (or unstake) without claiming first, your claimable on the old validator's basket drops toward zero, and you'll be sitting in the new validator's basket going forward. So the clean sequence is: claim_root() to realize what you've accrued, then move.

The good news — nothing is burned or handed to other stakers. Leaving only adjusts your personal accounting watermark; the alpha the fund holds for you stays in the shared basket, and no other staker's claim grows because you left. If you re-stake the same amount back to the original validator, your claim to that basket is restored (you can then claim it). What you don't get is the compounding you missed while your stake was elsewhere — your share tracks your stake, so at zero stake you accrue nothing, and you re-enter at the fund's current value. (Verified against the merged v438 source: unstaking/moving root stake rebases only the per-staker BasketClaimed watermark; the escrow's basket holdings are never touched, and there is no path that reallocates your slice to anyone else.)

What a claim actually sweeps. One claim_root() is not validator-specific — it redeems every validator you currently have root stake with, in a single call (if you're staked to two validators, both baskets are claimed at once; you can't cherry-pick one). But it only pays out where you still have stake: a validator you have fully exited is a no-op. Concretely — if you had a Taostats basket, then shifted 100% of your stake to tao.bot and called claim_root(), you'd realize only the tao.bot basket. The Taostats basket isn't swept along; it sits parked (your owed there is floored to zero while your stake there is zero). To realize it you must claim before you leave Taostats, or re-stake to Taostats and then claim.

Root validators

Before: A passive yield conduit. No skill, no differentiation, no active job. Stakers picked you based on take rate and basic reputation, full stop.

After:

New consideration: publishing a weak basket vector is now visible and quantifiable. There's nowhere to hide. Good validators will pull stake. Lazy ones will lose it.

Subnet owners

Before: Constant uniform headwind. Every block, a fixed slice of your subnet's emissions is dumped into your AMM pool, driving down your alpha price. Every subnet experiences the same treatment regardless of quality. You're swimming upstream against your own emissions schedule, identically to every other subnet.

After:

Subnet alpha holders / LPs

Before: You're on the other side of a uniform auto-sell each cycle. Net seller pressure on every subnet, all the time.

After:

TAO holders generally

Before: Root yield compounded in TAO at the protocol level (auto-sold alpha became added root stake). The compounding worked, but the alpha sales fed nothing back into the subnet economy — the network was strictly a sink on alpha.

After:


5. How the new system actually works

For readers who want the mechanics. The rest of you can skip to section 6.

The basket vector

Each root validator gets a uid in the root subnet. The basket vector w is stored under the existing root-weights map (Weights[ROOT][uid]) — the dormant root-weights plumbing is being revived rather than introducing a new storage map. Because it's uid-keyed, the basket follows the validator through hotkey swaps automatically.

Validators set w via a new dedicated extrinsic, set_root_weights. The generic set_weights extrinsic doesn't work here because it rejects netuid 0 — and root needs slightly different validation rules (no Yuma consensus runs on root; weights are used purely as an allocation vector, not as a consensus signal).

The block-step pipeline

Each block, the coinbase runs distribute_root_alpha_to_basket. For each root validator with a non-zero stake and a non-zero w:

  1. Sell origin alpha → TAO (same AMM path as before).
  2. For each subnet i with weight w[i] > 0: buy alpha in subnet i with w[i] share of the TAO.
  3. Stake that alpha under the global escrow coldkey with the validator as hotkey — it joins the validator's single basket fund.
  4. The deposit mints fund shares to the contributing stakers at the pre-deposit NAV, and grows the fund's BasketShares / BasketRate accumulators. A staker's slice of the fund is tracked as a share balance, not a per-subnet principal.

If the validator has no weights set, or no root stake, the alpha is recycled (returned to the emission pool) — no broken state. The whole step is transactional: either all the buys succeed or the block step is rolled back for that validator.

Redemption

Stakers redeem with a single claim_root call (it takes only the caller's origin — no arguments). It is a fund-shares / NAV redemption: your shares are valued at the fund's current net asset value and realized pro-rata across every holding at once.

payout = your_shares × (fund_NAV / total_shares)

Because deposits mint shares at the pre-deposit NAV, that single ratio captures all compounding — new alpha buys, alpha emissions on the basket position, and price appreciation — in one shared multiplier. No staker can over-draw: the sum of all share values always equals the live NAV.

Claim granularity: one call, all baskets. Unlike the earlier draft, there is no per-subnet cherry-picking — you cannot claim just your SN1 exposure and leave SN5 compounding. And it's not per-validator either: claim_root(origin) takes no arguments — it iterates every validator you currently have root stake with and redeems each fund pro-rata across all its holdings, staking the realized TAO onto root. Each validator's basket is a separate fund, but a single call sweeps them all. (A validator you've fully exited has zero stake there, so its fund is skipped — its basket stays parked until you re-stake, rather than being claimed.)

Redemption is always to TAO. Every claim goes alpha → swap to TAO → staked onto root. There is no "keep as subnet alpha" path. If you want subnet alpha exposure on your coldkey, claim to root TAO, unstake, then stake into the subnet manually.

Auto-claim is removed. The old auto-claim block-step and its scheduler are gone, along with the set_root_claim_type and sudo_set_num_root_claims extrinsics — no more forced-redemption schedule.

The cost of claiming

Because claiming is now manual, every claim is a transaction that costs a fee, and that fee scales with the number of holdings in the validator's basket (each holding adds a read/write/swap of work). This matters most for small stakers, whose reward per claim is itself small. The upside: a Root Reborn claim only touches the validator's basket — a handful of subnets — whereas a manual root claim today settles across all 128 subnets, which is why small root claims currently lose money to fees. Root Reborn's narrower claim is dramatically cheaper.

Worked example, 10 TAO staked at ~7% APY, claimed after 10 days (reward earned: 0.01917 TAO). For reference, the same claim on today's pre-Root-Reborn path (which touches all 128 subnets) costs roughly 0.047 TAO — a net loss of ~146% of the reward. Under Root Reborn:

Basket holdingsClaim fee (est.)Net kept% of reward keptEffective APY after fee
2~0.0007 TAO0.01848 TAO96%6.74%
7~0.0017 TAO0.01743 TAO91%6.36%
10~0.0024 TAO0.01680 TAO88%6.13%
15~0.0034 TAO0.01575 TAO82%5.75%

Gross rate before fee is 7.00%. Fees estimated at the current network fee rate (NextFeeMultiplier = 1.0, linear weight-to-fee) and scale with basket breadth; actual cost varies with network load. Two practical points: claim infrequently so a fixed per-claim cost is amortised over a larger reward, and prefer a validator who keeps a concentrated basket — a sprawling basket makes every holder's claim more expensive.

Hotkey swaps and subnet dissolves

Migration

A one-shot migration, migrate_seed_beta_basket_v2, seeds the new model from legacy state. The retired RootClaimable/RootClaimed storage is drained into the new fund-share model, preserving every staker's outstanding claim. The migration is conservation-correct: nothing is re-minted, nothing is lost.

New RPC views

A new BetaBasketRuntimeApi exposes five views for wallets and dashboards (Taostats, included):

This is everything Taostats needs to render: per-validator basket performance and strategy, per-staker pending TAO, network-wide root health.


6. Why this is structurally important

Four properties make Root Reborn worth taking seriously, beyond the obvious redeployment of yield into the subnet ecosystem:

Validators become curators

Until now, the only way to express "I think subnet X is overrated" was at the individual staker level — and most stakers don't have the bandwidth, expertise, or stake size to make that call meaningfully. Root Reborn lets root validators make that call on behalf of their stakers, in a stake-weighted way, every cycle, with their own performance visible.

This turns the validator set into a continuous, capital-allocating market. Bad actors don't need to be voted off by governance; they just don't show up in root validators' weight vectors, and the buy-pressure machinery starves them. Good subnets get bought into. Network curation becomes emergent, not legislated.

Subnet differentiation

Today every subnet faces the same auto-sell, regardless of merit. The protocol expresses no preference — a great subnet and a fading subnet experience the same root-emission headwind cycle after cycle.

After Root Reborn, that uniform treatment ends. Each subnet's net flow (sell minus buy) becomes a function of the validator set's collective judgment. Subnets earn or lose root buy-pressure based on how root validators rate them — and the rating shows up each cycle in price action and LP economics. This is the strongest gradient between "good" and "weak" subnet performance the network has ever had at the protocol level.

Compounding flywheel

Today root yield compounds in TAO at the protocol layer — it works, but the underlying rate is decaying (root prop shrinks), and the proceeds (sold alpha) leave the subnet economy entirely. Two-sided erosion: yield rate down, no contribution back to subnets.

Tomorrow root yield compounds in subnet alpha exposures that stay in the subnet economy. The dividend stream the validator receives is still subject to root prop decay — but it's now invested into productive subnet positions that themselves earn emissions and (potentially) appreciate. So even on a declining root prop, the basket can earn back through subnet emissions, price action, and the second-order effect of helping subnets it weights highly.

If the median basket beats flat TAO compounding on a declining root prop (which is the bet — subnet emissions on basket positions plus price appreciation should exceed the eroding pure TAO yield), effective root returns rise relative to the TAO-only path. Higher effective return → more capital flows to root → more buy-flow → more buy-pressure on weighted subnets → healthier subnets emit more → bigger root dividends → higher effective return. Flywheel.

The flip side: if subnets collectively shrink, baskets shrink with them. Root is no longer pure TAO exposure; it now carries subnet-alpha exposure between claims. That's a real change in risk profile — root is "lower risk than any single subnet" but no longer "pure TAO compounding." Stakers who want pure TAO exposure should redeem more frequently.

Survives without governance

The whole mechanism rides on machinery that already exists. Share pools, AMM swaps, hotkey-swap hooks, and subnet-dissolve hooks all reuse existing code. The new surface area is small: one redirected emission call (distribute_root_alpha_to_basket), one new extrinsic (set_root_weights, call index 146), a simplified claim_root, and the BetaBasketRuntimeApi views.

Most network-wide changes need extensive governance and migration plans. This one is essentially a redirect.


7. What's still open before mainnet

The v438 merge (PR #2968) already retired the vestigial auto-claim path — set_root_claim_type and sudo_set_num_root_claims are gone and legacy claim storage is drained by the seed migration. These items remain to harden before mainnet activation:

None of these are economically broken — they're production-hardening items. Devnet runs are about validating the core mechanism, not these edges.


8. What this means for Taostats users

Taostats already shows per-pool prices, validator performance, and staker positions. Once Root Reborn lands on mainnet, three things become first-class metrics worth surfacing:

We should plan to ship these views shortly after mainnet activation. If we're early on the data layer we'll be the default place root stakers go to evaluate their validator choice — and that's a high-engagement audience.


9. Open questions

Worth flagging for community discussion:


10. Recap

Before After
Auto-sell each cycle on every subnet, uniformly (roughly every couple of days, irregular) Auto-sell unchanged on origin subnet, but TAO proceeds are re-spent as buys across chosen subnets
Sell proceeds exit the subnet economy entirely (TAO added to root stake) Sell proceeds stay in the subnet economy as new alpha buys, compounded under the validator
Every subnet treated identically by root Each subnet's net flow depends on root validator weight — strong subnets net-buy, ignored subnets stay at today's net-sell
Root validators passive yield conduits Root validators are active capital allocators with a public, ranked basket vector
Root yield compounds in TAO at the protocol layer, on a decaying base rate (root prop shrinks over time) Root yield compounds in subnet alpha as a validator-chosen basket, with subnet emissions and price action providing potential offset to the underlying decay
No subnet curation by validators Continuous stake-weighted capital-allocation vote on subnet quality
Risk-free rate is a slowly eroding TAO APY Effective return depends on basket performance — can outperform or underperform the eroding TAO-only path

Status: Live on mainnet. Root Reborn shipped in Release v438 (PR #2968) and the chain is now running spec_version 441. One operational item remains a live decision for the network: the root WeightsRateLimit value that governs how often validators can rebalance their basket vectors (see §7 and §9). Everything else described here is active on mainnet.

If you want to read the source: RaoFoundation/subtensor#2968.