Request for feedback: Compounding Maturity Proposal

Draft Proposal: Compounding Maturity

Following the Medium post from Dominic Williams, and the subsequent discussion on this forum, a new draft proposal has been written with an approach to implementing these new maturity features for Governance. I welcome everyone to contribute their thoughts to this thread, as this will be very helpful to further refining the changes under consideration. Thank you!

John Wiegley
Principal Engineer

Objective

The Problem

Those with ICP staked in neurons face two main challenges when dealing with the maturity they earn as a result of voting rewards:

  • How to avoid incurring a tax burden;
  • How to compound maturity with the least manual effort.

Proposed Changes

The objective of this proposal is to address these concerns by making several changes to the way maturity is handled by the NNS governance canister:

  1. There will be two types of maturity:

    a. staked maturity, which contributes to voting power, but no ICP is produced from this maturity until the neuron is dissolved; and
    b. maturity, which can be staked, used to produce ICP, or “traded in for stake” (see below) once it is received.

  2. Daily voting rewards may be received either as staked maturity or maturity, and this choice can be changed for future rewards at any time. Note that if rewards are received as staked maturity, this has the same effect as compounding rewards daily.

  3. When ICP is produced from maturity, this can take place in one of two ways:

    a. If there is sufficient staked ICP in the neuron, maturity can be “traded in” by exchanging an equal amount of staked ICP for staked maturity. For example: If a neuron has 100 staked ICP, 0 staked maturity and 10 maturity, the result of a “trade in” would yield 10 ICP and leave the neuron with 90 staked ICP, 10 staked maturity and 0 maturity. Note that this has may have tokenomics implications described in more detail in the “Impact on Tokenomecs” section.

    b. If there is not sufficient staked ICP in the neuron, newly minted ICP is produced.

  4. ICP is produced from staked maturity only when the neuron is disbursed, at which point it is subject the “modulation” described below.

  5. Whenever ICP is produced from maturity by minting, it is subject to a mandatory 7 day waiting period followed by a modulation of the amount received, up to +/- 5%, based on the recent market price of ICP. How this is calculated is described in the section “Modulated production of ICP from maturity” below.

Rationale

It is hoped that these changes will improve the tax situation for neuron holders based on the fact that, when ICP is produced from maturity, it is unknown how much ICP will result; and also because this process may be change in the future based on governance proposals. A neuron with compounding maturity will have no definite future value.

Neuron management changes

It may be helpful to explain how management of neurons will be changed by this proposal, using a set of examples.

merge_maturitystake_maturity

Merge maturity is now called “stake maturity”, and simply converts maturity into staked_maturity.

Before proposed change:

  • Before merge_maturity: Neuron has 100 ICP stake and 10 maturity.
  • After merge_maturity: Neuron has 110 ICP stake and 0 maturity.

After proposed change

  • Before stake_maturity: Neuron has 100 ICP stake, 0 staked maturity and 10 maturity.
  • After stake_maturity: Neuron has 100 ICP stake 10 staked maturity and 0 maturity.

spawn_maturitydisburse_maturity

Spawn maturity is now called “disburse maturity”. This operation begins a 7 day clock that completes with a modulation of the amount to be received (see below). This final amount of newly minted ICP may then be transferred into the neuron holder’s account.

Before proposed change:

  • Before spawn_maturity: Neuron has 100 ICP stake and 10 maturity.
  • After spawn_maturity: Neuron has 100 ICP stake and 0 maturity, while a newly created reward neuron has 10 ICP stake and 0 maturity.

After proposed change

  • Before disburse_maturity: Neuron has 100 ICP stake, 0 staked maturity and 10 maturity.
  • After disburse_maturity: Neuron has 100 ICP stake 0 staked maturity and 0 maturity. After 7 days, between 9.5 and 10.5 ICP is transferred to the user’s account.

exchange_maturity

If there is sufficient staked ICP in the neuron, this operation exchanges maturity for staked ICP in the neuron, while converting that maturity into staked maturity.

Example

  • Before exchange_maturity: Neuron has 100 ICP stake, 0 staked maturity and 10 maturity.
  • After exchange_maturity: Neuron has 90 ICP stake 10 staked maturity and 0 maturity. 10 ICP is immediately transferred to the user’s account.

