At ICX, we are implementing a DAO with the “rage quit” feature. This feature allows members to quit the DAO with their share of the ICP treasury if they disagree with a proposal (by burning ICX tokens). This is something we have had in mind for a long time and has become especially interesting since the withdrawal incident. These kinds of DAOs are pretty famous and well-regarded in Ethereum.
To do that, it would be quite useful to implement a couple of primitives such as:
Allow the transfer of SNS neurons from the NNS dapp.
Either dissolve or burn neurons via SNS governance proposals.
We would like to know if it’s possible to implement these features or if there already exists a way to do them. This way, we don’t need to use a process like the one in idGeek (transfer II, detach neurons, etc).
Thanks!
EDIT: Actually, I think it is enough to be able to dissolve a list of neurons from SNS governance proposals for our use case. @bjoernek
Hi @Seers ,
Let me ask a few clarification questions first…
to quit the DAO with their share of the ICP treasury if they disagree with a proposal
How would someone’s share of the ICP treasury be established? By their share of the voting power compared to the overall voting power?
Allow the transfer of SNS neurons from the NNS dapp.
What exactly do you mean here? That the NNS dapp offers an option to transfer an SNS neuron to someone else?
Either dissolve or burn neurons via SNS governance proposals.
Does this always require a proposal or could this even be automated (i.e., if a user decides to leave then the neuron is burned automatically)?
In either case, I wonder if this could be implemented by a DAO-owned canister. If a proposal is needed, one could maybe use generic proposals ?
If you would like to discuss some design ideas in a bit more detail, do you know about the SNS office hours? The next one will take place in 2 weeks and you can find more info here.
How would someone’s share of the ICP treasury be established? By their share of the voting power compared to the overall voting power?
I think the fairest way is to reverse the operation that constructed the treasury (as much as possible). We would divide the treasury by the number of tokens in circulation, excluding developer tokens, and without taking into account VP.
What exactly do you mean here? That the NNS dapp offers an option to transfer an SNS neuron to someone else?
Yes, exactly. For instance, a user can deposit their ICX neuron into one of our canisters, we can burn it (or dissolve and then burn the unlocked tokens), and they will receive ICP in return.
However, as far as I know, we can’t transfer a neuron from the NNS dapp, and we can’t dissolve or burn neurons. Otherwise, I guess idgeek wouldn’t need to transfer the II and then detach the neuron.
If you would like to discuss some design ideas in a bit more detail, do you know about the SNS office hours?
We would divide the treasury by the number of tokens in circulation, excluding developer tokens, and without taking into account VP.
Would this mean that only the stake matters and things like dissolve delay etc are irrelevant? I.e., no matter if someone staked for a short or long time they would just get the share of the treasury that they contributed?
Would this also be true if e.g., the treasury grew in the meantime?
And just to make sure: this could be done on a per-neuron basis, right? So each neuron could individually decide to leave the DAO?
However, as far as I know, we can’t transfer a neuron from the NNS dapp, and we can’t dissolve or burn neurons.
Yes, that’s right. Here I think we have to think about the tradeoff whether this is something that is beneficial for the SNS framework or whether this might be overwhelming for the users of most SNSs because it is rarely used. We should think about this a bit more.
Happy to jump in on the next one if needed.
Great, could you maybe fill in this form with a brief summary of your open questions (or a link to this thread) so that we know what this is about? Thank you!
Would this mean that only the stake matters and things like dissolve delay etc are irrelevant? I.e., no matter if someone staked for a short or long time they would just get the share of the treasury that they contributed?
Yes, only the amount of tokens matter, dissolve delay would be are irrelevant for this feature. Otherwise, I think it gets too complicated for not much gain.
Would this also be true if e.g., the treasury grew in the meantime?
Treasury changes will get reflected on the exchange rate between ICX neurons and ICP. That includes both treasuries.
And just to make sure: this could be done on a per-neuron basis, right? So each neuron could individually decide to leave the DAO?
Yes, per-neuron basis.
Here I think we have to think about the tradeoff
This is my analysis of each item:
I think implementing the SNS neuron transfer in the NNS dapp should be okay, since it’s a minimal change and saves users from transferring the II instead. In this latter case, they are transferring all the neurons at the same time to idGeek (or other dapps popping up), and it feels too risky when you could simply transfer the neuron that you want and save fees.
Being able to burn neurons by sending them to some address, like we do with tokens, doesn’t seem too complex to implement or too much of a change. Also, it’s safe since you are just burning them.
Note: I don’t think these features are too niche, as I don’t see any other way to protect users. DAO founders might not be interested in having these kinds of checks for obvious reasons, but I think that’s not a valid reason to not implement these primitives.
But it’s just a statement of fact. Proposal 13 of the ICX DAO states very explicitly:
This ‘Proposal for Funding’ aims to allocate 150,000 ICP from the ICX DAO Treasury to the Developer Organization.
The proposal was adopted by the DAO and passed. Which means that the ICP treasury has been assigned to the “software development service provider (Pense, Lda)” and is not under the control of the DAO anymore. It’s literally in the proposal.
This proposal from the community was adopted by nearly all of the DAO, overwriting the previous one: Adopt rage quit mechanism
That’s why I created this thread. Otherwise, I wouldn’t have created it, obviously. Please ask before making assumptions.
You also know that the treasury is staked, which is why it wasn’t returned yet. I have discussed this on Twitter, OpenChat during the last months. I have also talked with Lomesh.
Although it seems unbelievable that this even needs to be said, we would appreciate it if DFINITY employees refrain from spreading FUD and misinformation about our project, especially when using their official accounts. There have been many such cases.
Finally, I would insist that we keep this thread on topic. Please create another thread if you have any further “facts”.
We have a rather packed roadmap of exciting features that we are working on, which makes it hard to prioritise a neuron transfer function in the NNS dapp anytime soon. These 3 are the ones that are currently in progress:
Actionable Proposals (almost done)
Neurons Table
Importing ICRC tokens
However, there is a relatively simple way of transferring neurons using quill. You will need to add principal ID(s) that you want to hand control over to, and then remove your own principal ID once successful. You can find the documentation here.
I forgot to clarify in our chat that this is intended for non-technical users, not for myself. It should be just a little input form on the NNS frontend.
But I guess it is useful for all sort of DeFi with neurons. For instance, without going too far, right now people sell SNS neurons on idGeek by transfering the whole II (with all neurons on it) instead of transfering the specific neuron they want to sell, which is too risky imo, as they could lose all of them by mistake.
Can you elaborate on this? What is supposed to be being returned?
I understand that the ICX DAO would like to see a rage quit feature implemented but with a treasury of 0 don’t you think this is putting the cart before the horse?
The ICP treasury is not at zero; the dashboard shows zero because it’s not in the ‘dashboard canister.’ It’s currently staked (containing almost the initial amount) and will dissolve next week.
We will move the ICP (part of it to be safe) to a canister under the SNS that implements this feature, so it will still not show the full amount in the SNS dashboard. However, we will implement our own dashboard.
The treasury amount for SNSs is no longer reflected accurately in the official SNS dashboards. This applies to many SNSs, including OpenChat. However, they have 10x more treasury from the start, so it’s harder to notice.
Transferring neurons in the NNS dapp is currently not on the roadmap, but I will bring it up with the team to see if we can prioritise it. Given that it’s already possible for neurons not in the NNS dapp, it definitely makes sense to add this. The question is just about how/when we can prioritise it.