The RAACMinter.updateEmissionRate() function updates emissionRate based on the system utilization rate which retrieves from RAACMinter.getUtilizationRate() function. However, this function returns incorrect system utilization rate and so, emissionRate is updated incorrectly.
The RAACMinter.getUtilizationRate() function returns the system utilization rate, however the implementation is incorrect. Let's analyze the following code:
The lendingPool.getNormalizedDebt() function returns reserve.usageIndex, but this value is not the total deposit amount and also it uses 1e27 decimal.
The stabilityPool.getTotalDeposits() function returns total deposit amount of rToken to stability pool, however this value does't refer total deposit amount to the system.
Both two values totalBorrowed, totalDeposits are incorrect and function will return incorrect utiliztion rate.
As result, emissionRate could be always maxRate and veRAAC will be minted incorrectly.
emissionRate will be updated incorrectly and this could result incorrect emission of 'veRAAC` token.
Manual Review
Implement the calculation based on lendingPool.reserve and lendingPool.rateData with ReserveLibrary.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.