Discussion on Celo Epoch Rewards

Thanks @Tobi for this clear communication, including informative graphs. Here are some ad hoc remarks:

The above seems like a contradiction. It would seem to me that we should first focus on why more of the community fund is not being allocated before increasing funds available.

The above seems like healthy behaviour of the system. Seems like leaving things as is is good. I’m not sure where the 50% target came from. Seems healthy to me. I would also support a higher target for % locked.

The above is a very informative graph and clearly shows how priorities are being allocated. Thinking about Ethereum 2.0 as a comparison, I’m thinking that maybe validator rewards could be reduced further relative to epoch rewards over time because validators may be able to get validator extracted value. validatorRewards seem fine to me for now though.

My overall takeaway from this is that the overall system is working well and the main thing to focus on is trying to put the funds in the community fund to work.

3 Likes

Hey there Celo community!

Firstly, thanks @Tobi for putting together this awesome discussion doc. It’s super clear and I mostly agree with @Pinotio.com, but have a few clarifying questions–where are Celo users getting the most value?

You mention that the Celo community fund “has not been touched”, so why is that the case?

  • Is it a communication gap?

  • A lack of clarity around what the community funds?

  • A roadmap to drive more people here from the communities we want to serve?

If the answers to these questions are no
 then maybe there are more productive avenues for this reserve capital.

This leads me to the next question


My personal take
I love the Celo mission and also the fact that I can earn +6% supporting a project I truly believe in. But knowing there are coins that are offering 8-12% that are still really strong projects ($Dot, $Sol, $Atom, etc) and working to sync up with $celo post Optics, intrigues me. I’d be lying if I said I don’t find those yields more appealing. I firmly believe that real-time yield trackers are crypto’s killer app. The serotonin rush of seeing your money working for you every second is a pretty powerful feeling (maybe I’m alone here).

The bigger question here
I freely admit that I’m not necessarily Celo’s Ideal Customer Profile (ICP). I’m just some kid in Denver who has access to a strong currency (for now
), pretty robust banking infra, and no great reason to love Crypto like I do. If the only people capitalizing on Celo’s staking yield today are people like me, I don’t think that’s the best use of these funds. That said, if we are helping the unbanked/Leapfrog Nations participate in Staking yields and new rewards programs to introduce them to strong financial practices, we should absolutely drive more rewards here. I’ve seen a few really promising mobile Staking apps (I see you, Celo-Dance!).

TL:DR

  • If there are plans to drive more people to the community fund and there is some benchmark we are aiming for, like 100k per quarter in funding, let’s keep driving this. I also wouldn’t hate if this were public and people could see and celebrate the projects being funded.

  • If we are bringing more people from LeapFrog Nations into the modern financial system through staking, we should increase yields there. I know this is what my friends/investors are looking at to help them determine which projects they should ultimately invest in.

1 Like

Thanks @Pinotio.com for your comments!

For existing and near future community fund grants plans, their currently ~6 million CELO would be more than enough. Until more funds are needed it could help to reduce the community fund epoch reward share. It’s a little contradictory as one can wonder why the ~6 million CELO have not been touched so far. If the community grant programs are not spending all of them, maybe they could be spent somewhere else for good use. E.g. attract new network participants that have stronger brand loyalty to existing DEXes and Dapps that may want to port over to Celo with the correct incentive structures. However if one thinks about such programs, the ~6 million CELO would not be enough. Hope that makes it a little clearer, I am however not sure if the community funds would be correct funds for such ideas.

I agree that the system is currently working well! However, I think our main focus should be that the system will be working well in the future. We are on a linear drift away from the target schedule, which means that all rewards will be scaled down increasingly. With all staying the same, all epoch rewards would be scaled down to 50% in 4 years (currently ~87%). I’m not sure this would be a good incentive structure anymore, especially in light of increasingly available higher rewards in other blockchains and increasing yield farming opportunities.

I guess an important question to agree on first is whether this is a problem? And if so, how to prevent the protocol from further scaling down all the rewards to enable a better long-term incentive structure. That could be either changing the target schedule or tweaking the epoch rewards parameters. I would also support a higher target for % locked, but that alone would increase the rewarding ahead of schedule and such the scaling down.

What could that be in more detail?

Thanks @heavyKevy for your views, valuable to have the comparison to other projects.

