Skip to content

Commit f7d6853

Browse files
committed
Size golf
Reapply some of the reverted changes from 66e3e24
1 parent 1b1e720 commit f7d6853

File tree

2 files changed

+32
-83
lines changed

2 files changed

+32
-83
lines changed

src/chains/Mainnet/Common.sol

Lines changed: 16 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {Bebop} from "../../core/Bebop.sol";
2020

2121
import {SafeTransferLib} from "../../vendor/SafeTransferLib.sol";
2222
import {FreeMemory} from "../../utils/FreeMemory.sol";
23+
import {FastLogic} from "../../utils/FastLogic.sol";
2324
import {Ternary} from "../../utils/Ternary.sol";
2425

2526
import {ISettlerActions} from "../../ISettlerActions.sol";
@@ -69,6 +70,7 @@ abstract contract MainnetMixin is
6970
{
7071
using SafeTransferLib for IERC20;
7172
using SafeTransferLib for address payable;
73+
using FastLogic for bool;
7274
using Ternary for bool;
7375

7476
constructor() {
@@ -137,7 +139,7 @@ abstract contract MainnetMixin is
137139
token.safeTransfer(recipient, balance);
138140
}
139141
}
140-
} else if (action == uint32(ISettlerActions.UNISWAPV4.selector)) {
142+
} else if ((action == uint32(ISettlerActions.UNISWAPV4.selector)).or(action == uint32(ISettlerActions.BALANCERV3.selector)).or(action == uint32(ISettlerActions.EKUBO.selector)).or(action == uint32(ISettlerActions.EKUBOV3.selector))) {
141143
(
142144
address payable recipient,
143145
IERC20 sellToken,
@@ -150,7 +152,19 @@ abstract contract MainnetMixin is
150152
) = abi.decode(data, (address, IERC20, uint256, bool, uint256, uint256, bytes, uint256));
151153
IERC20 buyToken;
152154
(recipient, buyToken, minAmountOut) = _maybeSetSlippage(slippage, recipient, minAmountOut);
153-
(IERC20 actualBuyToken, uint256 actualAmountOut) = sellToUniswapV4(recipient, sellToken, bps, feeOnTransfer, hashMul, hashMod, fills);
155+
156+
IERC20 actualBuyToken;
157+
uint256 actualAmountOut;
158+
if (action == uint32(ISettlerActions.UNISWAPV4.selector)) {
159+
(actualBuyToken, actualAmountOut) = sellToUniswapV4(recipient, sellToken, bps, feeOnTransfer, hashMul, hashMod, fills);
160+
} else if (action == uint32(ISettlerActions.BALANCERV3.selector)) {
161+
(actualBuyToken, actualAmountOut) = sellToBalancerV3(recipient, sellToken, bps, feeOnTransfer, hashMul, hashMod, fills);
162+
} else if (action == uint32(ISettlerActions.EKUBO.selector)) {
163+
(actualBuyToken, actualAmountOut) = sellToEkuboV2(recipient, sellToken, bps, feeOnTransfer, hashMul, hashMod, fills);
164+
} else { // if (action == uint32(ISettlerActions.EKUBOV3.selector))
165+
(actualBuyToken, actualAmountOut) = sellToEkuboV3(recipient, sellToken, bps, feeOnTransfer, hashMul, hashMod, fills);
166+
}
167+
154168
_checkSlippage(buyToken, minAmountOut, actualBuyToken, actualAmountOut);
155169
} else if (action == uint32(ISettlerActions.MAKERPSM.selector)) {
156170
(address payable recipient, uint256 bps, bool buyGem, uint256 minAmountOut, IPSM psm, IERC20 dai) =
@@ -166,21 +180,6 @@ abstract contract MainnetMixin is
166180
(recipient, buyToken, minAmountOut) = _maybeSetSlippage(slippage, recipient, minAmountOut);
167181
(IERC20 actualBuyToken, uint256 actualAmountOut) = sellToEulerSwap(recipient, sellToken, bps, pool, zeroForOne);
168182
_checkSlippage(buyToken, minAmountOut, actualBuyToken, actualAmountOut);
169-
} else if (action == uint32(ISettlerActions.BALANCERV3.selector)) {
170-
(
171-
address payable recipient,
172-
IERC20 sellToken,
173-
uint256 bps,
174-
bool feeOnTransfer,
175-
uint256 hashMul,
176-
uint256 hashMod,
177-
bytes memory fills,
178-
uint256 minAmountOut
179-
) = abi.decode(data, (address, IERC20, uint256, bool, uint256, uint256, bytes, uint256));
180-
IERC20 buyToken;
181-
(recipient, buyToken, minAmountOut) = _maybeSetSlippage(slippage, recipient, minAmountOut);
182-
(IERC20 actualBuyToken, uint256 actualAmountOut) = sellToBalancerV3(recipient, sellToken, bps, feeOnTransfer, hashMul, hashMod, fills);
183-
_checkSlippage(buyToken, minAmountOut, actualBuyToken, actualAmountOut);
184183
} else if (action == uint32(ISettlerActions.MAVERICKV2.selector)) {
185184
(
186185
address payable recipient,
@@ -195,36 +194,6 @@ abstract contract MainnetMixin is
195194
(recipient, buyToken, minAmountOut) = _maybeSetSlippage(slippage, recipient, minAmountOut);
196195
(IERC20 actualBuyToken, uint256 actualAmountOut) = sellToMaverickV2(recipient, sellToken, bps, pool, tokenAIn, tickLimit);
197196
_checkSlippage(buyToken, minAmountOut, actualBuyToken, actualAmountOut);
198-
} else if (action == uint32(ISettlerActions.EKUBO.selector)) {
199-
(
200-
address payable recipient,
201-
IERC20 sellToken,
202-
uint256 bps,
203-
bool feeOnTransfer,
204-
uint256 hashMul,
205-
uint256 hashMod,
206-
bytes memory fills,
207-
uint256 minAmountOut
208-
) = abi.decode(data, (address, IERC20, uint256, bool, uint256, uint256, bytes, uint256));
209-
IERC20 buyToken;
210-
(recipient, buyToken, minAmountOut) = _maybeSetSlippage(slippage, recipient, minAmountOut);
211-
(IERC20 actualBuyToken, uint256 actualAmountOut) = sellToEkuboV2(recipient, sellToken, bps, feeOnTransfer, hashMul, hashMod, fills);
212-
_checkSlippage(buyToken, minAmountOut, actualBuyToken, actualAmountOut);
213-
} else if (action == uint32(ISettlerActions.EKUBOV3.selector)) {
214-
(
215-
address payable recipient,
216-
IERC20 sellToken,
217-
uint256 bps,
218-
bool feeOnTransfer,
219-
uint256 hashMul,
220-
uint256 hashMod,
221-
bytes memory fills,
222-
uint256 minAmountOut
223-
) = abi.decode(data, (address, IERC20, uint256, bool, uint256, uint256, bytes, uint256));
224-
IERC20 buyToken;
225-
(recipient, buyToken, minAmountOut) = _maybeSetSlippage(slippage, recipient, minAmountOut);
226-
(IERC20 actualBuyToken, uint256 actualAmountOut) = sellToEkuboV3(recipient, sellToken, bps, feeOnTransfer, hashMul, hashMod, fills);
227-
_checkSlippage(buyToken, minAmountOut, actualBuyToken, actualAmountOut);
228197
} else if (action == uint32(ISettlerActions.BEBOP.selector)) {
229198
(
230199
address payable recipient,

src/chains/Mainnet/TakerSubmitted.sol

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import {IERC20} from "@forge-std/interfaces/IERC20.sol";
88
import {ISignatureTransfer} from "@permit2/interfaces/ISignatureTransfer.sol";
99
import {ISettlerActions} from "../../ISettlerActions.sol";
1010

11+
import {FastLogic} from "../../utils/FastLogic.sol";
12+
1113
// Solidity inheritance is stupid
1214
import {SettlerSwapAbstract} from "../../SettlerAbstract.sol";
1315
import {SettlerBase} from "../../SettlerBase.sol";
@@ -16,6 +18,8 @@ import {AbstractContext} from "../../Context.sol";
1618

1719
/// @custom:security-contact security@0x.org
1820
contract MainnetSettler is Settler, MainnetMixin {
21+
using FastLogic for bool;
22+
1923
constructor(bytes20 gitCommit) SettlerBase(gitCommit) {}
2024

2125
function _dispatch(uint256 i, uint256 action, bytes calldata data, AllowedSlippage memory slippage)
@@ -51,24 +55,7 @@ contract MainnetSettler is Settler, MainnetMixin {
5155
function _dispatchVIP(uint256 action, bytes calldata data, AllowedSlippage memory slippage) internal override DANGEROUS_freeMemory returns (bool) {
5256
if (super._dispatchVIP(action, data, slippage)) {
5357
return true;
54-
} else if (action == uint32(ISettlerActions.UNISWAPV4_VIP.selector)) {
55-
(
56-
address payable recipient,
57-
ISignatureTransfer.PermitTransferFrom memory permit,
58-
bool feeOnTransfer,
59-
uint256 hashMul,
60-
uint256 hashMod,
61-
bytes memory fills,
62-
bytes memory sig,
63-
uint256 minAmountOut
64-
) = abi.decode(
65-
data, (address, ISignatureTransfer.PermitTransferFrom, bool, uint256, uint256, bytes, bytes, uint256)
66-
);
67-
IERC20 buyToken;
68-
(recipient, buyToken, minAmountOut) = _maybeSetSlippage(slippage, recipient, minAmountOut);
69-
(IERC20 actualBuyToken, uint256 actualAmountOut) = sellToUniswapV4VIP(recipient, feeOnTransfer, hashMul, hashMod, fills, permit, sig);
70-
_checkSlippage(buyToken, minAmountOut, actualBuyToken, actualAmountOut);
71-
} else if (action == uint32(ISettlerActions.BALANCERV3_VIP.selector)) {
58+
} else if ((action == uint32(ISettlerActions.UNISWAPV4_VIP.selector)).or(action == uint32(ISettlerActions.BALANCERV3_VIP.selector)).or(action == uint32(ISettlerActions.EKUBOV3_VIP.selector))) {
7259
(
7360
address payable recipient,
7461
ISignatureTransfer.PermitTransferFrom memory permit,
@@ -83,7 +70,17 @@ contract MainnetSettler is Settler, MainnetMixin {
8370
);
8471
IERC20 buyToken;
8572
(recipient, buyToken, minAmountOut) = _maybeSetSlippage(slippage, recipient, minAmountOut);
86-
(IERC20 actualBuyToken, uint256 actualAmountOut) = sellToBalancerV3VIP(recipient, feeOnTransfer, hashMul, hashMod, fills, permit, sig);
73+
74+
IERC20 actualBuyToken;
75+
uint256 actualAmountOut;
76+
if (action == uint32(ISettlerActions.UNISWAPV4_VIP.selector)) {
77+
(actualBuyToken, actualAmountOut) = sellToUniswapV4VIP(recipient, feeOnTransfer, hashMul, hashMod, fills, permit, sig);
78+
} else if (action == uint32(ISettlerActions.BALANCERV3_VIP.selector)) {
79+
(actualBuyToken, actualAmountOut) = sellToBalancerV3VIP(recipient, feeOnTransfer, hashMul, hashMod, fills, permit, sig);
80+
} else { // if (action == uint32(ISettlerActions.EKUBOV3_VIP.selector))
81+
(actualBuyToken, actualAmountOut) = sellToEkuboV3VIP(recipient, feeOnTransfer, hashMul, hashMod, fills, permit, sig);
82+
}
83+
8784
_checkSlippage(buyToken, minAmountOut, actualBuyToken, actualAmountOut);
8885
} else if (action == uint32(ISettlerActions.MAVERICKV2_VIP.selector)) {
8986
(
@@ -99,23 +96,6 @@ contract MainnetSettler is Settler, MainnetMixin {
9996
(recipient, buyToken, minAmountOut) = _maybeSetSlippage(slippage, recipient, minAmountOut);
10097
(IERC20 actualBuyToken, uint256 actualAmountOut) = sellToMaverickV2VIP(recipient, salt, tokenAIn, permit, sig, tickLimit);
10198
_checkSlippage(buyToken, minAmountOut, actualBuyToken, actualAmountOut);
102-
} else if (action == uint32(ISettlerActions.EKUBOV3_VIP.selector)) {
103-
(
104-
address payable recipient,
105-
ISignatureTransfer.PermitTransferFrom memory permit,
106-
bool feeOnTransfer,
107-
uint256 hashMul,
108-
uint256 hashMod,
109-
bytes memory fills,
110-
bytes memory sig,
111-
uint256 minAmountOut
112-
) = abi.decode(
113-
data, (address, ISignatureTransfer.PermitTransferFrom, bool, uint256, uint256, bytes, bytes, uint256)
114-
);
115-
IERC20 buyToken;
116-
(recipient, buyToken, minAmountOut) = _maybeSetSlippage(slippage, recipient, minAmountOut);
117-
(IERC20 actualBuyToken, uint256 actualAmountOut) = sellToEkuboV3VIP(recipient, feeOnTransfer, hashMul, hashMod, fills, permit, sig);
118-
_checkSlippage(buyToken, minAmountOut, actualBuyToken, actualAmountOut);
11999
} /* else if (action == uint32(ISettlerActions.CURVE_TRICRYPTO_VIP.selector)) {
120100
(
121101
address payable recipient,

0 commit comments

Comments
 (0)