split_neuron

The meaning of this operation is more accurately “split neuron stake”.

When a neuron is split, its staked maturity is also split according to the same percentage. Any maturity, or currently disbursing maturity, remains in the parent neuron.

merge_neurons

When neurons are merged, all stake is merged, all staked maturity is merged, and all maturity is merged. Any maturity in the source neuron that is waiting to produce ICP (meaning, completing its 7 day waiting period) will remain, and be transferred to the user’s account when the waiting period ends, according to the modulation factor described below.

Proposed changes to the governance canister

To meet the objectives stated above, the followed changes will be made to governance.

Change 1: Staked maturity

Each neuron presently has an amount of ICP staked and an amount of maturity earned. In order to introduce the idea of “staked maturity” as separate from “maturity”, the two amounts will be tracked separately.

Change 2: Auto-compounding

Once there are two separate kind of maturity, a flag is provided to decide which is increased when rewards are granted. This flag may be changed at any time.

Change 3: Disburse directly from the neuron

In the past a separate reward neuron was used to manage the “7 day delay” required when spawning. Instead, we would like to find a mechanism that allows for disbursing actions to take place within a single neuron only. The exact mechanics are still being designed.

Change 4: Trading-in staked ICP

While a neuron contains staked ICP, maturity may be traded in without any minting and thus no new income. To compensate the loss of staked ICP, the same amount is added to the staked_maturity so that no voting power is lost. See the example above for exchange_maturity.

This means that if rewards are harvested regularly from a neuron, it will eventually contain only stake maturity – which behaves exactly like the original staked ICP in terms of voting power and future rewards. The primary difference is when the neuron is finally dissolved and disbursed, the amount of ICP received is subject to modulation according to change 5.

Change 5: Modulated production of ICP

Whenever newly minted ICP is produced from maturity, the amount actually
minted is modulated to take recent price movements into account. The algorithm
used to do this is as follows:

  1. Determine the 30 day moving average for each of the last 28 days. Label these a₁ (today) through a₂₈.

  2. Compute the average price delta for each of the last four weeks. Thus, d₁ = (a₁ - a₇) / a₇, etc. This value is bounded from -0.05 to 0.05 by clipping values to the limits of this range.

  3. Take the average of these adjusted deltas: (d₁ + d₂ + d₃ + d₄) / 4.

The resulting value is a number between -0.05 to 0.05 that determines the percentage change of the modulation. This is multiplied by the maturity to determine the amount of ICP that should be minted.

Impact on security

There should be no security implications from this change.

Impact on simplicity

There are a few ways in which this proposal affects the simplicity of staking ICP in a neuron:

  1. Reward neurons are no longer needed to disburse maturity. This is managed within each neuron itself.

  2. There are now two kinds of maturity to be aware of: staked maturity and regular maturity.

  3. There is a new flag (a checkbox in the UI) to decide which type of maturity rewards are received as. Choosing “staked maturity” is equivalent to a neuron that automatically compounds daily.

  4. The modulation of maturity that occurs before minting is the largest source of complexity in this proposal. It remains to be seen what effect this will actually have on tax authorities, and whether the algorithm employed should be refined in the future.

Impact on tokenomics

This proposal will impact tokenomics in several ways.

Deferring inflation

The most immediate effect is that over the next several years the minting rate, or increase in supply, will drop to much lower numbers, as the majority of disbursed maturity is transferred out of neurons’ staked ICP rather than minting new ICP. This also means that when these neurons finally dissolve, the minting that was deferred will happen then. The intent is that this will happen at a time when burn rates are established and can better absorb the increase in supply.

Less forced selling

At present, tax authorities may consider maturity to be income the moment it is received. In such situations, there is a constant pressure to frequently realize maturity as ICP and to sell some part of it on the open market. This is both inflationary and increases selling pressure. By removing the need to constantly produce ICP from maturity there is less forced selling on the market and more freedom to wait until market conditions are favorable and better able to absorb the incoming ICP.

Improved return in the initial years

If a neuron is staked for multiple years, any income generated by that neuron, at the beginning of its dissolve delay, will be in the form of staked maturity and not newly minted ICP. This happens because stake is paid out in exchange for staked maturity, as described above. What this means for stake holders is that they will not need to sell for taxes during this initial phase, so all of that ICP can be re-staked to increase voting power, which increases overall returns.

