Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: low
Valid

Irreversible emission cap reduction in BaseGauge

Summary

The setEmission function in BaseGauge contract implements a one-way emission cap reduction that cannot be reversed, potentially leading to permanent protocol constraints as it cannot be adjusted to higher values later on.

Vulnerability Details

The setEmission function enforces a one-way reduction of emission caps:

function setEmission(uint256 emission) external onlyController {
if (emission > periodState.emission) revert RewardCapExceeded();
periodState.emission = emission;
emit EmissionUpdated(emission);
}

Once an emission cap is reduced, it can never be increased again due to the RewardCapExceeded check. This creates a permanent, irreversible state where:

  1. Any reduction in emission cap is permanent

  2. No mechanism exists to increase the cap once lowered

For example:

// Initial emission cap is 1000
setEmission(100); // Valid: reduces cap to 100
setEmission(500); // Reverts: can never increase cap back
// Protocol is now permanently limited to max 100 emissions

Market conditions are volatile, emissions could be adjusted to be higher or lower depending on different factors.

Impact

Once an emission cap is lowered, the gauge's maximum reward distribution capacity is permanently reduced, affecting all future reward periods.

The gauge controller loses the ability to adjust emissions upward in response to changing market conditions.

Tools Used

Manual Review

Recommendations

Implement a minimum and maximum threshold. Allow the emissions to be set within this range.

function setEmission(uint256 emission) external onlyController {
- if (emission > periodState.emission) revert RewardCapExceeded();
+ if (emission < MIN_EMISSION) revert EmissionTooLow();
+ if (emission > MAX_EMISSION) revert EmissionTooHigh();
periodState.emission = emission;
emit EmissionUpdated(emission);
}
Updates

Lead Judging Commences

inallhonesty Lead Judge 7 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity
inallhonesty Lead Judge 7 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Appeal created

holydevoti0n Submitter
7 months ago
inallhonesty Lead Judge
6 months ago
inallhonesty Lead Judge 6 months ago
Submission Judgement Published
Validated
Assigned finding tags:

BaseGuage::setEmission can be configured only to lower values limiting the

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!