Discussion on Celo Epoch Rewards

I’ve thought about this problem a lot recently, the following post (warning - long!) is my best attempt at summarizing my thoughts.

Introduction

Epoch rewards are a tool that the Celo network uses to incentivize certain behaviors. Specifically:

  1. A staking yield incentivizes CELO holders to stake.
  2. cUSD rewards incentivize validators to validate.
  3. The community fund allows CELO holders to incentivize actions at their discretion.
  4. The carbon offsetting fund ensures Celo contributes to, rather than extracts from, Earth’s natural capital

If you assume that the total network value does not change with token supply (e.g. stock splits don’t change the value of a company), these incentives are paid for in the following ways:

  1. Staking rewards are funded by diluting non-stakers
  2. Validator rewards are funded by diluting non-validators
  3. The community fund is paid for by diluting everyone
  4. Carbon offsets are paid for by diluting everyone

Short term recommendations

In this section I will discuss my view on the current state of epoch rewards in Celo and recommend some simple and (hopefully) non-controversial actions that we can take in the short term to ensure the protocol achieves, or continues to achieve, its goals wrt epoch rewards.

1. Staking yield

For (1), I agree with the general sentiment that things are working well enough. A staking rate north of 50% seems “secure enough” to me, though I would like to see the rate pushed further north to 67%.

However, at present staking competes with all other uses for the CELO token. As other opportunities for yield on Celo (e.g. defi) become more attractive, we may see the staking rate drop. Building out more support for staking derivatives may allow defi and staking to complement each other rather than compete (more on this to come!), but in the meantime it’s important for the security of the network for staking to be sufficiently attractive wrt defi.

Recommendation
To ensure that users continue to stake in the face of a growing Celo defi ecosystem, I would recommend we increase the target staking fraction to 60%, and to activate the staking yield feedback mechanism.

2. Validator rewards

Similarly, I agree with the general sentiment that the protocol is achieving its goals here. Unlike (1), where the protocol is competing with other uses for CELO, here the protocol competes for other uses of Validator human capital (e.g. spending time validating on other networks).

Unfortunately it’s harder to automate the feedback loop here, as the on-chain signals are not as high with staking. It’s seems to me that the protocol is doing “good enough” for now, but it’s hard to say how big the margin of safety is. As the rewards multiplier continues to drop, we may see validators start to reconsider. It’s worth noting that a few months ago the recommended machine spec was bumped up, and so validator costs are actually higher than they started out.

Recommendation
To ensure that Celo continues to be a desirable network on which to validate, we bump the target annual rewards up to 85k cUSD, which, with a rewards multiplier of 87%, roughly restores the original 75k cUSD validator rewards. It’s worth noting that the total value being paid to validators is less than a quarter of what’s paid to voters, and so a 13% increase here is small wrt the total CELO issuance.

3. Community fund

Once again, I agree with the general sentiment that this is the area in which the protocol is falling most short of its goals. The problem (and solution) here seems to pertain more towards human coordination rather than anything protocol related. That’s a big area that I think warrants its own, separate discussion, and so I will refrain from commenting too much on this in this thread.

At the moment, it’s clear that the community fund is growing far faster than it’s being put to work. A desirable steady state, IMO, would be for the community fund to grow at roughly the rate at which it’s being deployed to projects that provide sufficient net utility to the Celo network, for however CELO holders decide to define “sufficient” and “utility”.

Recommendation
Until we see signals that the community fund is growing too slowly to achieve that goal, we reduce the community fund share from 25% to 5% and kick off a working group to investigate how this can be used more effectively.

4. Carbon offsetting

Haven’t seen this one discussed much, probably because the numbers are so small, but Celo is solidly net-negative wrt CO2. I don’t think we need to do much here.

Long term recommendation

In the longer term, I believe we should work to remove the rewards multiplier and target issuance schedule.

Adding a target schedule and the rewards multiplier feedback mechanism adds a fifth goal to the four outlined above:

  1. New CELO should be be issued at a predetermined rate.

It seems to me that this goal is in direct tension with the ability to efficiently achieve goals 1-41.

