The RAACMinter.updateEmissionRate()
function relies on the system utilization rate retrieved from RAACMinter.getUtilizationRate()
. However, the implementation of getUtilizationRate()
is flawed, leading to incorrect calculations of the emissionRate
. This miscalculation can have significant implications for the distribution of the veRAAC
token.
The current implementation of the getUtilizationRate()
function is as follows:
Incorrect Total Borrowed Calculation:
The lendingPool.getNormalizedDebt()
function returns reserve.usageIndex
, which does not represent the total borrowed amount accurately. Instead, it uses a large decimal scaling factor (1e27), which can lead to misinterpretation of the value.
Misleading Total Deposits Calculation:
The stabilityPool.getTotalDeposits()
function returns the total deposits of rToken
to the stability pool, which does not encompass the entire system's deposit amount. This can lead to a significant underestimation of the total deposits in the system.
Due to the incorrect values for totalBorrowed
and totalDeposits
, the utilization rate calculated by getUtilizationRate()
will be inaccurate. Consequently, the emissionRate
will be updated based on this flawed utilization rate, potentially leading to improper emissions of the veRAAC
token and affecting the overall tokenomics of the system.
The incorrect calculation of the utilization rate can lead to:
Inaccurate updates to the emissionRate
.
Potential over- or under-emission of veRAAC
tokens.
Distorted incentives for users interacting with the lending and stability pools.
Manual Review
It is recommended to implement the calculation based on accurate representations of the total borrowed and total deposits.
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.