I guess the Celo mission, to build a financial system that creates the conditions for prosperity for everyone, is not primarily being realized by the CELO token and it’s staking reward, but by the stable coins! The stable coins enable access to financial systems for the unbanked. CELO is there to keep the stable coins stable and encourage stake holders to participate in and grow the network. The security of the Celo network is ensured by participants voting in validator elections. So the main reason for the staking reward is to incentivize this voting and thus securing the network.

This means the staking yield is exactly made for people like you, as an incentive and reward for participation and voting! The big question here is, what is a fair staking reward for that? There is the trade off between choosing the yield high enough such that there is sufficient incentive to participate and vote, especially versus other opportunities like other projects or yield farming opportunities. On the other side, the protocol doesn’t want to pay way more than what is necessary, and create a CELO supply expansion that is unnecessarily high.

1 Like

I’m not sure. The infrastructure and strategy to deploy more community fund grants is in the making, and I guess more of the funds will be be deployed as grants in the coming months and years. Maybe @deepak or @Patrick could chime in and help answer these questions?

Reducing the community fund share temporarily could be a good move to help drifting rewards back to target schedule and contribute to a lower downscaling of the other rewards, which would probably be a better deployment of the capital in the meanwhile.

In any way, the epoch rewards are mostly affected by the voting staking yield, and the community fund could only be a part of creating a stronger drift towards the target schedule. That’s dependent on whether it’s a good idea to keep the current schedule or think about altering it

1 Like

@Pinotio.com is probably referencing the whole MEV (miner extractable value) discussion happening on Ethereum, in our case VEV :slightly_smiling_face:. The gist of it is that the block proposers in a network can extract value by controlling the way in which transactions are ordered in a block.
The basic example usually involves DEXs, a miner can detect a significant trade transaction and can sandwich that between a buy and a sell that causes the detected trade to happen on the far end of the slippage spectrum while the miner extracts the arbitrage profits. Another more Celo specific example would be front-run arbitragers when cUSD is depegged.

Recommended reading:

2 Likes

One thing to note is that validator rewards are denominated in cUSD, which is minted and distributed at each epoch. The Celo equivalent of this cUSD is also minted and transferred to the reserve as collateral. But these rewards are also affected by the multiplier, causing the static cUSD value to decrease, which affects validators disproportionately compared to the minor yield reduction for stakers. Especially if you consider that the validator cUSD rewards is meant to first of all cover operational costs. Continuing to scale down via the multiplier or further reducing that reward doesn’t seem prudent.

Also worth noting that given the deflationary nature of Celo, the amount of Celo that gets minted to collateralise the cUSD rewards should decrease over time.

1 Like

I think the (down) scaling of rewards is a good thing provided we don’t see the % of Celo locked going down below a threshold (say 50%). If we see the % locked going down, then we start to worry about epoch rewards.

Epoch rewards are a cost to the Celo ecosystem. I don’t think it is healthy to increase them just because we see higher reward rates on other platforms.

If we want to further financially incentivise people to hold Celo, I would think a separate rewards program should be implemented for that. I don’t recommend using Epoch rewards for this function - because muddying the purpose of rewards is bad governance.

I suppose Epoch rewards continue to aim for maintaining a certain level of locked Celo at minimum cost to the system (i.e. keep reducing rewards until it starts to hurt % locked).

1 Like

Thanks @bowd , wouldn’t the same multiplier apply to both Validator and Epoch rewards?

Could you expand on how/why validators are affected disproportionately?

Regarding validators, my sense is that we should be concerned with the level of validator rewards if we see a reduction in validators online - or in quality (downtime) of validators. Is there a plot we can pull together showing the trends in this information?

In fact, if we aren’t seeing any tradeoff with validator signup/performance, then perhaps the validator rewards are too generous?

This might be my way of seeing things but if I compare the fact that the validator was promised 75k cUSD/year so 6.25k cUSD/month, which should cover the expense of both hardware and operational costs of running a validator, which is a non-trivial requirement. Now due to the scaling factor those rewards are currently scaled at 90% of what they should be which means essentially ±600cUSD less per month for the validator.

Compare this with a yield reduction for a voter which is making a bit less than the target 6% APY on their yield.

My feeling is that the impact of the multiplier is more acutely felt by validators than voters, that’s what I meant by disproportionate affect there. But again it’s maybe a bit of a subjective assessment of the impact.

2 Likes

