Skip to content

Commit 40405dd

Browse files
authored
Merge pull request #93 from latent-to/subsubnet-updates
update subsubnet docs
2 parents 1316b24 + 2402d63 commit 40405dd

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

docs/subnets/understanding-sub-subnets.md

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
77

88
# Introducing Sub-Subnets
99

10-
Historically, each subnet operates with a single **incentive mechanism**, a function that validators run to assign weights to miners based on the value of their work. The **Sub-Subnets** feature allows a subnet creator to apportion the subnet's emissions across multiple **sub-subnets**, each of which runs Yuma Consensus *independently* to evaluate the miners' performance on each of a number of distinct tasks.
10+
Historically, each subnet operates with a single **incentive mechanism**, a function that validators run to assign weights to miners based on the value of their work. The **Sub-Subnets** feature allows a subnet creator to apportion the subnet's emissions across multiple **sub-subnets**, each of which runs Yuma Consensus _independently_ to evaluate the miners' performance on each of a number of distinct tasks.
1111

1212
Each miner receives emissions separately within each sub-subnet, so a miner's performance within one sub-subnet does not affect their rating in another, and their emissions for each epoch are summed across the sub-subnets. Validators receive dividends as a weighted sum of their performance across all sub-subnets - they cannot choose which sub-subnets to validate, and if they don't validate all sub-subnets, they receive proportionally reduced emissions. Sub-subnets don't change the total emissions to a subnet, but create a way for subnet creators to distribute those emissions to miners working on different tasks. This mechanism affords subnet creators a transparent, on-chain way to exercise fine-grained control over the work they are incentivizing, keeping miner effort focused on work that is most needed at a time.
1313

@@ -22,17 +22,19 @@ Each sub-subnet has its own:
2222

2323
1. **Same Validators, Same Stake**: All validators participate in all sub-subnets within a subnet with identical stake weights.
2424
2. **Same Miners**: All miners registered on a subnet can participate in any or all of its sub-subnets.
25-
3. **Owner-Controlled Proportions**: The holder of the *subnet creator* key sets the emission distribution among sub-subnets.
25+
3. **Owner-Controlled Proportions**: The holder of the _subnet creator_ key sets the emission distribution among sub-subnets.
2626
4. **Separate Yuma Consensus**: Each sub-subnet runs its own consensus to determine miner rankings.
2727

2828
## What Should Stakers Know?
2929

3030
**Core Impact:**
31+
3132
- **No change to your staking mechanics**: Your stake is delegated to a validator on a subnet, and applies across all sub-subnets equally.
32-
- **Same total emissions**: The subnet's total emissions and remain unchanged - sub-subnets only redistribute these emissions internally among miners and validators.
33+
- **Same total emissions**: The subnet's total emissions remain unchanged - sub-subnets only redistribute these emissions internally among miners and validators.
3334
- **Transparent allocation**: All emission proportions are visible on-chain, so you can see exactly how subnet owners are distributing emissions.
3435

3536
**What This Means for Your Strategy:**
37+
3638
- **No immediate action required**: Your existing staking strategy doesn't need to change
3739
- **Enhanced monitoring**: You may want to track sub-subnet performance to understand subnet health
3840
- **Risk assessment**: Factor in sub-subnet design when evaluating subnet quality
@@ -41,10 +43,12 @@ Each sub-subnet has its own:
4143
## What Should Miners Know?
4244

4345
**Automatic Participation:**
46+
4447
- **No separate registration**: When you register for a subnet, you are eligible to participate in any of its sub-subnets
4548
- **Same UID across all sub-subnets**: You use the same UID for all sub-subnets within a subnet
4649

4750
**Performance Tracking:**
51+
4852
- **Independent scoring**: Your performance is independent in different subnets, e.g. sub-subnet 0 doesn't affect your rating in sub-subnet 1.
4953
- **Separate incentive columns**: You'll see individual incentive amounts for each sub-subnet in metagraph data.
5054
- **Cumulative emissions**: Your total emissions = sum of emissions from all sub-subnets where you participate.
@@ -62,22 +66,26 @@ Each sub-subnet has its own:
6266
### Operational Changes
6367

6468
**1. Evaluation Workload:**
69+
6570
- **Multiple assessments**: You must evaluate miners separately for each sub-subnet's tasks
6671
- **Different criteria**: Each sub-subnet may have distinct evaluation standards
6772

