The getUtilizationRate()
function in the RAACMinter contract incorrectly uses getNormalizedDebt()
to get the total borrowed amount, which returns the usage index instead of the total debt. This leads to an incorrect utilization rate calculation that affects the emission rate adjustments.
The RAACMinter.getUtilizationRate()
function uses:
contracts/core/minters/RAACMinter/RAACMinter.sol#L241
The issue is that getNormalizedDebt()
returns the usage index rather than the actual total borrowed amount. Looking at LendingPool
contract, the correct value should be reserve.totalUsage
which represents the total debt in the system.
This issue causes incorrect utilization rate calculations which directly affects emission rate adjustments and RAAC Token distribution. Therefore, the impact is high as it fundamentally breaks the protocol's core rewards emission mechanism.
Manual code review
Add a view function in LendingPool to expose the total debt:
Modify the getUtilizationRate()
function to use the correct total debt value
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.