The RAAC emission rate calculation in RAACMinter.sol relies on getUtilizationRate()
, which fetches data from lendingPool.getNormalizedDebt()
and stabilityPool.getTotalDeposits()
. However, the lending pool state is not updated before emissions are recalculated at this stage, leading to outdated values being used. This results in systematically underestimated emissions, reducing the RAAC rewards distributed to users. Given that getNormalizedDebt()
grows exponentially while getTotalDeposits()
increases linearly, failure to update state suppresses emissions more than expected, discouraging user participation in the protocol.
The core issue lies in the first if logic of tick()
function in RAACMinter.sol, which triggers emission rate updates as follows:
updateEmissionRate()
will first trigger calculateNewEmissionRate()
which further triggers getUtilizationRate()
:
Now, getNormalizedDebt()
relates to reserve.usageIndex
, which grows exponentially whereas getTotalDeposits()
, i.e. the total deposits of rToken
is tied to reserve.liquidityIndex
, which increases linearly.
Without pre-calling lendingPool.updateState()
, both values are stale, leading to returning incorrect utilization rates that results in lower-than-intended emissions, reducing reward distribution. This is because totalBorrowed
, the numerator, is exponentially deprived whereas totalDeposits
, the denominator, is lineally deprived as far as the scaled up increment is concerned. As such, the fraction of totalBorrowed
over totalDeposits
will be smaller than expected.
Underestimated Emissions → Reduced Incentives
Since emissions are based on utilization, using outdated values results in suppressed RAAC minting.
Users receive fewer rewards than expected, making liquidity provision less attractive.
Incorrect RAAC Reward Distribution
The RAAC reward mechanism fails to distribute rewards optimally, leading to inefficient incentives for stability providers.
Long-Term Degradation of Protocol Health
If underestimation persists, the RAAC emission schedule is fundamentally flawed, impacting the overall economic model.
Manual
Consider implementing the following refactoring:
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.