6873
**2. Data Structure Changes:**
74+
6975
- **Two-dimensional weights**: Weights are now set for each miner on each subnet.
7076
- **Separate incentive tracking**: Each sub-subnet tracks incentives independently
7177
- **Extended metagraph**: New columns for sub-subnet weights and incentives
7278

7379
## What Should Subnet Creators/Developers Know?
7480

7581
### Core Changes
76-
- **Emission distribution**: You can control what percentage of total emissions goes to each sub-subnet using the `sudo_set_subsubnet_emission_split` extrinsic. When the number of sub-subnets is set, the emission distribution is reset to even, but you can set it again with custom proportions.
7782

78-
:::info
79-
The `sudo_set_subsubnet_emission_split` extrinsic accepts an optional vector parameter. If the parameter is `None`, the distribution is set to an even split. When it's not `None`, it reflects the proportion of emissions each sub-subnet gets. The proportion is calculated as `value / 65535`. For example, with two sub-subnets and vector `[13107, 52428]`, sub-subnet 0 gets 20% and sub-subnet 1 gets 80%. <!-- See: subtensor/pallets/subtensor/src/subnets/subsubnet.rs:173-175 -->
80-
:::
83+
- **Emission distribution**: You can control what percentage of total emissions goes to each sub-subnet using the `sudo_set_subsubnet_emission_split` extrinsic. When the number of sub-subnets is set, the emission distribution is reset to an even split, but you can set it again with custom proportions.
84+
85+
:::info
86+
The `sudo_set_subsubnet_emission_split` extrinsic accepts an optional vector parameter. If the parameter is `None`, the distribution is set to an even split. When it's not `None`, it reflects the proportion of emissions each sub-subnet gets. The proportion is calculated as `value / 65535`. For example, in a subnet with two sub-subnets and vector `[13107, 52428]`, sub-subnet 0 gets 20% and sub-subnet 1 gets 80%. <!-- See: subtensor/pallets/subtensor/src/subnets/subsubnet.rs:173-175 -->
87+
:::
88+
8189
- **Incentive mechanism design**: You define the specific tasks and evaluation criteria for each sub-subnet
8290
- **Transparent configuration**: All sub-subnet settings are visible on-chain for community oversight
8391
- **Single subnet slot**: No need to register multiple subnets for multiple competitions
@@ -92,12 +100,13 @@ Ensure proportions sum to 100% when setting them, or the request will be rejecte
92100

93101
For each subnet, the subnet creator keeps 18% of emissions, 41% is allocated to miners, and 41% to validators and their stakers, unless the subnet creator has reduced their take. Of the 41% that goes to miners and validators, here is an estimated emission distribution across three sub-subnets for each 100 $\tau$ earned on the subnet:
94102

95-
- Sub-subnet 0 (60%): 100 $\tau$ *.41 * .6 = 24.6
96-
- Sub-subnet 1 (30%): 100 $\tau$ *.41 * .3 = 12.3
97-
- Sub-subnet 2 (10%): 100 $\tau$ *.41 * .1 = 4.1
103+
- Sub-subnet 0 (60%): 100 $\tau$ _.41 _ .6 = 24.6
104+
- Sub-subnet 1 (30%): 100 $\tau$ _.41 _ .3 = 12.3
105+
- Sub-subnet 2 (10%): 100 $\tau$ _.41 _ .1 = 4.1
98106

99-
**Setting Custom Proportions:**
107+
:::info Setting Custom Proportions
100108
To achieve the above distribution, the subnet owner would submit the `sudo_set_subsubnet_emission_split` extrinsic with the vector `[39321, 19660, 6554]` (calculated as 60% × 65535, 30% × 65535, 10% × 65535).
109+
:::
101110

102111
Note that a miner who excels in sub-subnet 0 but performs poorly in others might receive more emissions than a miner who performs moderately across all sub-subnets, depending on the emission proportions and their relative performance.
103112

@@ -114,7 +123,6 @@ UID | Hotkey | Stake | Sub-subnet 0 Weights | Sub-subnet 1 Weights | Sub-subnet
114123

115124
## Backward Compatibility
116125

117-
- Existing subnets continue with only one subnet (sub-subnet 0) collecting all emissions by default
126+
- Existing subnets continue with only one sub-subnet (sub-subnet 0) collecting all emissions by default
118127
- All existing API calls default to sub-subnet 0
119128
- No breaking changes to current functionality
120-

0 commit comments

Comments
 (0)