To illustrate this, let’s imagine that yi represents the total CELO issuance needed in order to achieve goal i.

  1. If y5 > y1 + y2 + y3 + y4, the target issuance schedule will cause more CELO to be issued than is needed to achieve goals 1-4. This essentially results in “unproductive” dilution of various stakeholders, which feels to me to be inherently undesirable.
  2. On the other hand, if y5 < y1 + y2 + y3 + y4, the target issuance schedule will cause less CELO to be issued than is needed to achieve goals 1-4, causing the protocol to un or under achieve on one or more of those goals.

The only way for goal 5 to be fully compatible with efficiently achieving goals 1-4 is for y5 to equal y1 + y2 + y3 + y42.

To justify the target issuance schedule, I think we need to be able to argue that having a target issuance is worth the cost of over-diluting CELO holders when we’re in scenario (1), and under-achieving goals 1-41 when we’re in scenario (2).

I don’t feel strongly about over-dilution one way or the other, but would have trouble defending choosing to sacrifice on goals 1-4 in favor of 5.

1 And future goals that the protocol may aim to incentivize with CELO issuance
2 And if that’s how the target issuance schedule is defined, there’s no need to actually define a target issuance schedule, you just need to define protocols for efficiently achieving goals 1-4

3 Likes

That’s exactly how the target voting percentage works :slight_smile:

If it is below the target, then the rewards are going to scale up.

1 Like

Thanks @asa for your clear thoughts. I’d like to a couple on how to proceed:

1. Staking yield

It seems like there is support for activating the dynamic target voting yield adjustment, so I’ve drafted a Governance Proposal with a specific parameter change for activation (Build upon earlier work and thoughts of Roman and @asa):

Would love to hear thoughts (and concerns if there are any) on the value. The proposed adjustmentFactor of 1/1825 and here are two paragraphs here to explain what that means (voting = staking here):

The dynamic target voting yield adjustment factor adjusts the target voting yield automatically based on deviation of actual voting CELO fraction to target voting CELO fraction in every epoch. The target voting percentage is currently set to 50%, with the actual voting percentage being ~60%. If the voting percentage is below the target at the end of an epoch, the staking yield is increased; if the voting percentage is above the target at the end of an epoch, the staking yield is decreased.

The size of the staking yield adjustment in every epoch is calculated by multiplying the difference of the voting percentage and the target voting percentage with the adjustmentFactor. With a target voting percentage of 50%, the maximum distance is +/- 50%. With the proposed adjustmentFactor of 1/1825, the largest possible change of the staking yield over the course of one year therefore is +/- 50% * 1/1825 * 365 = +/- 10% which would only occur if the voting percentage would reside at the extremes of 0% or 100% at every day of the year. Since the current voting percentage is at ~60% and the target 50%, the target voting yield would reduce from 6% to 4% over 12 months if voting participation would stay constant at 60%. (-10% * 1/1825 * 365 = - 2%).

Validating

I don’t know enough about Validating yet to have a solid opinion on their rewards. To me it seems like validator rewards are worth having a separate discussion about? Validating does not have a big impact on epoch rewards overall (~10%), but is quite important for the network. Independent on whether the protocol rewards validators rather too much or not enough to be competitive, to me the communication of the rewards seem problematic. 75k cUSD are communicated, however with the current dynamic of the Rewards Multiplier that’s only 65k and continuously decreasing. I tend to support the ‘increase Validator Rewards’ argument as I think minimizing the risk of leaving validators is more important than the possibility of rewarding a little over what would be a fair market reward, especially if that doesn’t come with a high cost to the protocol.

Thanks @asa for a very clear post, and @Tobi for the follow up. In the same order @asa brought up:

  1. Staking yield:
  • I can be on board with having the staking target at 50% or increased to 60%. Both seem reasonable.
  • I think turning on the dynamic target voting yield adjustment is fine. @Tobi I think it’s better to do too little than too much (and have swings), so I would recommend reducing the adjustment factor to maybe 1/3000 or 1/4000 and seeing what happens before moving to a stronger response.
  1. Validating:
  • It would be foolish for Celo to lose validator support at this point, so I would support bringing rewards up to 75,000 cUSD as suggested.
  • Longer term comment #1: It would be best to have a market based way to set validator rewards. It seems there is some alignment on this point in this thread. Ethereum 2.0 doesn’t have “validator rewards”, but maybe that’s a drawback for Ethereum? I don’t know.
  • Longer term comment #2: I see the barriers to being a validator as quite high (machine specs required vs running a node on Ethereum). I don’t know if this should be a concern or not, but I feel it warrants further reflection in the medium term.
  1. Community Fund
    I’m fully aligned with @asa’s quantitative recommendations and also on setting up a specific working group. Good ideas.

  2. Carbon offset.
    Agreed with @asa this is in good shape. (I think the bigger question here is using CO2 in the reserve - different thread/topic).

  3. Feedback mechanisms for issuance.
    I need to read/learn more before having a useful opinion here. It is clearly an important consideration for the protocol long term.

