Core Contracts

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

StabilityPool::calculateRaacRewards() Mixes userDeposits (rToken) With deToken.totalSupply()

Summary

StabilityPool::calculateRaacRewards Mixes userDeposits (rToken) with deToken.totalSupply()

Vulnerability Details

userDeposit is in rToken, while totalDeposits is deToken (total supply). If the ratio between rToken and deToken is not 1:1, this calculation will be incorrect. This requires to convert userDeposits[user] into deToken units before dividing by the total supply.

function calculateRaacRewards(address user) public view returns (uint256) {
uint256 userDeposit = userDeposits[user];
uint256 totalDeposits = deToken.totalSupply();
uint256 totalRewards = raacToken.balanceOf(address(this)); // here
if (totalDeposits < 1e6) return 0;
return (totalRewards * userDeposit) / totalDeposits; // here
}
# relevant lines below for the impatient
uint256 totalRewards = raacToken.balanceOf(address(this));
return (totalRewards * userDeposit) / totalDeposits;

Impact

Incorrect reward calculation. If the ratio between rToken and deToken is not strictly 1:1, this calculation will be incorrect.

Tools Used

Manual review of code and docs.

Recommendations

Convert userDeposits[user] into deToken units before dividing by the total supply.

Updates

Lead Judging Commences

inallhonesty Lead Judge 4 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.