-
Notifications
You must be signed in to change notification settings - Fork 18
BIT-0015: Subnet Owner Emission Splitting #28
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?
Conversation
|
||
When subnet ownership is transferred via coldkey swap, there are two potential approaches for handling existing emission splits: | ||
|
||
1. **Preserve Splits**: Sub-owners remain unchanged and can be altered by the new owner once the swap is completed. This provides continuity but may not reflect the new owner's intentions. |
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.
I personally don't know if preserving the splits would make sense, given most of the time the coldkey swap is done to transfer the ownership from entity A to entity B.
In the case of the owner actually just swapping from coldkey A to coldkey B, it sounds less like a "problem" for them to rearrange the splits, than possibly a new owner not knowing of the existing splits, having their cut drained by the previous owner. (just an idea/worst case of malicious selling)
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.
Disagree here, as a subnet should be owned by the 'sub-owners', not the owner. IMO this feature is best used to get rid of the concept of a singular owner completely and instead have lots of fractional owners - i.e. decentralised ownership
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.
Agreed /w Namoray here.
The whole point of adding an sn owner split is to split up the ownership of the subnet.
If an ownership transfer results in "full" transfer of the ownership the smaller owner shares are basically rendered to Null.
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.
If an ownership transfer results in "full" transfer of the ownership the smaller owner shares are basically rendered to Null.
That's what I meant, isn't it? Should the underlying "SN owner" key be CK swapped (resulting in a full-transfer), then the sub-owners/splits should be removed/cleared.
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.
That's what I meant, isn't it? Should the underlying "SN owner" key be CK swapped (resulting in a full-transfer), then the sub-owners/splits should be removed/cleared.
Depending to whom the CK is swapped, I think he sub-owners should or should no be cleared. If its an internal transfer, clearing the sub-owners doesn't make sense and requires more operation burden. However, they should probably be cleared for a transfer to another party. Then the question is, when should the sub owners be cleared? During the scheduling of the transfer, or during the actual transfer 5 days layer.
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.
I do agree that by default the sub-owners should be cleared. Maybe we can add an "is_internal" key to the swap_coldkey call that skips this. And clearing should happen during actual transfer.
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.
I think trying to automate some clearing of sub-owners has very little pros and a huge con
If you do that, it removes the ability to have decentralised ownership. They aren't sub owners, and the implementation is then just a small convenience to prevent manual transfers, and I see little reason to implement that. There is still a 'true' owner key and all the ramifications of that.
If you don't have this small convenience, then you have actual true split ownership. Each coldkey are completely independent, and each actually own a fraction of the subnet, which is incredibly useful for legal & operational reasons + removes trust. It actually allows the decentralisation of that ownership.
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.
If you do that, it removes the ability to have decentralised ownership. They aren't sub owners, and the implementation is then just a small convenience to prevent manual transfers, and I see little reason to implement that. There is still a 'true' owner key and all the ramifications of that.
I like the idea of having multiple "owners" (not just the emission splitting). Seems like a larger/different proposal though and then there is also this. A question though if there would be no "true" owner in case of multiple ones, how would the emission split be decided for example, just 0.18/n_owners
or can any one of them propose to change the split and requires m of n_owners
to sign (multi-sig like)? I assume changing hyperparameters would then also be m of n_owners
.
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.
If you don't have this small convenience, then you have actual true split ownership. Each coldkey are completely independent, and each actually own a fraction of the subnet, which is incredibly useful for legal & operational reasons + removes trust. It actually allows the decentralisation of that ownership.
This proposal is mostly for splitting the ownership emissions from the ownership actions. For example you could already make your independent coldkey structure with a multisig, where you need a majority of the multisig signers to change hyperparams. However you would also need all signing for moving alpha around which is not optimal. You can look at the structure in the image below. We have implemented it for SN65, so this is already possible.

