In RToken contract, the updateLiquidityIndex() functions cannot be executed as intended because the Reserve Pool contract lacks the necessary implementation to call it. Additionally, _liquidityIndex remains unchanged, always defaulting to WadRayMath.RAY in every transferFrom() function.
The function updateLiquidityIndex() is intended to update _liquidityIndex, but it is never called from the Reserve Pool contract.As a result, _liquidityIndex always retains its default value of WadRayMath.RAY.
This directly affects every transferFrom() function where _liquidityIndex is used, causing incorrect scaling of values.
Due to the absence of implementation in the Reserve Pool contract, the _liquidityIndex remains unchanged, leading to incorrect scaling in transferFrom(), potentially affecting token transfers and balances.
The protocol inconsistently uses different indexes in transfer() and transferFrom(), leading to potential discrepancies in token transfers.
Manual Review
Remove the updateLiquidityIndex() function since it is never used.
Replace _liquidityIndex with ILendingPool(_reservePool).getNormalizedIncome() in transferFrom() to ensure accurate scaling.
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.