Further price stability

The next effect is that neuron holders with available maturity could be incentivized to produce and sell ICP when prices have been trending upward, and not when the market for ICP has been recently falling. The potential lifting of tax burden due to this uncertainty is what would permit this freedom of choice.

Alternatives considered

Several alternative modulation algorithms were considered, including a more simple price delta algorithm, one based on a 30-day linear regression slope, and even one using price/volume trends. The algorithm chosen above was analyzed by calculating the modulation it would have yielded over the current history of ICP prices.

The choice of algorithm, and the bounding factor of +/- 5%, should at present be regarded as an experiment. Without real market experience to observe the economic impact, it is impossible to foreknow the perfect algorithm for inducing uncertainty while at the same time reflecting overall market trends.

Community conversation & Timeline

The NNS team is ready to work on this feature! To get the design approved by the community, we followed the following schedule:

  • Jan 27: Initial post by Dominic Williams on Medium.
  • Jan 27-…: Discussion on the Forums.

What we are asking the community

  • Participate in technical discussions as the motion is developed

Previous thread: Dominic’s Proposal To Improve ICP Governance Staking Re : Tax and Tokenomics - #108 by jwiegley

16 Likes

Dear John,

Thanks a lot for this exhaustive description for the proposal to come.

This is my question : accordingly to one of your declarations, I thought that the current system would also be kept, as optional : convert maturity immediately into staked ICP within the neuron whose is the maturity. I understand you still offer this here, but mediately : by adding a 7 days delay. So why just keeping things like they are, optionally of course.

Why would not we offer to people to keep this, even applying the +5%/-5% rule, in addition to the whole new system you are proposing ?

By maintaining this, you would be offering a complete staking system, with 3 options, perfect in my opinion :

  • stake maturity AS maturity staked
  • stake simple maturity AS icp into the neuron
  • accumulate simple maturity in order to trade in or to disburse icp for X reason.
3 Likes

I really appreciate you asking about this, as I asked about this feature as well. It was decided to drop the current merge_maturity functionality (merging maturity directly into staked ICP), and to reconsider at a later time. There is a 4th option you didn’t mention: staking staked maturity as ICP in order to “lock-in” the current discount.

If you draw out the box of possibilities, it naturally leads to a family of related options:

  • exchange_maturity: maturity → staked maturity + staked ICP → liquid ICP
  • stake_maturity: maturity → staked maturity
  • disburse_maturity: maturity → liquid ICP
  • not in this proposal (was merge_maturity): maturity → staked ICP
  • not in this proposal: staked maturity → staked ICP

One issue with permitting “all that is logically possible” are the ways in which it adds more detail to the UI and documentation. But I will bring up your question again, especially since it came up in the first response!

6 Likes

I am very glad you thought about this too ! I really do like the second one you add too ! But if I had to choose between the two possibilities not included in this proposal described above, I would prefer this one :

I justify this preference by its historicity : people already know this feature and are already used to doing this, but I would prefer to not have to choose and add these two ones, because the both are very beautiful. I think it is very important for people to be able to convert at least maturity directly into staked icp, and convert staked maturity into staked ICP would be “the cherry on the cake” ! But what a cherry !

Anyway, this proposal is already very beautiful in its current state, but if it covers all the logical possibilities by adding these two ones, it would become a piece of art, since it would be exhaustive : what a most beautiful system than an exhaustive one and what a more exhaustive blockchain than ICP.

If I can reassure you about the UI, I am not sure it very complicates things : it just maintains an original feature and introduces a variant of the main new one. And the difference between 3 possibilities and 5 possibilities is very thin, furthermore if it articulates the same concepts. Plus : when it is about maximisation of they rewards, people definitely prefer to have the choice, they will see it as a good point rather than a weakness and they even would quickly wonder why these two features are not available. So they will definitely prefer exhaustivity rather than an arbitrary choice.

So an immediate implementation could be good as much for “marketing” reasons as for gaining time by preventing the addition of an update sooner than later for this feature or these features.

Anyway, I only can congratulate you for this whole design. Wonderful.

7 Likes

Great job designing this new system! I think it’s a big improvement. A couple questions:

Question 1:

  • With exchange_maturity what happens if there is 0 ICP in the neuron remaining to exchange (ie. all ICP has been drained/exchanged out of neuron)? At that point will the exchange_maturity function no longer be available. Then the user would have two available options: (1) Claim rewards through minting new ICP with the disburse_maturity function, or (2) Reenable exchange_maturity by depositing ICP into the Neuron from external account? Essentially, a user could re-add the same ICP (if they didn’t sell it) back into the Neuron that they had previously exchanged? What implications, if any, would this have that the same ICP could be re-added and exchanged indefinitely?

Question 2:

  • After a user calls the disburse_maturity function and seven days passes. How would a user check retrospectively to confirm how much of a bonus/penalty was applied to the disbursal?

Hi AA, to your Question 1: exchange_maturity is only available if sufficient stake exists to cover the maturity to be exchanged. If there is not enough, that option will be greyed out in the UI, or return an error of “insufficient stake” from Governance. And yes, you could topup the neuron to the necessary amount, in case you want all the maturity out but only have a little stake left.

To question 2: This is a very good question, and has yet to be decided. The UI being designed shows a list of “producing amounts” that each head toward their 7 day limit, at which point the discount is calculated and reported. The real question is how to cause the transfer to happen in a way that allows for errors to be noticed and dealt with. TBD.

2 Likes

I’ve been lagging behind and haven’t read everything yet, so please forgive any of my misunderstandings. I just want to get a short opinion out before it’s too late.

So far I am not in favor of this proposal. I have some high level concerns. Again I’m not going to take the time now to fully formulate my thoughts unfortunately.

My concerns are around the following:

  1. Increased complication of the system
  2. The possibility that we’re falling into the fatal conceit by trying to control our little economy based on the suggestions of a small group that thinks they can control the price of ICP through tinkering
  3. Feeding the price of ICP into the monetary system, this coupling the IC’s monetary policy to current markets and requiring an oracle (no major blockchain that I know of does this, and the most successful monetary assets BTC and ETH definitely do not do this. I believe some Ethereum researchers have strong opinions on why ETH’s monetary policy should be decoupled from its current market price)
  4. Trying to hide/obscure staking rewards based on a limited understanding of tax laws (the US situation may be changing, will the IRS and other tax authorities look kindly on this blatant attempt to obfuscate taxes, and how much legal consultation with tax authorities have we considered)
  5. More on point 4, the basis for these changes is to fix a tax situation and make automatic compounding easier. If our understanding of the tax situation is nebulous now, then basing an entire overhaul of the monetary policy of the IC on these shaky foundations seems like folly
  6. I just don’t like how complicated it is now. I had a personal setup I felt worked with my current tax situation, and now it’s being taken away from me. My understanding of the situation (not a CPA or whatever) is that maturity is not taxable, and the IRS may even go beyond that saying that staking rewards aren’t taxable until sold

I feel we’re trying to meddle too much with an already complicated system, making it more complicated, and assuming it will fix tax situations the world over when the largest tax authority in the world might come out any day and say staking rewards aren’t taxable.

I think we should be vary wary of this type of meddling, like I said the fatal conceit.

25 Likes

@jwiegley There are numerous concerns that people have brought up in the original forum post. I don’t see that you’ve addressed any really but the technical. I would love for you and those who seem quite eager to push these changes through to address those concerns.

After reading through that very long thread with the numerous points of concern, why has this proposal even been created? We definitely did not reach any kind of consensus on what to do in that forum.

This proposal should be dropped. It’s far too complicated, based on very weak foundations, and it’s very difficult to determine the long-term impact, considering the enormous number of variables to consider including human psychology, various tax laws, and complex economics.

I would like to understand also the motivations for pushing this through, I sense there is a small group of people very eager to see this pass, thus leading to a suboptimal conversation in the previous thread. The community said a lot, the designers/implementers (I only really remember @jwiegley being in there, were other DFINITY team members designing this proposal in the thread?) focused on technical issues rather than the more complex systemic issues.

17 Likes

It would be nice if those with major concerns in the thread could concisely summarize them here so they can each be addressed.

4 Likes

John,