Thanks @Pinotio.com for your good explanation on what you would support. We seem to agree on the following and I’m working to extend the governance proposal to:

  • Activate Dynamic Voting Yield Adjustment Factor
  • Increase the target voting fraction to 60%
  • Reduce the community fund epoch reward share from 25% to 5%

In regard to the value of the adjustment factor, I agree with @Pinotio.com that it’s important to be careful and rather start easy and monitor the reaction. However it is also important that the target voting yield is able to increase rather quickly once the staking participation should drop, which is in favour of a larger value. I think 1 /1825 is a good balance. Additionally, if the community increases the target voting percentage from 50% to 60%, and we are currently observing a ~60% staking participation, the target voting percentage would barely be changed by the dynamic adjustment, but is able to increase rather quickly once the staking participation should drop below 60%. Additionally, reducing the community fund share mitigates some of the downscaling by the Rewards Multiplier. And from what I’ve seen so far in the data (decreasing yield and increasing staking) I don’t see a big probability of larger swings in the staking participation with the ‘little’ changes that the adjustmentFactor of. 1/1825 is able to do.

Validating

We seem to have some agreement on proposing to increase validator payments. I still feel like I’d like to understand more about it and hear more opinions and thoughts from the broader community as well as validators. So I will be moving this to a separate forum post :slight_smile:

Longer-term considerations

I agree that the Rewards Multiplier and target schedule is a tension and would like to contribute working on better alternatives. What is the utility of the target schedule and maximum supply cap? I think they exist to create trust in the Celo protocol in terms of making it robust towards hyper-dilution and too much supply increase. To ensure this there are better ways I think, for example relative supply increase maxima instead of absolute rules.

1 Like

Added the validator reward discussion separately here: Discussion on Validator Rewards

1 Like

I’d like to see the target voting % increased to 60% as part of @Tobi 's CGP. The proposed adjustment factor seems reasonable to me.

2 Likes

Created the CGPs, currently under review: Tobikuhlmann/epoch reward parameter changes by tobikuhlmann · Pull Request #237 · celo-org/celo-proposals · GitHub

As a side note: reducing the community share down to 5% will increase validator (and locked celo) rewards right?

@Pinotio.com Yes. They are not ‘increased’ in that sense though, but less downscaled from target by the Rewards Multiplier due to lower overall Epoch Rewards.

1 Like

At the moment, I don’t see any merits of modifying any changes to the Community Fund as part of “Increasing Celo Epoch Rewards”.

It should be its own separate discussion. Also, saying that we need to modify community fund due to the capital not being deployed efficiently isn’t realistically aligned with the size of the network and our community.

If you need more proposals for allocation of capital from the Community Fund, I am happy to share proposals that I was going to propose internally to aggressively position Celo as the number 1 protocol from an open-source perspective.

I just don’t see how modifying the community fund allocation helps Celo long term. IMO, Community comes first and all the activities around energizing the Core Community are to encourage more proposals to allocate from the fund. Changing it now seems too early and too reactionary.

1 Like

Won’t the Community fund allocation already trend towards zero? Why not wait and let time go by. A larger community fund will allow for more future projects and likely draw more attention.

Is awareness the issue here? The cLabs dev rel team is looking for projects to bring more attention to and this is something we think we can help with.

Added a separate post for the community fund here: Community Fund: CGP 35 and how can we use those funds?

@Yaz @ericnakagawa could you please add you points there again then we can have the discussion in one place

