Core Contracts

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

RAACMinter::calculateNewEmissionRate wont update emission rate when utilization is equal to target utilization

Summary

RAACMinter manages the minting and distribution of RAAC tokens based on utilization. The issue is that if utilization hits target utilization, code responsible for updating emission will not update emission rates.

Vulnerability Details

Whenever a user deposits to stability pool, RAACMinter will be ticked and if emissionUpdateInterval is passed, emission rates will be updated.

function updateEmissionRate() public whenNotPaused {
if (emissionUpdateInterval > 0 && block.timestamp < lastEmissionUpdateTimestamp + emissionUpdateInterval) {
revert EmissionUpdateTooFrequent();
}
uint256 newRate = calculateNewEmissionRate();
emissionRate = newRate;
lastEmissionUpdateTimestamp = block.timestamp;
emit EmissionRateUpdated(newRate);
}

The problem here is that if utilization rate has hit the target, no update will take place to emission rate.

function calculateNewEmissionRate() internal view returns (uint256) {
uint256 utilizationRate = getUtilizationRate();
uint256 adjustment = (emissionRate * adjustmentFactor) / 100;
if (utilizationRate > utilizationTarget) {
uint256 increasedRate = emissionRate + adjustment;
uint256 maxRate = increasedRate > benchmarkRate ? increasedRate : benchmarkRate;
return maxRate < maxEmissionRate ? maxRate : maxEmissionRate;
} else if (utilizationRate < utilizationTarget) {
uint256 decreasedRate = emissionRate > adjustment ? emissionRate - adjustment : 0;
uint256 minRate = decreasedRate < benchmarkRate ? decreasedRate : benchmarkRate;
return minRate > minEmissionRate ? minRate : minEmissionRate;
}
return emissionRate;
}

In a scenario where utilization rate has been high, and emission rate has been high(note that utilization is measuring how much of the rTokens are coming back into stability pool -inversed for some reason), after utilization rate hits target the protocol would want to decrease emission rates but it keeps emitting at a high rate and vice versa.

Impact

Emission rates might not be updated as intended.

Recommendations

Cache where the last emission rate has been compared to target utilization and depending on the direction emission rate hits target adjust emission rate.

Updates

Lead Judging Commences

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

Support

FAQs

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