The strategies' _harvestAndReport function is supposed to correctly return the vault's total assets but it also includes the vautl's underlying token amount which doesn't have a 1:1 with the asset, resulting on smaller returns.
This is the strategies' _harvestAndReport function and it is similar throughout the 3 contracts.
As we can see, it is also accounting for "possible dormant WETH that isn't swapped yet". However, WETH doesn't have a 1:1 peg to the vault's asset which is alETH.
Let's consider a scenario where 1 alETH = 0.95 WETH:
Vault holds 10 alETH in unexchanged balance.
Vault also has 0.95 WETH that isn't swapped yet.
_harvestAndReport will return 10 alETH + 0.95 WETH = 10.95 alETH total assets.
In reality, _harvestAndReport should return 11 alETH total assets, since 1 alETH = 0.95 WETH.
This function is responsible to accurately update the vault's totalAssets. The totalAssets variable is used during the deposits and withdrawals, so any inaccuracy on this will result on innacurate shares getting minted or assets getting withdrawn.
Manual review
Consider pulling the alETH-WETH ratio from an oracle or a DEX and converting the WETH to alETH according to that price received.
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.