In the _withdrawFromVault function, the contract mistakenly passes msg.sender as the withdrawal owner when interacting with the Curve vault. Since users do not hold Curve LP tokens directly, this causes the function to revert. The correct withdrawal owner should be address(this), ensuring the contract manages its own funds properly.
The withdrawal function currently specifies msg.sender as the withdrawal owner, which is incorrect because only the contract (address(this)) holds Curve LP tokens.
This leads to a failed transaction since msg.sender does not own the required tokens, preventing proper liquidity rebalancing.
Incorrect: msg.sender is used as the withdrawal owner.
Correct: The contract itself (address(this)) should be the withdrawal owner.
The function will revert, preventing liquidity withdrawal and affecting the protocol’s ability to rebalance assets.
This can lead to inefficiencies in fund management, causing operational disruptions in withdrawals and deposits.
Manual inspection of the contract logic.
Ensure that the contract (address(this)) is used as the owner when withdrawing from the Curve vault.
This ensures the contract successfully retrieves its liquidity from the Curve vault.
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.