flashLoanFeeBps defaults to 9 (0.09%) and is used in calculateOpenParams() to verify that the borrow amount covers flash loan repayment. But the actual fee is whatever Aave passes as _premium in executeOperation(). If Aave governance changes the fee, the pre-trade simulation becomes invalid.
calculateOpenParams() uses the stored flashLoanFeeBps
But _executeOpenOperation() uses the real Aave-provided premium:
These can diverge silently after any Aave governance update.
Trades simulated as viable via calculateOpenParams() will revert at execution if the real fee is higher. Users waste gas on flash loan attempts that can't succeed. Conversely if the owner forgets to update flashLoanFeeBps, all simulations are wrong.
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.
The contest is complete and the rewards are being distributed.