In RToken.sol, the calculateDustAmount()will always return 0, as the calculation of the real balance is unnecessarily multiplied by the reserve usage index, causing an over-inflated value.
In the above function, contractBalance takes the current balance of crvUSD in RToken.sol then divide it by the liquidity index that is retrieved from getNormalizedIncome().
totalSupply()will return the supply of RToken multiplied by the same liquidity index:
Now, currentTotalSupply is multiplied again by the same liquidity index as seen in line 9, to get totalRealBalance
This will result in extremely high certainty that contractBalance <= totalRealBalance will be true, hence always returning 0.
Dust amount will always be 0, and cannot be rescued.
Manual
Ensure that there is no double multiplying by the liquidity index when calculating the real balance.
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.