Skip to content

Commit 7ddd4c2

Browse files
authored
Merge pull request #11 from euler-xyz/fix/_computeQuote
Fix _computeQuote()
2 parents 5374443 + 7b6f168 commit 7ddd4c2

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

TODO

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
! Better revert messages when a swap cannot be satisifed due to debt-limit/utilisation/etc
44
* currently it's an arithmetic underflow
55
! Don't make quotes that would cause a swap to fail due to supply or borrow caps
6-
! In _computeQuote() use vault.cash() method instead of token.balanceOf() otherwise donations could cause quoted swaps to fail
7-
! In _computeQuote(), exactOut swaps should verify the *amount* (not quote) is withdrawable
86
* ConstantSum: incorporate price multipliers in quote methods
97
* natspec
108
* permit2 instead of regular approval: measure gas savings

src/MaglevBase.sol

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -219,13 +219,17 @@ abstract contract MaglevBase is IMaglevBase, EVCUtil {
219219

220220
uint256 quote = computeQuote(amount, exactIn, asset0IsInput);
221221

222-
require(quote <= (asset0IsInput ? reserve1 : reserve0), InsufficientReserves());
223-
require(
224-
quote <= IERC20(asset0IsInput ? asset1 : asset0).balanceOf(asset0IsInput ? vault1 : vault0),
225-
InsufficientCash()
226-
);
222+
if (exactIn) {
223+
// if `exactIn`, `quote` is the amount of assets to buy from the AMM
224+
require(quote <= (asset0IsInput ? reserve1 : reserve0), InsufficientReserves());
225+
require(quote <= IEVault(asset0IsInput ? vault1 : vault0).cash(), InsufficientCash());
226+
} else {
227+
// if `!exactIn`, `amount` is the amount of assets to buy from the AMM
228+
require(amount <= (asset0IsInput ? reserve1 : reserve0), InsufficientReserves());
229+
require(amount <= IEVault(asset0IsInput ? vault1 : vault0).cash(), InsufficientCash());
230+
}
227231

228-
// exactOut: increase required amountIn, rounding up
232+
// exactOut: increase required quote(amountIn), rounding up
229233
if (!exactIn) quote = (quote * 1e18 + (feeMultiplier - 1)) / feeMultiplier;
230234

231235
return quote;

0 commit comments

Comments
 (0)