Core Contracts

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

pause will lower the rewards for time that the system operated actively

Summary

pause will lower the rewards for time that the system operated activly

Vulnerability Details

pause will steam active interest time as it updateLastBlock to update it to the paused time.

https://github.com/Cyfrin/2025-02-raac/blob/main/contracts/core/minters/RAACMinter/RAACMinter.sol#L91

function pause(bool updateLastBlock, uint256 newLastUpdateBlock) external onlyRole(PAUSER_ROLE) {
_pause();
if (updateLastBlock) {
_setLastUpdateBlock(newLastUpdateBlock);
}
}

Skipping interest during a pause is important, however pause will skip the interest for the time up to the pause, which is active time and should create active emissions/rewards.

Example:

  1. There were no system interactions for the last 1 day

  2. pause is called due to some reason

  3. 1 day later the system in unpaused

In our case since there were no interactions before the pause 2 days worth of rewards were removed. 2nd is under the pause which is reasonable, but first is for active time that if tick() was called it would have generated rewards.

Impact

pause will lower the rewards for time that the system operated actively

Tools Used

Manual review

Recommendations

Keep the same for unpause, however in pause call tick in order to capture the active time passed

function pause(bool updateLastBlock, uint256 newLastUpdateBlock) external onlyRole(PAUSER_ROLE) {
_pause();
if (updateLastBlock) {
tick();
}
}
Updates

Lead Judging Commences

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

RAACMinter::pause skips interest accrual for active pre-pause period by updating lastUpdateBlock without calling tick(), permanently removing earned rewards

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

RAACMinter::pause skips interest accrual for active pre-pause period by updating lastUpdateBlock without calling tick(), permanently removing earned rewards

Support

FAQs

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