Proposal: Optimizing prover rewards for more consistency

Summary

This proposal updates parameters in the RewardBooster contract to more aggressively penalize low-coverage provers while preserving recovery time and break-even thresholds for reliable provers.

Parameter Current (on-chain) Proposed
increment 125,000 101,400
maxScore 15,000,000 367,500
a 1,000 250,000
minimum 100,000 10,000
k 1,000,000 1,000,000

decay_rate remains at 100,000 per epoch as it’s not in config variables. I didn’t want to complicate the proposal.

Motivation

Under the current parameters, the reward boost curve is extremely flat; a prover with only 78% coverage still earns roughly 44% of the maximum reward share. This means provers who cherry-pick cheap epochs face almost no economic consequence, undermining the incentive to prove consistently. While margins are currently high for protocols because blocks are empty and can be proven, the protocol is only able to cover a few provers. While that is not optimal, for protocol health, we need provers to be sustainable. As load and application transactions increase, a 1 TPS requirement will necessitate 200 agents with 32C/64T CPUs and 128GB RAM per agent. This kind of hardware costs a lot of money, and the main proving cost becomes hardware, whereas right now it is near zero. Since the chain will never be under a constant steady load, there will be times with many transactions and times with fewer, but a prover needs to cover the highest limit. Otherwise, all sequencers in that committee get slashed and the blocks are pruned, which is not good for the chain or anyone from users to developers in the ecosystem. Covering the network costs a lot for the prover, and because network load will not always be consistent and there will be empty blocks, it is currently very prone to value extraction. While we cannot ever block it fully, with this proposal, we make it much harder for short-term and inconsistent provers to achieve a share in the pool so that actual provers can be more consistent and sustainable.

How It Works

The share formula in RewardBooster._toShares() is:

share = max(k - a * (maxScore - score)² / 1e10, minimum)

Each epoch, a prover’s score decays by 100,000. If they submit a proof, it increases by the increment. The net gain per proof is +1,400, meaning a prover must prove ~98.6% of epochs just to maintain their score; this is the break-even threshold.

Miss cascade from max score

Consecutive misses Share (% of max) Effect
0 100% Full reward
1 75% Severe hit
2 1% Minimum floor
3 1% Minimum floor

Recovery from zero back to the max score takes 262 epochs (~7 days). Recovering from a single miss takes ~71 epochs (~1.9 days). In the current system, reaching the max score takes 16 days, and getting to the minimum score takes 4 days of no proposals, while the minimum reward share is always at 10%. After 10 consecutive misses, a prover is still rewarded at 90%, while at the max score, if they miss one out of every 5 epochs, they can retain the near-perfect max reward rate. The changes I propose make it harder to retain high rewards; however, because punishment and reward reductions are significant, it also takes less time to reach the max score. The proposed system allows 1 epoch miss every 2 days with very moderate reward loss.

**Risk Assessment
**
1)We are just changing the config variables in the defined method. There is no smart contract risk.
2)In case of bugs or issues with the protocol where every prover is affected and unable to send proofs, resulting in deducted reward shares, everyone is deducted equally. This means their share percentage stays the same, so there is no risk of making things unstable or breaking the economic structure completely.
3)If the parameters prove too aggressive, a new governance proposal can adjust them.

I am adding the payload and the some comparison chart from the epoch range in this repo

Since the alpha upgrade is coming and will change the rollup address, I am not sure how this should be proposed. Should it target the new or the old rollup address? There is also the AZIP process, which was announced recently. I am not sure how to follow up with those as I have not had time, but I did not want to delay this further, so I am sharing it here for discussion. Since this is just a configuration change, I am in favor of deploying it on the rollup as soon as possible. Hopefully, I can get support for it.

There are a few things I want to point out. The total pool of rewards for provers is 15,133,800 AZTEC between epochs 236 to 4,682, totaling 4,443 epochs. 44.1% of it (6,677,983 AZTEC) was earned by a single operator, 0x6bf706f287b4e86d27dabb10305bae59720720a4. With these changes, this operator’s rate across the board goes down to 37% because, while many of its provers have low coverage and lose to changes, some have high coverage and those benefit from higher rewards. Currently, maintaining consistency is not that hard because computing the proof is near zero, but after the update, that will not be the case, so they will be reduced significantly more. If we do not solve this, actual provers that prove all epochs and invest in hardware might not achieve sustainability, and we might not have provers to cover the chain anymore. The biggest gainer of this change is 0xA5c7857Bf8C8220403CAf189066CE5bac4462705, which consistently proved nearly all epochs without a miss since they started. Two days ago, it looks like they hit a bug and are currently not proving. For situations like this, while decay is faster, claiming the max reward rate is also significantly faster. As long as a prover proves the compute-heavy, expensive epochs along with all the cheap epochs, my aim here is to minimize economic value extraction with the upcoming alpha upgrade. With current variables, anyone that proves 4 out of 5 epochs can retain the max reward, and since on-chain activity is not constant, there will be many moments where proofs can be generated cheaply, which can lead to 10 to 20 duplicates by a single operator. As the chain has more activity and transactions, these kinds of extractions should be at a low level, as 2 heavy epochs that they do not compute in a week would put them back to the minimum reward level..

1 Like

I think this proposal makes a lot of sense. This allows us to give substantially better economic stability to “real” provers by reducing the amount of rewards taken from “prove sniping” cheap blocks all without changing the economics of the % of AZTEC issuance dedicated for paying for proving.

Great proposal, I’m in favor.

Love to see these suggestions @emrepiconbello
We recently introduced the governance framework, see Introducing the Aztec Governance Process

To get started, I suggest posting this to the Github Discussions on the Governance repo. We have ongoing weekly calls discussing governance, would be great to see you there to discuss this! :slight_smile:

1 Like

Support this direction. Reward structures should favor operators who invest in consistent, reliable infrastructure over those sniping proofs opportunistically.

The 98.6% coverage threshold is demanding but fair imo. Operators running on bare metal with proper redundancy - UPS, failover connections, monitoring, should clear that bar consistently. Those who can’t maintain it probably aren’t running the kind of infrastructure the network needs long-term.

I would have questions about MPC but i dont have numbers. Bare in mind that on other chains, where various sorts of MPC are live and used. Nodes that run baremetal and MPC do have some drops in numbers, but usually its not that much.

Two observations:

  1. The config-only approach is smart. It lets the network iterate on parameters without smart contract risk. If 98.6% turns out too aggressive post-upgrade (given the v4 changes landing around March 30), the community can adjust.

  2. Protocol-wide outage handling is probably a good call, considering the architecture of the network

We operate Aztec sequencer nodes on self-hosted baremetal with multiple failover layers (broadband + Starlink), UPS, 24/7 monitoring. Consistency-rewarding economics aligns with how we build infrastructure.

1 Like