The community fund (CF) was announced in October ‘21 in a Medium article as a way for the community to invest in the Internet Computer ecosystem. Since November ‘21 users can mark NNS neurons as CF neurons.
During the development of service nervous systems (SNSs) the thinking on the design of the community fund evolved.
In particular, we propose using the maturity instead of the stake of CF neurons for the investment in SNS dapps. This minimizes the impact on the overall tokenomics of the system and provides a less risky investment option while keeping the ability to invest in the IC ecosystem.
Given that the design idea has evolved, users who already joined the CF will have the ability to opt out during a period of three months prior to go-live.
In the following, we provide further details on the proposed design of the CF including an assessment, alternatives considered and Q&A.
Community conversation and timeline
To get the design approved by the community, we propose the following schedule:
Starting mid June: Design discussion on this forum thread
July: Depending on the feedback, potentially a community conversation.
Afterwards, submit a motion proposal including potential feedback from the community.
The CF will not be part of the initial roll-out of the SNS (Carbon release)
The community fund (CF) was announced in October ‘21 in a Medium article as a way for the community to invest in the Internet Computer ecosystem with the following objectives:
Use NNS neurons to fund a wide range of SNS dapps on the Internet Computer.
Tap the knowledge of the community in the investment process.
Give the opportunity to automatically involve NNS neurons in this mechanism.
Given the above objectives, we propose a simple & practical solution which integrates well in the new proposed SNS initial token swap. In particular, we suggest using the maturity instead of the stake of CF neurons for the investment in SNS dapps. This minimizes the impact on the overall tokenomics of the system and provides a less risky investment option while keeping the ability to invest in the IC ecosystem.
The investment process of the community fund can be split into four phases: Joining the community fund, making an investment decision, conversion of maturity of CF neurons, and the swap transaction. In the following we describe these four phases in more detail.
The NNS frontend dapp already contains a CF toggle via which NNS neurons can be flagged as CF neurons. By using the CF toggle, a NNS neuron joins the CF. The toggle cannot be reversed after the go-live of the CF. A NNS neuron can leave the community fund only via dissolving.
A CF neuron is still owned by the according neuron holder and can continue to participate in NNS voting.
The maturity of a CF neuron is controlled by the CF, i.e., a neuron holder cannot trigger operations on the maturity anymore, such as merge maturity and spawn maturity (which will be called stake maturity and disburse maturity after the implementation of compounding maturity). The idea is that the maturity of the CF neuron is fully at the disposal of the CF for investing in SNS dapps.
Phase 2 - Investment decision
Via a new NNS proposal category “community fund”, all CF neurons can vote on proposed investment decisions.
The voting power of CF neurons is derived as for other NNS voting.
A CF proposal needs to contain the target SNS and the amount X of ICP to be invested.
Phase 3 - Maturity conversion
The target amount X of maturity of CF neurons is converted 1:1 to ICP.
Each CF neuron contributes maturity in units of ICP (i.e. maturity[%] x stake) pro-rata in relation to the total maturity available to the CF.
Example: Let’s assume that the maturity of all CF neurons is 100k with 100 CF neurons providing 1k maturity each. Further, let’s assume that the CF decides to invest an amount of X=10k in one particular SNS. Then each CF neuron will contribute 10k * 1k/100k = 100 maturity.
Phase 4 - Initial swap transaction
The ICP derived in the previous step enters the SNS swap canister.
Each CF neuron holder receives SNS neurons individually according to the provided maturity.
Assessment & benefits
We see the following benefits of the proposed design:
Practical & extendable: The design is a practical solution which integrates well into the standard SNS investment process via the swap canister. In a subsequent phase it could be potentially extended, e.g., by swapping NNS neurons against SNS neurons instead of just swapping their maturity.
Tapping community expertise and automation: Investors can benefit from the expertise of the community in SNS investment decisions. They can contribute to the investment discussion and voting, but they do not have to participate in that process. Once a NNS neuron is flagged as a CF neuron, the investment process is automated from the perspective of the neuron holder.
Impact on tokenomics: By using just the maturity of the CF neurons, there is no side-effect on the supply of liquid ICP. The maturity of these neurons can be spawned also without the involvement of the CF.
Low risk: The proposed design offers a low risk entry point into SNS investment for NNS neuron holders because only the maturity and not the staked ICP will be used.
Liquidate the ICP of CF neurons: This option would have the benefit of providing further funding power to SNSs. It has however the drawback that it potentially adds a lot of liquid ICP to the market, which might have a big impact on the tokenomics of the ICP ecosystem.
Swap neurons instead of maturity, i.e. investors receive SNS neurons and the SNS receives NNS neurons. This option would be technically slightly more complex, as the swap canister would need to be able to swap NNS neurons against SNS neurons instead of ICP against SNS neurons. Also, the SNS would need to manage the swapped NNS neurons creating further complexity for the SNS. Therefore, we consider it sufficient to start with the simpler proposed design. If required, this functionality could be added in a later stage.
Can I untoggle CF neurons?
As previously agreed & communicated, before the implementation and go-live of the proposed CF process, users will have the ability to opt out their CF neurons during a period of at least 3 months. The community will be informed once un-toggling is available.
Once the CF is fully implemented and live, CF neurons can only leave the CF by dissolving.
Why did it take so long to come up with a design proposal?
The NNS governance team is currently working with full focus on the planned release of SNS functionality. Other features, like the CF, had been assigned a lower priority.
Also, certain aspects of the SNS investment process (e.g. the swap canister) have shaped our view on how to implement the CF and this is why we adjusted the design subsequently.
I can spawn maturity myself and invest directly in a SNS. What is the benefit if I join the community fund?
Correct, a user can spawn maturity and invest into SNSs also without the involvement of the CF.
Via the CF, a user can tap the knowledge of the IC community and can also benefit from an automated investment process.
The dashboard shows currently the stake of all NNS neurons in the CF. Will this be adjusted to also show maturity?
Yes, given the revised design the metric on the dashboard will be adjusted to display in addition the total maturity of all CF neurons.
Is there a rationale for why this should be a feature of governance? For example, if only maturity is used to fund a project, can’t that project issue a token sale to raise funding and I can spend my existing maturity on those tokens? Why does there need to be functionality added to the NNS?
I thought the purpose was to give the average community member an opportunity to invest in a variety of projects in the IC ecosystem without having to be an accredited investor. If it’s not through the NNS/SNS, then projects may be required to only allow wealthy investors into the early rounds of investment like they do now. I am no expert on the regulations, but I thought it was all about offering an equal opportunity to everyone.
outflow all end up into the development of the ic ecosystem anyway so why limit the supply to only through reward maturity and NNS proposal but not like a decentralized vc peer to peer type of platform that allow cf holder to decide on which project they want to invest n independently pitch with their full locked capital.
because i think this community fund through maturity of reward will never work for majority of retail holder, and their icp is all gone into the trap hole for those with smaller neuron that alr locked thinking that they could be use within the community fund,
Yes, it is correct that using maturity instead of stake leads to a lower investment amount in this first iteration of the community fund. However it is worth noting that the APY/maturity of neurons is quite substantial on the IC (e.g. around 20% for an 8 year neuron). This leads to substantial investment amounts also for retail investors.
Is there going to be a redesign of the “Join community fund” button? Leaving as it is, there will be more accidentally joining, eveb after the go-live event, which would frustrate people.
I proposed somewhere in the forum that there should be a more complex mechanism to joining the community fund, not a 2-clicks irreversible decision. The approve button should be clickable only after writing the “confirm” or “yes” word in some text box. Doing this, there will not be people who join accidentally, because you don’t write a word accidentally, but everyone can tap accidentally.
Hi, will it be also possible to optionally invest part of the CF neuron stake directly (sorry if this was already discussed)?
I’m asking as for some projects I’d for sure like to invest more than just the maturity…
Why can users opt out their CF neurons only by dissolving? Why can’t they toggle it on or off at any time—if it’s on, then future maturity gets added to the CF; if it’s off, then it doesn’t? When the maturity gets collected by the CF it can’t be taken back, so I’m not sure what the risk is to make leaving easier.
The SNS token swap currently is configured with a swap deadline. Must the CF participate within the same timeline as everyone else, or is the idea that the CF can invest at any time? I ask because the design currently uses the SNS swap canister, which has a hard dependency on the deadline to work. (I also don’t know what happens to that canister post-SNS genesis… does it get removed to save cycles?)
I think it may be worth allowing the NNS investment proposal to specify which default followee(s) all newly created SNS neurons get. If investors delegate to the CF to make investment decisions, they should also be able to delegate to the CF (e.g. the proposer of the investment proposal) to make governance decisions in the dapp. Similar to how limited partners in a VC also rely on the fund managers to sit on the boards and help out companies they invest in. WDYT?
While maturity is sitting in the CF, it’s not being put to productive use. There won’t be that many investment proposals initially, and it will take time to debate and vote on each one. In the meantime, that maturity is not generating returns for its owners, since it’s not being compounded or cashed out to do other things. Will there be a way for the CF maturity (i.e. treasury) to be invested into low-risk, low-return activities while it waits to invest it in SNS dapps? I don’t know what that would look like, but this would be a concern of mine when deciding whether to toggle my neuron to join the CF.
“The dashboard shows currently the stake of all NNS neurons in the CF. Will this be adjusted to also show maturity?” ← Can you link to this dashboard? I didn’t know we could see the total stake in the CF right now.
BTW, I like the idea of contributing a neuron’s maturity instead of its stake to the CF. At least initially I think it makes more sense.
for the initial iteration of the community fund we suggest focusing on maturity only. This has the advantage of integrating well with the swap canister design and is less complex from an implementation perspective.
In a second iteration (see section Alternatives considered) we could also consider to swap neurons instead of just the maturity.
Yes allowing to toggle off at every point in time, would increase the flexibility for the users (similar to a money market fund where investors can park money for a short amount of time). On the other hand for the planning of investments of the CF by the community, it would be very useful to have a long-term commitment of the investors so that the community can plan investment in stages (similar to a VC fund).
This is an interesting point and I understand from where you are coming from. An obvious candidate for such a temporary low-risk investment would be to stake the maturity for the minimal amount of time and get the IC rewards. From a community planning perspective and also from a technical perspective this brings of course a couple of challenges (e.g. how do you efficiently plan& manage this kind of short-term investments, technical design of this separate mechanism etc). So I would say that this is a great idea and feels like something to consider for a second iteration of the CF.
Focusing on your specific point
I assume that SNSs will come in many forms of flavours, which will include different structures for voting rewards and voting following (and some might have no following at all). So in my opinion, if there is the possibility for SNS default following, the according configuration should be discussed and set for each SNS individually (and apply to CF and non-CF investors alike).
This is another good idea and goes into the direction of having a more sophisticated community fund which actively manages the maturity and SNS neurons. This would include
Managing short-term vs long investments (your other point in this direction)
Managing voting and the investment of the according SNS rewards.
I think this is a compelling vision and in order to get there I suggest that we start with something simple and gain experience along the way on how to increase the scope & sophistication.
Would you see any low hanging fruit (adhering to this vision) which would integrate into the simple design?