Core Contracts

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

Wrong boost limits initialization in BaseGauge constructor breaks reward distribution

Relevant GitHub Links

https://github.com/Cyfrin/2025-02-raac/blob/89ccb062e2b175374d40d824263a4c0b601bcb7f/contracts/core/governance/gauges/BaseGauge.sol#L141-L142

Summary

The BaseGauge contract initializes boostState.minBoost to 1e18 while maxBoost is 25000, creating an inverted and invalid boost range that breaks reward calculations.

Vulnerability Details

The BaseGauge constructor initializes boost parameters incorrectly:

// BaseGauge.sol
constructor(...) {
boostState.maxBoost = 25000; // 2.5x
boostState.minBoost = 1e18; // Should be 10000 (1x)
}

This conflicts with protocol-wide boost standards where:

  • MAX_BOOST = 25000 (2.5x)

  • MIN_BOOST = 10000 (1x)

The boost calculation in BoostCalculator fails because:

uint256 boostRange = params.maxBoost - params.minBoost; // Underflows
uint256 boost = params.minBoost + ((votingPowerRatio * boostRange) / 1e18);

Impact

  • Reverts on boost calculations due to underflow

  • Breaks reward distribution for the entire gauge system

  • Disrupts core protocol functionality

Tools Used

Manual Review

Recommendations

Change the initialization in BaseGauge constructor:

- boostState.minBoost = 1e18;
+ boostState.minBoost = 10000; // 1x
Updates

Lead Judging Commences

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Validated
Assigned finding tags:

boostState.minBoost is set to 1e18

Support

FAQs

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