I understand that point, agreed under the condition that the security of the Celo network is not in danger due to low voting participation and it does not significantly slow down Celo network adaption compared to other platforms with higher reward rates.

I guess ‘at a minimum cost to the system’ is not happening right now. Wouldn’t it be healthier if that reduction would only happen to voting rewards, and not to all rewards? The protocol already has a build in mechanism for dynamically adjusting voter rewards based on voting participation, which has not been activated yet.

In addition, with competing yield opportunities for Celo evolving (like Ubeswap yield farming), it is becoming more and more important that the voting yield can adjust quickly to ensure reasonable voter participation. I doubt that the RewardsMultiplier would currently be able to do that alone, and governance based parameter changes would also be slowish if we need to adjust voting rewards quickly to keep ensuring the security of the network, if voting participation drops quickly.

The distribution of epoch rewards looks approx. like this

  1. Voter rewards (~40k CELO / epoch)
  2. Community fund (~15k CELO / epoch)
  3. Validator rewards (~5k CELO / epoch)
  4. Carbon offsetting fund (negligible)
  5. Bolster the stablecoin reserve if it is under-collateralized (never needed so far)

So voter rewards clearly have the biggest share of epoch rewards overall.

Celo build-in mechanisms to adjust to target schedule

  • RewardsMultiplier: Adjustment factor based on over- or underminting, affects all rewards
    • a function of the percentage deviation of the remaining epoch rewards from the target epoch rewards remaining. < 1 if ahead of schedule, > 1 if behind schedule
  • Not activated: Dynamic voting target reward adjustment based on how much CELO is locked for voting vs target. Affects target voting reward.
    • The protocol has a target for the proportion of circulating CELO that is locked and used for voting, and adjusts the reward rate to increase or reduce the attractiveness of locking up additional supply.

If we continuously want to incentivize and ensure a minimum level of locked Celo at a fair voter epoch reward and be able to quickly react to changes in voting participation by adjusting incentives accordingly, activating the dynamic adjustment factor would be a good and automatic way to do that.

In our situation right now, dependent on the voting participation target (currently 50%), activating the dynamic voting reward adjustment would reduce voting rewards until voting participation drops to 50%. If i t falls below the 50%, it would increase voting rewards again. That would lead to less downscaling of other epoch rewards, and has the benefit to be able to react quickly to changes in voting participation.

1 Like

I think turning on the dynamic adjustment for voter rewards is a good step to take, although I don’t see it as urgent.

Ultimately, my assessment at present is:

  1. The system is working well, and reducing rewards roughly appropriately to get the system back on track with target.
  2. Validator participation seems strong. If anything, we are perhaps spending too much on validators. However, I don’t see that as much of an issue in the short term, but having a market type mechanism to ensure we have strong validators - without over paying - is important in the medium to short term.
  3. Community rewards are not being spent. This seems the biggest issue. If we can’t find a way for that to be put to work, then I would think we will have to think about a mechanism where less community rewards are issued if they are not used? Or, I guess the pool for community rewards just grows - which might be ok?

BTW, the governance working group is trying to improve the process for applying for a submission. I’m looking after the section on community grants. This - along with advertising the community fund - is probably the best way to increase the use of funds. In fact, I’ll suggest that the working group track the usage of the community fund and try to increase that usage. @willkraft @Yaz @ebeth @CalicoKittencat

1 Like

My thought on this one below:
Community fund

  • Scaling down: I agree with comments from @Pinotio.com I think there is enough in the community fund right now and if it helps the protocol, it might make sense to scale down the funds going into the community fund - it could be a low number but not totally 0 - so that it is still in the mind of people and we do not forget about it :slight_smile:
  • Use of funds #1: On the question about whether or not community fund has more or less feels like a different topic and not part of this conversation
  • Use of funds #2: That being said, it makes sense to scale down on some of the rewards as mentioned before and put existing unused funds to use. Re:To @heavyKevy 's point: We could use the community funds to attract crypto native users who like to see staking reward numbers. What form will that take, I don’t know. However, doing this might not show staking rewards for easy comparison w other blockchains. Is there another easy way to use say 50% of the community fund towards voter rewards or some other portion to counter the more than expected inflation?

Epoch Rewards
My thoughts on this is that, yes we should be taking action to make sure that we bring back the #s in balance to their projected rates if we feel the current dynamic mechanisms are being slow to respond.

1 Like

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