-
Notifications
You must be signed in to change notification settings - Fork 18
BIT-0016: Subnet Deregistration #29
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
base: main
Are you sure you want to change the base?
Changes from all commits
1845ff1
6a42ca1
cdf2ec2
ab864b7
d204994
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,71 @@ | ||||||||||||||||||||||||||||
# BIT-0016: Subnet Deregistration | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
- **BIT Number:** 0016 | ||||||||||||||||||||||||||||
- **Title:** Subnet Deregistration | ||||||||||||||||||||||||||||
- **Author(s):** John Spiigot, Greg Zaitsev | ||||||||||||||||||||||||||||
- **Discussions-to:** https://discord.com/channels/1120750674595024897/1346557046761324545 | ||||||||||||||||||||||||||||
- **Status:** Draft | ||||||||||||||||||||||||||||
- **Type:** Core | ||||||||||||||||||||||||||||
- **Created:** 2025-08-12 | ||||||||||||||||||||||||||||
- **Updated:** 2025-08-12 | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
## 🔍 Abstract | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
This BIT proposes reenabling of subnet deregistration. | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
## 🔧 Motivation | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
Since the dTao launch, the non-functional subnets keep consuming emissions, as well as chain footprint and compute resources. The existing subnet deregistration (dissolve_network / remove_network) is no longer working correctly and is disabled. | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
## 🧪 Specification | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
The final specification is yet to be discussed. We can only propose several criteria to determine which subnets should be deregistered first. Note that because deregistration is an on-chain process, the criteria should only use data available on chain. | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
- Lack of demand for subnet Alpha token | ||||||||||||||||||||||||||||
- Low subnet price and emissions | ||||||||||||||||||||||||||||
- Unfavorable ratio and/or values of subnet parameters such as TAO and Alpha pool liquidity, Alpha circulating, Alpha issued, Alpha burned, FDV, Alpha volume, etc. | ||||||||||||||||||||||||||||
- Only allow deregistration of subnets which would have a higher value of Alpha from liquidation than from unstaking | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
The current in-progress implementation may be used as a basis for such discussion, which is described below. | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
### Subnet Pruning | ||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I assume that's outdated, because it still mentions the old behavior (lowest emission)? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, that's just whatever starting point design was. It's an open discussion. |
||||||||||||||||||||||||||||
- Triggered when `SubnetLimit` is reached | ||||||||||||||||||||||||||||
- **Step 1:** Exclude subnets still within `NetworkImmunityPeriod` | ||||||||||||||||||||||||||||
- **Step 2:** Among the rest, find the subnet with the lowest current emission | ||||||||||||||||||||||||||||
- **Step 3:** If multiple share the same emission, pick the one with the earliest registration timestamp | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
### Network Dissolution | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
- In `dissolve_network` / `remove_network`, perform full dTao cleanup: | ||||||||||||||||||||||||||||
- Return the registration cost to the owner (or owners in case if it was a crowdloan) | ||||||||||||||||||||||||||||
- Distribute remaining Tao to α-out stakers pro-rata | ||||||||||||||||||||||||||||
- Destroy all α-in and α-out stakes | ||||||||||||||||||||||||||||
- **Adjust the owner’s returned lock cost** by subtracting the portion of total emissions the owner actually received (`owner_received_emission = E * get_float_subnet_owner_cut()`), so the final refund is `max(0, lock_cost - owner_received_emission)`. | ||||||||||||||||||||||||||||
- Maintain **root-only** access to direct calls for now | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
### Explicit Subnet Limit | ||||||||||||||||||||||||||||
Add new sudo hyperparameter `SubnetLimit` starting at `256`. | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
### High-Level Flow | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
```mermaid | ||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It has both the mermaid chart and the old content in the code block right now (syntax broken) |
||||||||||||||||||||||||||||
flowchart TD | ||||||||||||||||||||||||||||
A[New Registration] --> B{Check Subnet Limit?} | ||||||||||||||||||||||||||||
B -->|No| C[Register New Subnet] | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
B -->|Yes| E[Prune a Subnet] | ||||||||||||||||||||||||||||
E --> F[Deregister] | ||||||||||||||||||||||||||||
F --> G[Register New Subnet] | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
H[Deregistration<br/>] --> I[Destroy α-in/out] | ||||||||||||||||||||||||||||
I --> J[Distribute TAO] | ||||||||||||||||||||||||||||
J --> K[Remove Network] | ||||||||||||||||||||||||||||
New Registration → check slot cap? | ||||||||||||||||||||||||||||
├─ No → register network, grant immunity | ||||||||||||||||||||||||||||
└─ Yes → prune one subnet → deregister → register new | ||||||||||||||||||||||||||||
Deregistration (manual or pruning) → destroy α-in/out → distribute Tao → remove network | ||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
## © Copyright | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
This document is licensed under [The Unlicense](https://unlicense.org/). |
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The table below shows which subnets would be the "first ones" to get deregistered should they be not in immunity based on the criteria of having a higher value of ALPHA from liquidation than from unstaking, sorted/ordered by lowest price first.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is one "problem" with this criteria though, because NAV in the most simple way means
ALPHA in the pool > ALPHA held by users
, post-halving each new subnet would naturally lean towards a NAV < 1 given that the ALPHA injected into the pool should be halved, while the ALPHA emitted to participants will stay the same until the ALPHA halving of the subnet.This makes older subnets more vulnerable to being registered with this criteria.