What my proposal tries to accomplice is to make the emission distribution simpler when dealing with multiple parties. When you are talking about a small convenience, in the case of the setup above, you would need multiple signatures for each alpha transfer. With this proposal you can make a distribution, and you would only need the signatures if you want to alter the distribution. So it is also a nice building block for building out more complicated voting structures later on, where the multisig is replaced with a full on chain governance system for example. Hope this clarifies the intention of the proposal.
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.
A question though if there would be no "true" owner in case of multiple ones, how would the emission split be decided for example, just
0.18/n_owners
or can any one of them propose to change the split and requiresm of n_owners
to sign (multi-sig like)? I assume changing hyperparameters would then also bem of n_owners
.
Emission splits could be as simple as; anyone can give away some or all of their share to another key.
And hyperparams would be X% of emissions required for example.
With what Vstam1 implemented combined with the subnet leasing feature, everything I described may already be achievable.
imo, this makes more sense as a pallet creating an account abstraction, forking the multi-sig pallet or something. |
You mean abstracting it away from the subtensor pallet, right? New pallet will still be part of the runtime so either direction, it will be coupled with the runtime.
I don't think forking the multisig pallet is the right solution for this use case. Subnet owners can already implement multisig ownership structures (Subnet 65 has already taken this approach). |
By "not so coupled" I mean it will be less coupled than if we integrate it directly into the same pallet. We should treat it like a separate module.
I think you're taking me too literally. I mean something similar to the Multisig pallet. Where there is a new account abstraction that can be used. Possibly you'd create it by specifying where new stake goes and it's distribution, who is the proxy for executing transactions, etc.
Exactly, it should be modular. I just don't think putting it into the subtensor pallet would be best. Designing it to function on its own will probably work out nicer. |
It's definitely possible to move all the distribution logic to another pallet, where it starts simple and can be built out afterwards. Let's call this pallet Is this the way you are imagining it? I can alter this BIT to include this as a second solution as well. |
Reading through the proposal, I see some similarities with how the current leasing system works (only available for new subnet through crowdloan). To give some context, at the moment leased network can only be registered through a crowdloan. Logic is already in place for proportional owner cut distribution to different shareholders (distribution logic and coinbase hook) every interval of 1000 blocks. Owner cut is accumulated during this time and distributed when the block number modulo this interval is 0 (to avoid running it too often if there is a large number of leased networks given it must go over all leased networks contributors). A shareholder share to the lease is defined by his contribution over the crowdloan cap when the crowdloan is finalized. A lease creator can also defines if he wants to distributes a percent of the owner cut (for example 50% of the actual owner cut). The lease creator can operates the subnet using the proxy created when the lease is created. There is no actual way to transfer your shares to some other coldkey. Now, to make it possible to have a lease for an actual active subnet, the following needs to be done:
1 and 2 can be made relatively easily with the actual implemented logic by extracting reusable parts. The distribution would not change at all (except if I'm missing something?) and 3 would need a well thought and flexible implementation to have different strategies that can be used to govern the subnet operations. |
@l0r1s Thanks for the detailed reply! A couple of notes on the implementation details you described above.
Is it possible to make the end block configurable? I could see situations where there are subnet deals where other parties only receive subnet shares for 1-2 years, for example. This is especially the case for subnet incubators that help subnets with initial setup. Making this setting optional would help a lot with flexibility and different lease structures.
Would this work alongside the admin proxy access, or would we need to handle all hyperparameter changes based on this voting strategy? One thing I personally don't like (and I think many subnet owners would agree) is that the alpha share these shareholders receive is automatically sold for TAO. This puts serious downward pressure on the subnet price and would require manual alpha buybacks if these shareholders actually want to hold alpha instead of TAO, opening up MEV opportunities. I'd rather see all shareholders receiving alpha directly staked to the owner's hotkey. Then these shareholders can decide for themselves when they want to sell the alpha. This creates more stability for a subnet, which is preferable from an owner's perspective. Last question regarding the pallet-derived coldkey/hotkey: Would this mean that an owner wouldn't be able to run a validator on their own netuid, since they can't directly sign set_weights extrinsics as the hotkey is a derived account? It's just a design decision to consider, but I was wondering if you'd already thought about it. |
I don't understand this. If anything, you would specify a voting mechanism in the pallet and use a call-filter, similar to the proxy_pallet, to make sure only some calls are allowed or what quorum they require. The reason that EVM is so often suggested here is because this sort of voting mechanism and token-holder rights (as you guys all discussed above) are perhaps better dictated on a case-by-case basis, and therefore not generic enough for a pallet (think software vs firmware). |
Yes, at the moment you can put a
The proxy in the case of a new network lease is for the future subnet owner to be able manage the lease while he doesn't have ownership of the subnet but in the case of active network there is probably no "future owner" because we want to keep the decision making voted across shareholders. In that case, the voting abstraction is probably better and having something similar to the "prime member" in the collective pallet where we first try to have a majority of shareholders to agree on a vote or we default to prime member vote.
I think this is something that could be changed to be more flexible, instead of unstaking the alpha that needs to be distributed and transferring tao for the shareholders, we could have a second strategy that transfers stake to the shareholders
I haven't thought about it but I feel like this break the assumption that the ownership of subnet is decentralized, no? |
Thanks @l0r1s!
You said you would start working/designing this system next week. Are you first writing a BIT and do you need help? I would also suggest to keep this BIT open as well as an alternative solution, so owners can have a vote on which design they prefer. |
Summary
This BIT introduces subnet owner emission splitting, allowing subnet owners to automatically distribute their alpha emissions among multiple sub-owners using proportional shares. Building on the proven childkey delegation system, it enables collaborative development models, multi-party ownership structures, and separation of ownership control from reward distribution. The proposal maintains full backwards compatibility with existing subnets while adding new storage and extrinsics for configuring splits with a cooldown mechanism. All sub-owners stake to the owner hotkey, preserving existing validator consensus mechanisms, and scheduled changes are automatically executed during the epoch process. This enhancement removes the need for manual redistribution or complex external smart contracts, reducing operational overhead and enabling more flexible subnet ownership models.