From 1845ff1cb4d4e5aa8f5f21680da25a847e2204e8 Mon Sep 17 00:00:00 2001 From: Greg Zaitsev Date: Tue, 12 Aug 2025 12:35:42 -0400 Subject: [PATCH 1/5] BIT-0016: Subnet Deregistration --- bits/BIT-0016-subnet-deregistration.md | 59 ++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 bits/BIT-0016-subnet-deregistration.md diff --git a/bits/BIT-0016-subnet-deregistration.md b/bits/BIT-0016-subnet-deregistration.md new file mode 100644 index 0000000..27dbc4c --- /dev/null +++ b/bits/BIT-0016-subnet-deregistration.md @@ -0,0 +1,59 @@ +# BIT-0016: Subnet Deregistration + +- **BIT Number:** 0016 +- **Title:** Subnet Deregistration +- **Author(s):** John Spiigot, Greg Zaitsev +- **Discussions-to:** [URL for discussion thread] +- **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 +- Centralized distribution of alpha / miner IP / miner coldkeys +- 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. + +The current in-progress implementation may be used as a basis for such discussion, which is described below. + +### Subnet Pruning +- 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: + - Destroy all α-in and α-out stakes + - Distribute remaining Tao to α-out stakers pro-rata + - **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 + +```text +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/). From 6a42ca18327b10c90c24ec5ce89d2f52ab7be94b Mon Sep 17 00:00:00 2001 From: Greg Zaitsev Date: Tue, 12 Aug 2025 12:44:16 -0400 Subject: [PATCH 2/5] Update spec to include return of reg cost --- bits/BIT-0016-subnet-deregistration.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bits/BIT-0016-subnet-deregistration.md b/bits/BIT-0016-subnet-deregistration.md index 27dbc4c..32a2d87 100644 --- a/bits/BIT-0016-subnet-deregistration.md +++ b/bits/BIT-0016-subnet-deregistration.md @@ -36,7 +36,8 @@ The current in-progress implementation may be used as a basis for such discussio ### Network Dissolution -- In `dissolve_network` / `remove_network`, perform full dTao cleanup: +- 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) - Destroy all α-in and α-out stakes - Distribute remaining Tao to α-out stakers pro-rata - **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)`. From cdf2ec2489816ba5ea8ec7a4f67922a621306c20 Mon Sep 17 00:00:00 2001 From: Greg Zaitsev Date: Tue, 12 Aug 2025 12:53:59 -0400 Subject: [PATCH 3/5] Cleanup spec --- bits/BIT-0016-subnet-deregistration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bits/BIT-0016-subnet-deregistration.md b/bits/BIT-0016-subnet-deregistration.md index 32a2d87..12fcfa2 100644 --- a/bits/BIT-0016-subnet-deregistration.md +++ b/bits/BIT-0016-subnet-deregistration.md @@ -23,8 +23,8 @@ The final specification is yet to be discussed. We can only propose several crit - Lack of demand for subnet Alpha token - Low subnet price and emissions -- Centralized distribution of alpha / miner IP / miner coldkeys - 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. @@ -38,8 +38,8 @@ The current in-progress implementation may be used as a basis for such discussio - 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) - - Destroy all α-in and α-out stakes - 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 From ab864b78f09f891fe25db2fbbec027751cb5002c Mon Sep 17 00:00:00 2001 From: gztensor <166415444+gztensor@users.noreply.github.com> Date: Tue, 12 Aug 2025 14:09:14 -0700 Subject: [PATCH 4/5] Update bits/BIT-0016-subnet-deregistration.md Co-authored-by: Maciej Kula --- bits/BIT-0016-subnet-deregistration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bits/BIT-0016-subnet-deregistration.md b/bits/BIT-0016-subnet-deregistration.md index 12fcfa2..63896ac 100644 --- a/bits/BIT-0016-subnet-deregistration.md +++ b/bits/BIT-0016-subnet-deregistration.md @@ -3,7 +3,7 @@ - **BIT Number:** 0016 - **Title:** Subnet Deregistration - **Author(s):** John Spiigot, Greg Zaitsev -- **Discussions-to:** [URL for discussion thread] +- **Discussions-to:** https://discord.com/channels/1120750674595024897/1346557046761324545 - **Status:** Draft - **Type:** Core - **Created:** 2025-08-12 From d20499433a0011fbe27e535d256cc5364abcbe60 Mon Sep 17 00:00:00 2001 From: gztensor <166415444+gztensor@users.noreply.github.com> Date: Tue, 12 Aug 2025 14:09:48 -0700 Subject: [PATCH 5/5] Update bits/BIT-0016-subnet-deregistration.md Co-authored-by: Maciej Kula --- bits/BIT-0016-subnet-deregistration.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/bits/BIT-0016-subnet-deregistration.md b/bits/BIT-0016-subnet-deregistration.md index 63896ac..13f4c67 100644 --- a/bits/BIT-0016-subnet-deregistration.md +++ b/bits/BIT-0016-subnet-deregistration.md @@ -48,7 +48,18 @@ Add new sudo hyperparameter `SubnetLimit` starting at `256`. ### High-Level Flow -```text +```mermaid +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
] --> 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