Core Contracts

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

Incorrect Period Initialization in GaugeController

Summary

addGauge initializes periods with block.timestamp, potentially causing time-weighted averages to include past timestamps. This may skew calculations.

Vulnerability Details

Current implementation of GaugeController's addGauge function

function addGauge(address gauge, GaugeType gaugeType, uint256 initialWeight) external onlyGaugeAdmin {
// Initialize period with current timestamp
TimeWeightedAverage.Period storage period = gaugePeriods[gauge];
TimeWeightedAverage.createPeriod(
period,
block.timestamp, // Issue: Using current timestamp
duration,
periodWeight,
periodWeight
);
}

Impact of using block.timestamp

  • Time-weighted calculations include past periods

Impact

  1. Initial period weights become misaligned

  2. Reward distributions start from incorrect timestamps

  3. Period boundaries don't align with intended cycles

Tools Used

Manual review

Recommendations

Align period start times with future epochs (here's like, block.timestamp + periodDuration) to ensure proper windowing.

function addGauge(address gauge, GaugeType gaugeType, uint256 initialWeight) external onlyGaugeAdmin {
uint256 duration = gaugeType == GaugeType.RWA ? 30 days : 7 days;
// Calculate next clean epoch boundary
uint256 currentEpoch = block.timestamp / duration;
uint256 nextEpochStart = (currentEpoch + 1) * duration;
TimeWeightedAverage.Period storage period = gaugePeriods[gauge];
TimeWeightedAverage.createPeriod(
period,
nextEpochStart,
duration,
periodWeight,
periodWeight
);
}
Updates

Lead Judging Commences

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Invalidated
Reason: Too generic

Support

FAQs

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