diff --git a/bits/BIT-0016-subnet-deregistration.md b/bits/BIT-0016-subnet-deregistration.md new file mode 100644 index 0000000..13f4c67 --- /dev/null +++ b/bits/BIT-0016-subnet-deregistration.md @@ -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 +- 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 +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 +Deregistration (manual or pruning) β†’ destroy Ξ±-in/out β†’ distribute Tao β†’ remove network +``` + +## Β© Copyright + +This document is licensed under [The Unlicense](https://unlicense.org/).