forked from opentensor/developer-docs
-
Notifications
You must be signed in to change notification settings - Fork 9
Lite paper faq #104
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Lite paper faq #104
Changes from all commits
Commits
Show all changes
36 commits
Select commit
Hold shift + click to select a range
0a2e2e0
wip
MichaelTrestman 1f48fb5
wip
MichaelTrestman dd8d23f
wip
MichaelTrestman 751ed63
wip
MichaelTrestman 36dbe2e
wip
MichaelTrestman 2a08cc7
wip
MichaelTrestman c98d29d
wip
MichaelTrestman 1b0cf36
wip
MichaelTrestman 41d1d1e
wip
MichaelTrestman 36121f0
wip
MichaelTrestman 440280f
wip
MichaelTrestman bc1d1c1
wip
MichaelTrestman 5ce5425
wip
MichaelTrestman 633e07e
wip
MichaelTrestman bd5194e
wip
MichaelTrestman 1479380
wip
MichaelTrestman b89270f
wip
MichaelTrestman e3701ad
wip
MichaelTrestman afe69cf
wip
MichaelTrestman 1b49100
wip
MichaelTrestman 139a03d
wip
MichaelTrestman eda2c18
wip
MichaelTrestman 94911d9
wip
MichaelTrestman f36858e
wip
MichaelTrestman 9e69525
wip
MichaelTrestman fe325d5
wip
MichaelTrestman fce38ef
Apply suggestions from code review
MichaelTrestman 5af7f7b
wip
MichaelTrestman 2ea91d3
Apply suggestions from code review
MichaelTrestman 1274595
Apply suggestions from code review
MichaelTrestman 998ad3e
wip
MichaelTrestman b0fd5dc
wip
MichaelTrestman 3a3bc62
wip
MichaelTrestman 446c39a
wip
MichaelTrestman bb57fc5
wip
MichaelTrestman 174a118
wip
MichaelTrestman File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,158 @@ | ||
--- | ||
title: "Token Halvings Problem and Solution: FAQ" | ||
--- | ||
|
||
# Token Halvings Problem and Solution: FAQ | ||
|
||
This page introduces the basic concepts for this [white paper](https://github.com/mcjkula/papers/blob/main/dtao-halving-synchronization-2025-v1.pdf) on a problem (and its solution) in the design of Bittensor's Emission halving schedule. | ||
|
||
For a long-form, plain language walk-through, see: [Token Halvings Problem and Solution](./synchronized-halving.md). | ||
|
||
## FAQ | ||
|
||
### What’s the core problem? | ||
Later subnets are structurally disadvantaged: every TAO halving creates a new class of subnets with weaker tokenomics, making them more prone to deregistration, even if they behave identically to earlier cohorts. | ||
|
||
### Why do we need to act before the first TAO halving? | ||
|
||
Because the first halving already creates two permanent classes. Once split, later subnets will be persistently weaker and more deregistration-prone. | ||
|
||
The crux is that injections shrink with the global TAO halving index k, while emissions depend on the subnet’s own ALPHA halving index n. The gap m = n - k controls outcomes, giving exponential advantageous 2^(k-n) to older subnets. | ||
|
||
### What is ADR? | ||
|
||
ADR is the emissions-to-injections ratio. It measures how much ALPHA goes to people (emissions) relative to how much is put into the pool (injections). A higher ADR means liquidation happens at a deeper discount. In the current protocol, ADR tracks 2^(k - n), underlying the subnet cohort asymmetry. | ||
|
||
### Doesn’t buy pressure balance things out between newer and older subnets? | ||
|
||
Not symmetrically. Unstake/slippage depends only on the ALPHA reserve. As injections shrink with k while emissions remain at n, identical sell fractions yank out more TAO in later cohorts. Systematic sell flows (e.g., root) happen every block; buy flows are sporadic. | ||
|
||
### What is the synchronized-halving fix in plain words? | ||
|
||
Make both ALPHA injection and ALPHA emission halve with the same global schedule (k). That kills the gap m. Consequences: no interval compression asymmetry, no liquidation discount vs spot, and liquidity impact becomes cohort-invariant for the same behavior. | ||
|
||
|
||
### What happens to the “21M per subnet” idea? | ||
|
||
This design concept is the root of the problem. Keeping a fixed 21M for every subnet conflicts with eliminating the cohort disadvantage. Synchronizing both ALPHA components to k removes the disadvantage but implies per-subnet max supply depends on registration time. | ||
|
||
|
||
### What are the trade-offs of synchronizing? | ||
- Pro: Removes cohort classes (fairness), simpler mental model, predictable dynamics. | ||
- Con: Per-subnet max ALPHA varies with registration time; requires accepting supply differences and potentially using Zeno-halvings to allow emissions to scale down without limit. | ||
|
||
### Can we fix it by only changing how ALPHA halvings work (emissions-only)? | ||
|
||
That slows interval compression but leaves ADR/liquidity asymmetries intact. You still get unequal max supplies and persistent cohort differences. | ||
|
||
### What is “liquidity impact” and why does it hurt later cohorts more? | ||
It’s the fraction of TAO reserves removed when selling ALPHA. For unstaking, the impact depends only on the ALPHA reserve. Later cohorts get smaller injections into the pool, yet the same emissions to participants, so the same sell fraction removes more TAO. | ||
|
||
### What is the “haircut” on liquidation? | ||
It’s the discount between liquidation price and spot. With ADR>1 (typical for late cohorts), P_L = P/ADR ⇒ a large haircut. Example: ADR=32 ⇒ P_L is P/32 (~97% discount). | ||
|
||
### How does the root proportion change across cohorts? | ||
Later cohorts’ total issuance grows slower over shared horizons, so the root proportion declines more slowly. Practically, root sells a larger share for longer (another persistent disadvantage for later cohorts). | ||
|
||
### What if we do nothing? | ||
|
||
We entrench permanent classes. Later subnets will be weaker across liquidity, liquidation, and incentive trajectories, and be more vulnerable to deregistration even with identical performance. Subnets will also reach their maximum supply in the coming ~10 years (much quicker than intended) and thus stop having emissions without anything to incentivize validators/miners. | ||
|
||
### What changes immediately after the first halving? | ||
|
||
Material shifts appear right away (e.g., the baseline liquidity impact for the same sell fraction rises significantly from ~29% to ~45% in examples discussed). The divergence then compounds with subsequent halvings. | ||
|
||
### What are Zeno-halvings | ||
|
||
Zeno-halvings, based on Zeno's Paradox of movement, embodied in the race between [Achilles and the tortoise](https://en.wikipedia.org/wiki/Infinity#Zeno:_Achilles_and_the_tortoise), and the idea that emissions should be able to halve infinitely, with the emissions becoming smaller and smaller, requiring higher precision token denominations. | ||
|
||
That preserves the intended scaling without “falling off a cliff.” | ||
|
||
### I run a subnet today—what’s the practical takeaway? | ||
|
||
Early cohorts enjoy structural advantages. If the goal is a fair, durable ecosystem that welcomes future subnets, synchronizing the halving schedules (and acknowledging variable max supplies) removes the class disadvantage and simplifies operations. | ||
|
||
|
||
## GLOSSARY | ||
|
||
### TAO (τ) | ||
|
||
The main network token. Its block reward halves on a global schedule. | ||
|
||
### ALPHA (α) | ||
|
||
A subnet’s token. Each subnet has its own ALPHA. ALPHA is created two ways: injected into the AMM and emitted to participants. | ||
|
||
### TAO halving index (k) | ||
|
||
How many global TAO halvings have happened (0, 1, 2, ...). Bigger k means smaller TAO block rewards. | ||
|
||
### ALPHA halving index (n) | ||
|
||
How many ALPHA halvings a specific subnet has gone through (0, 1, 2, ...). Bigger n means smaller ALPHA emissions for that subnet. | ||
|
||
### Cohort gap (m = n - k) | ||
|
||
The single number that explains cohort differences. If m is negative (new subnet registered after multiple TAO halvings), the subnet is disadvantaged; if positive, it’s an earlier cohort with different dynamics. | ||
|
||
### Injection (Δα) | ||
|
||
ALPHA minted into the AMM reserves. It scales with the TAO halving index k (shrinks as k grows). Think: top-ups to the pool driven by global TAO emissions. | ||
|
||
### Emission (Δα′) | ||
|
||
ALPHA minted directly to participants (miners, nominators, etc.) based on the subnet’s own schedule n. | ||
|
||
### TERP (TAO Emission Ratio Property) | ||
|
||
The rule that allocates TAO injections across subnets according to smoothed (EMA) prices. | ||
|
||
### EMA price (p̃) | ||
|
||
Exponentially weighted moving average price; a smoothed price used by TERP to avoid reacting to short-term noise. | ||
|
||
### AMM (Automated Market Maker) | ||
|
||
The on-chain market for swapping TAO and ALPHA. We use the constant-product AMM as the baseline mental model. | ||
|
||
### Liquidity impact (R) | ||
|
||
When users sell/unstake ALPHA, R is the fraction of TAO reserves removed from the AMM. Higher R means worse slippage/impact. | ||
|
||
### ADR (emissions-to-injections ratio) | ||
|
||
Simple version: “How much ALPHA goes to people vs how much is put into the pool.” Formally, ADR_k,n ≈ 2^(k - n) under the baseline. Bigger ADR ⇒ liquidation prices are a smaller fraction of spot (deeper discount). | ||
|
||
### Spot price (P) | ||
|
||
TAO per ALPHA using AMM reserves (τ/α in the pool). | ||
|
||
### Liquidation price (P_L) | ||
|
||
TAO per ALPHA using outstanding supply instead of pool reserves. Under baseline it’s P_L = P / ADR. | ||
|
||
### Haircut (h) | ||
|
||
The liquidation discount relative to spot: h = 1 - (P_L / P). Higher h means worse outcomes on liquidation. | ||
|
||
### Root proportion (r) | ||
|
||
How rewards split between the root stakers and subnet validators; drifts over time with issuance. | ||
|
||
### Synchronized halving (explored fix) | ||
|
||
Make both ALPHA components (injection and emission) follow the global TAO schedule (k). This removes the cohort gap m. | ||
|
||
### Zeno-halvings (precision fix) | ||
|
||
Increase token precision so halvings can continue below the smallest unit; avoids the emission tail rounding to zero. | ||
|
||
### Deregistration | ||
|
||
When a subnet fails to meet economic/operation criteria and gets removed. Later cohorts are more vulnerable under current rules. | ||
|
||
### Cohort/class | ||
|
||
Subnets born between TAO halvings. Each halving creates a new class with different tokenomics under the current design. | ||
|
||
|
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.