Several questions and considerations:

  1. I’m in full agreement that tax considerations are good justification for changes to a tokenomics design and I have no objections to creating a tokenomics design that has the best tax advantages. We all expect our CPAs to give us the best tax advantages while still following the laws and it seems reasonable to shape tokenomics features to enable optimal tax considerations. That said, I’m still having trouble understanding how staked ICP as defined here would be treated differently from a tax perspective than our current definition of maturity. To be honest, I also don’t understand how our current definition of maturity can be considered taxable. Accumulation of maturity is not receipt of ICP and no ICP has been minted when maturity has been earned. Maturity has no value until the owner exercises their option to merge or spawn. If maturity is considered taxable, I don’t understand how staked ICP would not be taxable.
  1. One feature I especially appreciate is the clarification on the modulation equation. I like it a lot. I think it accounts for medium term market trends in a very reasonable way and does indeed encourage dispersing at times of price uptrend instead of downtrend. In my opinion, we should go back to the min and max that Dom proposed of +5% / -30%. Otherwise, I don’t think a -5% min loss will be enough incentive for people to consider market price direction when they decide if they want to disperse. It really needs a higher penalty to be effective.

  2. My observation is that voting rewards have not been the major source of inflation of circulating supply of ICP. The biggest source of inflation is dissolving neurons. The circulating supply has increased approx 77M ICP since genesis (see ICP Supply chart). Yet only 8M ICP has been disbursed from voting reward minting (see Total Rewards chart), a large portion of which has been merged instead of sold on exchanges. I know a major driver for this proposal is to enable neuron owners to reduce minting to pay taxes, which is great, but the bigger issue seems to be dissolving neurons. I would really like there to be incentives for neuron owners of dissolving neurons to change their dissolve state and to increase their dissolve delay. Would you please advise if you think this proposal has features that would incentivize that action? That would be a major selling point for me.

  3. I think one of the biggest future problems facing the IC tokenomics and circulating supply is the growing amount of undisbursed voting rewards (see Total Rewards chart). There are currently 26M ICP that have been earned, yet have not been minted. It exists as maturity in neurons and is not represented in circulating supply or total supply calculations. For reference, this is currently an equivalent amount of ICP to what is known to be dissolving from neurons over the next 6 months, but the difference is that this undispersed maturity can be minted any time. There is also no way to know what neurons have how much maturity. Basically, it is currently unpredictable and the neuron owners can flood the market with new, previously unaccounted circulating supply with only 7 days notice. This problem is currently growing linearly and will continue to get bigger. I’m still trying to understand if this proposal helps address that issue or if it makes it worse in the near term. While I think there is value in the idea of exchange_maturity, it seems like it gives incentives to large genesis neurons to extract their ICP into the circulating supply on a tax free basis. Then in a couple of years when they have consumed all their previously minted ICP from genesis they can also dissolve and disperse their staked ICP (the new definition) after having maximize voting rewards over that time frame through compounding. At the moment this feels like another huge advantage to the OG whales in the ecosystem. I want to be wrong about this and would be receptive to an explanation of how my logic is flawed.

  4. When do you plan to submit this proposal? In the beginning of this post you said you are requesting community feedback, but by the end it sounds like there will be a proposal submitted very soon for a vote. It seems this proposal is a pretty big deviation from what Dom posted and what was deliberated in the previous thread, so I’d prefer for this modified version to be deliberated longer before submitting the proposal.

4 Likes

I am against this proposal because it cements and augments centralisation. The fundamental problem with Dfinity in the minds of the crypto community at large is its highly centralised nature. The Foundation’s decision to abstain from voting on certain measures is a good step but does not address the basic issue which is that not only are too many coins in too few hands but, crucially, the tokenomics is structured to favour their persistence in the same hands by rewarding them disproportionately. Anything that counters this centralisation is to my mind a good thing even if it inflates supply at a time such as now when the market is in terrible condition. If maturity has to be converted into liquid ICP and sold for tax reasons, so be it. In the long run, it will be a good thing that the ICP flowed to new owners. I am willing to bear the notional loss on my stake during this period.
The second reason I am against the proposal is that it takes insufficient heed of the discussion that happened on this forum, and underlines the opaqueness of Dfinity’s decision-making. Who, precisely, was involved in formulating this proposal? What is the process followed for such proposals? Which tax lawyers, if any, were officially consulted? How certain are we that the IRS will not find a way to tax maturity despite the change proposed? Are there any economists advising Dfinity? Or are cryptographers and programmers making all the decisions? When I look at publicly listed corporations, I can easily understand their hierarchies and practices. After reading literally everything there is in the public domain about Dfinity, I still have little clue how the Foundation actually works.

