All vault deposits fail due to misalignment between token holder (RToken contract) and the contract attempting to deposit (LendingPool).
The deposit function in the LendingPool contract allows users to deposit reserve assets (crvUSD) and receive RTokens. The process follows these steps:
crvUSD is transferred from the user to the RToken contract, which then mints RTokens to the user (using ReserveLibrary)
The deposit function calls _rebalanceLiquidity. If currentBuffer exceeds desiredBuffer, _depositIntoVault is invoked
The issue occurs because:
All crvUSD tokens are held by the RToken contract
The Curve vault's deposit function attempts to transfer crvUSD from the msg.sender (LendingPool)
Even though LendingPool approves the vault, the transfer will fail as LendingPool does not have the tokens
High: All vault deposits will fail, breaking core protocol functionality.
Fix the token flow to ensure the correct contract holds and transfers the assets.
Current flow (failing):
RToken (has tokens) -> Curve vault tries to take from LendingPool (no tokens)
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.