Based on the pretty lively discussion about the community fund (Community Fund: CGP 35 and how can we use those funds? - #12 by Tobi) where new resistance for CGP 35 & 36 (community fund & validator rewards) arose I’d like to follow up here:

Maybe the better decision would be to skip the temporary changes for community fund + validators and only propose dynamic voting yield + target voting fraction of 60%. To accept and closely monitor the epoch rewards downscaling, and start working on revamping the epoch rewards mechanism for better long-term incentives with higher priority.

What do you think @asa @Pinotio.com ?

@Tobi , I certainly support moving ahead with dynamic voting yield + target locked Celo fraction of 60%.

Re validator rewards: I do think it is healthy for us to bite the bullet and try to find a dynamic way to maintain a healthy validator nature - rather than kicking the can by increasing rewards. However, I think we need to do this soon (at latest by end of 2021) so that we ensure compensation for validators makes sense.

Re Celo governance fund: Yes, I think delaying changes and prioritising the clarification of names and creating a working group around outreach is wise. I also think we should consider a governance proposal by the end of 2021 to reduce rewards unless we see improvements in uptake.

Following yesterday’s governance meeting, I have put together a write-up of how I see the status and future for Celo Epoch Rewards: DeFi Governance Weekly - Aug 6th 2021 - A Focus on Celo

BTW, thanks @Tobi for the good work preparing and presenting yesterday.

1 Like

After some reflection and weighting the good arguments on both sides after yesterday’s governance call I’d like to move forward with a compromise for CGP 35 and 36:

A couple of more thoughts can be found in the above links.

For everyone who couldn’t participate in Governance Call 9, you can find the recording and notes here Celo Governance Call 9 · Issue #242 · celo-org/celo-proposals · GitHub as well as my presentation slides here Epoch Rewards CGPs: 33, 34, 35 ,36 - Google Slides.

I think there has been a lot of interesting points made and there seems to be general opposition to reducing the community fund share, however I would love to hear from these folks how else we should reduce CELO emissions right now given that we are overspending.

IMO, voter rewards should decrease as I believe a very large percentage of staked CELO is in the hands of “insiders” and not too many of eventual target stakeholders like retail or Celo target users are really currently earning the yield. Put differently, current “insider holders” (including myself) are earning outside yield at the expensive of future CELO holders.

Of course this is just speculation, but I do not believe that current voting patterns are at risk even with a significant reduction in yield. I don’t know concretely, but I wouldn’t be surprised if a significant percentage of locked CELO has no practical alternative as it is locked up in ReleaseGold contracts anyways.

1 Like

I agree with that. However I currently think decreasing voter rewards would be risky, as I see the following ‘unlock’ pressure evolving:

  • Growing DeFi ecosystem on CELO: More and more higher yield opportunities are competing with locking CELO for voting
  • Vesting: No (or few) CELO from the release contracts has been vested so far. As soon as CELO vests, I see the risk of CELO unlocking for selling on the market or using for other higher yield opportunities

I think it’s impossible to predict how the fraction of locked CELO will evolve, that’s why the protocol has the dynamic adjustment, to find a good market price for a given voting fraction over time.

My reasoning is based on the assumption that >50% should be locked for the security of the network. With currently 60% there’s not too much room, and larger means more secure. On the other hand, locked CELO fraction has only increased so far, even with a decreasing realized voter reward rate.

@thezviad mentioned less CELO locked would be beneficial for the network in terms of a lower validator election treshold as well as more liquid CELO to be used elsewhere in the ecosystem. (Community Fund: CGP 35 and how can we use those funds? - #24 by thezviad)
I agree this is desirable, however think this should rather be achieved via staking derivatives and liquid staking rather than lowering the security treshold? Once liquid staking is supported on CELO, staking reward rate could be securely lowered by much I think.

1 Like

Where is the assumption for >50% coming from? Also, there is huge amounts of CELO in the reserve too, so those shouldn’t really be taken into calculations probably.

Current locked CELO is ~330 million. Current total CELO without reserve is ~530 million. So 50% of that would be ~265 million. So we could have close to 65 million CELO unlocked and still be at that 50% threshold.

However, I would even question that 50% threshold. Would network really be materially any less secure if total locked CELO was at 200 million instead of current 330 million?

Also re: RG contracts, amount in RG has decreased pretty significantly. Total unreleased amount is at ~160 million only. So I am not sure if it will have such a drastic effect even when all of the gets released over time.