11 Likes

After reading the proposal several times and the subsequent posts, I see nothing that hinders anyone from actions they can already take with their maturity, save for the 7-day delay and modulation of the amount when someone wants to create minted ICP from their maturity and cash out. And if the two additional options John mentions per the above quote are included then no current choices are eliminated. On this point, I agree with Roman.

This proposal, in my opinion, is not too complicated for those who consider it thoughtfully. In our UI we already see “i” information bubbles next to the word “Maturity” and the phrase “Voting Power” to explain their meaning. There is no reason why something similar couldn’t be included next to 5 options to explain what one can do with their maturity.

I think this proposal does the opposite of increasing centralization - in fact, it puts additional controls of maturity into our hands. No one at Dfinity will be forcing us to do anything we don’t want to do.

It’s true we cannot predict what tax laws will happen in the future. I completely agree that maturity can reasonably NOT be considered a capital gain when merged into an existing neuron, or put into the Community Fund, thereby keeping it in the ICP ecosystem, even if it’s converted into newly minted ICP (e.g. pumping oil out of the ground and putting it into a barrel is not a taxable event. It’s only a capital gain when it’s brought out into a market and sold). While hoping for the best, however, it is prudent to expect the worst.

For those who want to stake for compounding purposes, having the option to stake and not even require their maturity to be converted into ICP is a real benefit, and the greatest argument yet to completely sever the possible false notion that there is a relationship between staked maturity and a taxable event. It will be hard to put a tax on a token that wasn’t ever created.

I am in favor of the five options listed by John.

I also continue to propose that voting be made on each option individually, over five successive days. No doubt, each option will have its own clear explanation as to what it means, or doesn’t mean, for its effect on maturity. I think five options grouped together in one vote hinders voters from considering each option’s unique mechanism and advantage.

8 Likes

These are excellent questions, and I am reading them all carefully. I will come back with answers to some points tomorrow, but there are others questions raised here that will need to move “higher up the chain”, so to speak. In the end much of this proposal and its design is from Dominic Williams, which I have translated into the proposed governance changes. So while I’m fully able to answer any technical questions, when it comes to taxation, or why certain changes are being proposed at all, I too will be seeking those answers in order to report them here as I can.

11 Likes

Maybe a good manner to address the complexification of the UI pointed by @lastmjs and @jwiegley would be to maintain the current system (converting maturity into staked ICP) and add a button “advanced settings” which would display these additional options :

By doing this, we would offer the 5 logical possibilities @jwiegley and me were talking about (yesterday) and that I really think necessary to prevent any complaining about arbitrarity of the calls which would be made.

I also have to underline, with @lastmjs, that we did not get any feedback about the concerns we shared into the previous thread, as if the previous thread did not really exist.

3 Likes

In my opinion, as I explained it there, I think a go back to the original rates would provoke sooner than later the collapse of ICP. Plus, like @lastmjs said it and as I had said it into the thread :

1 Like

It’s not tying it to the price of ICP though, just the change in price over time. It effectively just limits the outflow of ICP onto exchanges.

1 Like

We already have a price oracle, that’s how the network calculates how many cycles you get for burning 1 ICP.

2 Likes

I addressed this in the thread about Dominic Williams’ post.

You voiced your opinion, yes.

Compared to what project? About 30% of ETH was owned by three people in the genesis block. Pretty much all projects are heavily weighted towards the founders (if they aren’t outright scams.) DFinity has been around for years and the contributors in Pebble, String Labs were all compensated in ICP as far as I know. I think they’ve done pretty well.

Also look at the seed round, 24% of ICP. ic.rocks isn’t working any more, but out of 450 or so investors only three had locked up for more than four years and about 2/3 were dissolving.

It’s proportional though, with a bonus if you’re a long term staker. Are you saying that the age / dissolve bonus is making it disproportionate, and if so is that a bad thing?