The constructor initializes _liquidityIndex to 1 RAY, and the RToken::updateLiquidityIndex function exists to maintain it. However, the LendingPool contract never calls updateLiquidityIndex, causing _liquidityIndex to remain at 1 RAY permanently instead of reflecting the actual interest accrual.
RToken defines an updateLiquidityIndex function to synchronize its _liquidityIndex with the LendingPool.
The LendingPool never invokes this function, meaning _liquidityIndex stays at the default value (1 RAY).
As a result, any logic depending on a changing _liquidityIndex is rendered ineffective.
This function is never called.
Since _liquidityIndex never updates, the contract fails to capture the true growth or decline of underlying value. This leads to inaccuracies in user balances or interest calculations tied to liquidity indexing.
Manual Review
Ensure the LendingPool contract actually calls RToken::updateLiquidityIndex whenever liquidity index changes.
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.