@paraswap/dex-lib 5.0.11-force-rfq-revert.0 → 5.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/config.js +14 -15
- package/build/config.js.map +1 -1
- package/build/dex/balancer-v1/balancer-v1.d.ts +1 -1
- package/build/dex/balancer-v1/balancer-v1.js +1 -14
- package/build/dex/balancer-v1/balancer-v1.js.map +1 -1
- package/build/dex/bebop/bebop.d.ts +2 -2
- package/build/dex/bebop/bebop.js +2 -15
- package/build/dex/bebop/bebop.js.map +1 -1
- package/build/dex/cables/cables.d.ts +2 -2
- package/build/dex/cables/cables.js +2 -6
- package/build/dex/cables/cables.js.map +1 -1
- package/build/dex/dexalot/dexalot.d.ts +2 -2
- package/build/dex/dexalot/dexalot.js +2 -6
- package/build/dex/dexalot/dexalot.js.map +1 -1
- package/build/dex/generic-rfq/generic-rfq.d.ts +2 -2
- package/build/dex/generic-rfq/generic-rfq.js +2 -11
- package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
- package/build/dex/hashflow/hashflow.d.ts +2 -2
- package/build/dex/hashflow/hashflow.js +2 -6
- package/build/dex/hashflow/hashflow.js.map +1 -1
- package/build/dex/index.js +0 -8
- package/build/dex/index.js.map +1 -1
- package/build/dex/metric/metric.js +1 -5
- package/build/dex/metric/metric.js.map +1 -1
- package/build/dex/native/native.d.ts +2 -2
- package/build/dex/native/native.js +2 -8
- package/build/dex/native/native.js.map +1 -1
- package/build/dex/paraswap-limit-orders/config.js +0 -6
- package/build/dex/paraswap-limit-orders/config.js.map +1 -1
- package/build/dex/paraswap-limit-orders/paraswap-limit-orders.d.ts +2 -2
- package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js +2 -11
- package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js.map +1 -1
- package/build/dex/swaap-v2/swaap-v2.d.ts +2 -2
- package/build/dex/swaap-v2/swaap-v2.js +2 -10
- package/build/dex/swaap-v2/swaap-v2.js.map +1 -1
- package/build/dex/uniswap-v3/config.js +0 -28
- package/build/dex/uniswap-v3/config.js.map +1 -1
- package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js +0 -1
- package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js.map +1 -1
- package/build/executor/Executor01BytecodeBuilder.d.ts +0 -8
- package/build/executor/Executor01BytecodeBuilder.js +12 -124
- package/build/executor/Executor01BytecodeBuilder.js.map +1 -1
- package/build/executor/Executor02BytecodeBuilder.d.ts +0 -22
- package/build/executor/Executor02BytecodeBuilder.js +1 -208
- package/build/executor/Executor02BytecodeBuilder.js.map +1 -1
- package/build/executor/ExecutorDetector.d.ts +0 -1
- package/build/executor/ExecutorDetector.js +0 -14
- package/build/executor/ExecutorDetector.js.map +1 -1
- package/build/executor/types.d.ts +1 -2
- package/build/executor/types.js +0 -4
- package/build/executor/types.js.map +1 -1
- package/build/generic-swap-transaction-builder.d.ts +1 -5
- package/build/generic-swap-transaction-builder.js +51 -142
- package/build/generic-swap-transaction-builder.js.map +1 -1
- package/build/implementations/local-paraswap-sdk.d.ts +0 -1
- package/build/implementations/local-paraswap-sdk.js +1 -7
- package/build/implementations/local-paraswap-sdk.js.map +1 -1
- package/build/types.d.ts +0 -3
- package/build/utils.d.ts +0 -1
- package/build/utils.js +1 -15
- package/build/utils.js.map +1 -1
- package/package.json +2 -2
|
@@ -30,7 +30,7 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
|
|
|
30
30
|
const isEthSrc = (0, utils_1.isETHAddress)(srcToken);
|
|
31
31
|
const isEthDest = (0, utils_1.isETHAddress)(destToken);
|
|
32
32
|
const exchangeParam = exchangeParams[exchangeParamIndex];
|
|
33
|
-
const { dexFuncHasRecipient, needWrapNative, needUnwrapNative, specialDexFlag, specialDexSupportsInsertFromAmount, swappedAmountNotPresentInExchangeData, sendEthButSupportsInsertFromAmount,
|
|
33
|
+
const { dexFuncHasRecipient, needWrapNative, needUnwrapNative, specialDexFlag, specialDexSupportsInsertFromAmount, swappedAmountNotPresentInExchangeData, sendEthButSupportsInsertFromAmount, } = exchangeParam;
|
|
34
34
|
const isWETHSrc = !!needUnwrapNative && this.dexHelper.config.isWETH(srcToken);
|
|
35
35
|
const isWETHDest = !!needUnwrapNative && this.dexHelper.config.isWETH(destToken);
|
|
36
36
|
const needWrap = needWrapNative && isEthSrc && maybeWethCallData?.deposit;
|
|
@@ -56,11 +56,7 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
|
|
|
56
56
|
? types_1.Flag.DONT_INSERT_FROM_AMOUNT_CHECK_ETH_BALANCE_AFTER_SWAP
|
|
57
57
|
: types_1.Flag.INSERT_FROM_AMOUNT_CHECK_ETH_BALANCE_AFTER_SWAP; // 4 or 7
|
|
58
58
|
}
|
|
59
|
-
else if (!dexFuncHasRecipient ||
|
|
60
|
-
// group fallback redirected to the executor — capture its real output
|
|
61
|
-
// so the group threads it to the route-level forward
|
|
62
|
-
deliversToExecutor ||
|
|
63
|
-
(isEthDest && needUnwrap)) {
|
|
59
|
+
else if (!dexFuncHasRecipient || (isEthDest && needUnwrap)) {
|
|
64
60
|
dexFlag = forcePreventInsertFromAmount
|
|
65
61
|
? types_1.Flag.DONT_INSERT_FROM_AMOUNT_CHECK_SRC_TOKEN_BALANCE_AFTER_SWAP
|
|
66
62
|
: types_1.Flag.INSERT_FROM_AMOUNT_CHECK_SRC_TOKEN_BALANCE_AFTER_SWAP; // 8 or 11
|
|
@@ -109,7 +105,7 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
|
|
|
109
105
|
const swap = priceRoute.bestRoute[routeIndex].swaps[swapIndex];
|
|
110
106
|
const { srcToken, destToken } = swap;
|
|
111
107
|
const exchangeParam = exchangeParams[exchangeParamIndex];
|
|
112
|
-
const { dexFuncHasRecipient, needWrapNative, needUnwrapNative, specialDexFlag, specialDexSupportsInsertFromAmount, swappedAmountNotPresentInExchangeData, sendEthButSupportsInsertFromAmount,
|
|
108
|
+
const { dexFuncHasRecipient, needWrapNative, needUnwrapNative, specialDexFlag, specialDexSupportsInsertFromAmount, swappedAmountNotPresentInExchangeData, sendEthButSupportsInsertFromAmount, } = exchangeParam;
|
|
113
109
|
const isLastSwap = swapIndex === priceRoute.bestRoute[routeIndex].swaps.length - 1;
|
|
114
110
|
const isEthSrc = (0, utils_1.isETHAddress)(srcToken);
|
|
115
111
|
const isEthDest = (0, utils_1.isETHAddress)(destToken);
|
|
@@ -120,7 +116,7 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
|
|
|
120
116
|
(isSpecialDex && !specialDexSupportsInsertFromAmount);
|
|
121
117
|
const needUnwrap = needWrapNative && isEthDest && maybeWethCallData?.withdraw;
|
|
122
118
|
const forceBalanceOfCheck = isLastSwap
|
|
123
|
-
? !dexFuncHasRecipient || needUnwrap
|
|
119
|
+
? !dexFuncHasRecipient || needUnwrap
|
|
124
120
|
: true;
|
|
125
121
|
const needSendEth = isEthSrc && !needWrapNative;
|
|
126
122
|
const needCheckEthBalance = isEthDest && !needWrapNative;
|
|
@@ -261,101 +257,6 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
|
|
|
261
257
|
}
|
|
262
258
|
return swapCallData;
|
|
263
259
|
}
|
|
264
|
-
/**
|
|
265
|
-
* Build a revertable fallback group (Style 2): a special-dex step (0xFF) whose calldata payload is
|
|
266
|
-
* [tryLen(4)][fallbackLen(4)][try-block][fallback-block]. The try-block is the primary exchange's
|
|
267
|
-
* per-swap calldata; the fallback-block is the alternative's, built by substituting the fallback
|
|
268
|
-
* param at this hop and recomputing its flags. Executor01 runs the try-block in a self-call and,
|
|
269
|
-
* on revert, runs the fallback-block from the original pre-group input.
|
|
270
|
-
*/
|
|
271
|
-
buildRevertableGroup(params) {
|
|
272
|
-
const { priceRoute, index, exchangeParams, maybeWethCallData } = params;
|
|
273
|
-
const fallbackParam = exchangeParams[index].fallbackParam;
|
|
274
|
-
// Defensive: only reachable when a fallback is present.
|
|
275
|
-
if (!fallbackParam) {
|
|
276
|
-
return this.buildSingleSwapCallData(params);
|
|
277
|
-
}
|
|
278
|
-
// Mixed wrap-ness on an ETH-dest hop (raw-native primary vs WETH-based
|
|
279
|
-
// fallback or the reverse): final hops are normalized below via the
|
|
280
|
-
// fallback unit's unwrap / appended native send, mid-route hops further down.
|
|
281
|
-
const groupSwap = priceRoute.bestRoute[0].swaps[index];
|
|
282
|
-
const isLastSwapHop = index === priceRoute.bestRoute[0].swaps.length - 1;
|
|
283
|
-
const mixedEthDestWethFallback = (0, utils_1.isETHAddress)(groupSwap.destToken) &&
|
|
284
|
-
!exchangeParams[index].needWrapNative &&
|
|
285
|
-
Boolean(fallbackParam.needWrapNative);
|
|
286
|
-
// try-block: the primary's normal per-swap calldata (approve/wrap/swap, contiguous).
|
|
287
|
-
const tryBlock = this.buildSingleSwapCallData(params);
|
|
288
|
-
// fallback-block: substitute the fallback param at this hop and recompute flags for it.
|
|
289
|
-
const fallbackExchangeParams = exchangeParams.slice();
|
|
290
|
-
fallbackExchangeParams[index] = fallbackParam;
|
|
291
|
-
const fallbackFlags = this.buildFlags(priceRoute, fallbackExchangeParams, maybeWethCallData);
|
|
292
|
-
let fallbackBlock = this.buildSingleSwapCallData({
|
|
293
|
-
...params,
|
|
294
|
-
exchangeParams: fallbackExchangeParams,
|
|
295
|
-
flags: fallbackFlags,
|
|
296
|
-
});
|
|
297
|
-
// Recipient-capable primary (buildByteCode appends no route-level
|
|
298
|
-
// forward) with a fallback whose output stays on the executor: append
|
|
299
|
-
// the executor->Augustus forward inside the fallback block, amount
|
|
300
|
-
// inserted from the threaded fromAmount.
|
|
301
|
-
if (isLastSwapHop &&
|
|
302
|
-
!(0, utils_1.isETHAddress)(priceRoute.destToken) &&
|
|
303
|
-
exchangeParams[index].dexFuncHasRecipient &&
|
|
304
|
-
!fallbackParam.dexFuncHasRecipient) {
|
|
305
|
-
const transferCallData = this.buildTransferCallData(this.erc20Interface.encodeFunctionData('transfer', [
|
|
306
|
-
this.dexHelper.config.data.augustusV6Address,
|
|
307
|
-
priceRoute.destAmount,
|
|
308
|
-
]), priceRoute.destToken);
|
|
309
|
-
fallbackBlock = hexConcat([fallbackBlock, transferCallData]);
|
|
310
|
-
}
|
|
311
|
-
// Final-hop ETH-dest mixed wrap-ness: the raw-native primary delivers to
|
|
312
|
-
// Augustus itself while the WETH-based fallback unwraps onto the executor.
|
|
313
|
-
// Append the native send inside the fallback block (amount = threaded
|
|
314
|
-
// fromAmount); buildByteCode suppresses its route-level send for this shape.
|
|
315
|
-
if (mixedEthDestWethFallback &&
|
|
316
|
-
isLastSwapHop &&
|
|
317
|
-
exchangeParams[index].dexFuncHasRecipient) {
|
|
318
|
-
fallbackBlock = hexConcat([
|
|
319
|
-
fallbackBlock,
|
|
320
|
-
this.buildFinalSpecialFlagCalldata(),
|
|
321
|
-
]);
|
|
322
|
-
}
|
|
323
|
-
// Mid-route ETH-dest mixed wrap-ness: make the fallback block end in the
|
|
324
|
-
// token form the primary threads to the next hop (WETH only when a
|
|
325
|
-
// needWrapNative primary precedes a needWrapNative hop) — unwrap a
|
|
326
|
-
// WETH-holding fallback, wrap a raw-native one.
|
|
327
|
-
if (!isLastSwapHop && (0, utils_1.isETHAddress)(groupSwap.destToken)) {
|
|
328
|
-
const nextParam = exchangeParams[index + 1];
|
|
329
|
-
const unitEndsInWeth = (param) => Boolean(param.needWrapNative) &&
|
|
330
|
-
!(Boolean(param.needWrapNative) &&
|
|
331
|
-
!!maybeWethCallData?.withdraw &&
|
|
332
|
-
(!nextParam || !nextParam.needWrapNative));
|
|
333
|
-
const tryEndsInWeth = unitEndsInWeth(exchangeParams[index]);
|
|
334
|
-
const fallbackEndsInWeth = unitEndsInWeth(fallbackParam);
|
|
335
|
-
if (tryEndsInWeth !== fallbackEndsInWeth) {
|
|
336
|
-
fallbackBlock = hexConcat([
|
|
337
|
-
fallbackBlock,
|
|
338
|
-
fallbackEndsInWeth
|
|
339
|
-
? this.buildUnwrapEthCallData(this.getWETHAddress(fallbackParam), this.erc20Interface.encodeFunctionData('withdraw', [
|
|
340
|
-
groupSwap.swapExchanges[0].destAmount,
|
|
341
|
-
]))
|
|
342
|
-
: this.buildWrapEthCallData(this.getWETHAddress(fallbackParam), this.erc20Interface.encodeFunctionData('deposit'), types_1.Flag.SEND_ETH_EQUAL_TO_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP),
|
|
343
|
-
]);
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
// payload = [tryLen(4)][fallbackLen(4)][try-block][fallback-block]
|
|
347
|
-
const payload = hexConcat([
|
|
348
|
-
hexZeroPad(hexlify(hexDataLength(tryBlock)), 4),
|
|
349
|
-
hexZeroPad(hexlify(hexDataLength(fallbackBlock)), 4),
|
|
350
|
-
tryBlock,
|
|
351
|
-
fallbackBlock,
|
|
352
|
-
]);
|
|
353
|
-
// Standard metadata packing; specialDexFlag = 0xFF marks the group. target/flag unused.
|
|
354
|
-
return this.buildCallData(constants_1.ZEROS_20_BYTES, payload, 0, // fromAmountPos
|
|
355
|
-
0, // destTokenPos
|
|
356
|
-
types_1.SpecialDex.REVERTABLE_FALLBACK_GROUP, types_1.Flag.DONT_INSERT_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP, 0, // toAmountPos
|
|
357
|
-
0);
|
|
358
|
-
}
|
|
359
260
|
buildDexCallData(params) {
|
|
360
261
|
const { priceRoute, exchangeParamIndex, exchangeParams, routeIndex, swapIndex, flag, swapExchangeIndex, } = params;
|
|
361
262
|
const dontCheckBalanceAfterSwap = flag % 3 === 0;
|
|
@@ -395,20 +296,17 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
|
|
|
395
296
|
}
|
|
396
297
|
buildByteCode(priceRoute, exchangeParams, sender, maybeWethCallData) {
|
|
397
298
|
const flags = this.buildFlags(priceRoute, exchangeParams, maybeWethCallData);
|
|
398
|
-
let swapsCalldata = exchangeParams.reduce((acc, ep, index) =>
|
|
399
|
-
|
|
299
|
+
let swapsCalldata = exchangeParams.reduce((acc, ep, index) => hexConcat([
|
|
300
|
+
acc,
|
|
301
|
+
this.buildSingleSwapCallData({
|
|
400
302
|
priceRoute,
|
|
401
303
|
exchangeParams,
|
|
402
304
|
index,
|
|
403
305
|
flags,
|
|
404
306
|
sender,
|
|
405
307
|
maybeWethCallData,
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
? this.buildRevertableGroup(callDataParams)
|
|
409
|
-
: this.buildSingleSwapCallData(callDataParams);
|
|
410
|
-
return hexConcat([acc, stepCallData]);
|
|
411
|
-
}, '0x');
|
|
308
|
+
}),
|
|
309
|
+
]), '0x');
|
|
412
310
|
if (!exchangeParams[exchangeParams.length - 1].dexFuncHasRecipient &&
|
|
413
311
|
!(0, utils_1.isETHAddress)(priceRoute.destToken)) {
|
|
414
312
|
const transferCallData = this.buildTransferCallData(this.erc20Interface.encodeFunctionData('transfer', [
|
|
@@ -417,19 +315,9 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
|
|
|
417
315
|
]), priceRoute.destToken);
|
|
418
316
|
swapsCalldata = hexConcat([swapsCalldata, transferCallData]);
|
|
419
317
|
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
const lastParam = exchangeParams[exchangeParams.length - 1];
|
|
424
|
-
const groupHandlesNativeSend = (0, utils_1.isETHAddress)(priceRoute.destToken) &&
|
|
425
|
-
!!lastParam.fallbackParam &&
|
|
426
|
-
Boolean(lastParam.fallbackParam.needWrapNative) &&
|
|
427
|
-
!lastParam.needWrapNative &&
|
|
428
|
-
lastParam.dexFuncHasRecipient;
|
|
429
|
-
if (!groupHandlesNativeSend &&
|
|
430
|
-
((maybeWethCallData?.withdraw && (0, utils_1.isETHAddress)(priceRoute.destToken)) ||
|
|
431
|
-
(!exchangeParams[exchangeParams.length - 1].dexFuncHasRecipient &&
|
|
432
|
-
(0, utils_1.isETHAddress)(priceRoute.destToken)))) {
|
|
318
|
+
if ((maybeWethCallData?.withdraw && (0, utils_1.isETHAddress)(priceRoute.destToken)) ||
|
|
319
|
+
(!exchangeParams[exchangeParams.length - 1].dexFuncHasRecipient &&
|
|
320
|
+
(0, utils_1.isETHAddress)(priceRoute.destToken))) {
|
|
433
321
|
const finalSpecialFlagCalldata = this.buildFinalSpecialFlagCalldata();
|
|
434
322
|
swapsCalldata = hexConcat([swapsCalldata, finalSpecialFlagCalldata]);
|
|
435
323
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Executor01BytecodeBuilder.js","sourceRoot":"","sources":["../../src/executor/Executor01BytecodeBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Executor01BytecodeBuilder.js","sourceRoot":"","sources":["../../src/executor/Executor01BytecodeBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,28 +64,6 @@ export declare class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder<E
|
|
|
64
64
|
private packVerticalBranchingData;
|
|
65
65
|
private packVerticalBranchingCallData;
|
|
66
66
|
private buildVerticalBranchingCallData;
|
|
67
|
-
/**
|
|
68
|
-
* Where an ETH-dest final-hop branch leaves its output. Everything outside a
|
|
69
|
-
* revertable group (root unwrap/send, threading flags, sibling accounting)
|
|
70
|
-
* is computed from the primary's params, so the fallback block must end in
|
|
71
|
-
* the same place the try block would.
|
|
72
|
-
*/
|
|
73
|
-
private ethDestOutcome;
|
|
74
|
-
/**
|
|
75
|
-
* Wrap an already-assembled per-exchange unit in a revertable fallback group
|
|
76
|
-
* (specialDex 0xFF). The step's calldata payload is [28-byte padding]
|
|
77
|
-
* [tryLen(4)][fallbackLen(4)][try-block][fallback-block]; the try-block is the
|
|
78
|
-
* unit as it would have run inline, the fallback-block is the alternative's
|
|
79
|
-
* unit. On-chain, Executor02 runs the try-block in a self-call and, on revert,
|
|
80
|
-
* runs the fallback-block from the same input.
|
|
81
|
-
*
|
|
82
|
-
* Threading: when the group sits directly in a horizontal sequence
|
|
83
|
-
* (insidePath = false) it must thread the running amount to the next step, so
|
|
84
|
-
* it uses the vertical-branching wrapper's flag/destTokenPos semantics. When
|
|
85
|
-
* it is a member of a split (insidePath = true), the vertical-branching
|
|
86
|
-
* wrapper above it does the threading, so the group skips the balance check.
|
|
87
|
-
*/
|
|
88
|
-
private wrapInRevertableGroup;
|
|
89
67
|
private buildSingleSwapExchangeCallData;
|
|
90
68
|
private appendWrapEthCallData;
|
|
91
69
|
private eachDexOnSwapNeedsWrapNative;
|
|
@@ -352,196 +352,12 @@ class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
|
|
|
352
352
|
const fromAmountPos = hexDataLength(data) - 64 - 28; // 64 (position), 28 (selector padding);
|
|
353
353
|
return this.packVerticalBranchingCallData(data, fromAmountPos, destTokenPos < 0 ? 0 : destTokenPos, flag);
|
|
354
354
|
}
|
|
355
|
-
|
|
356
|
-
* Where an ETH-dest final-hop branch leaves its output. Everything outside a
|
|
357
|
-
* revertable group (root unwrap/send, threading flags, sibling accounting)
|
|
358
|
-
* is computed from the primary's params, so the fallback block must end in
|
|
359
|
-
* the same place the try block would.
|
|
360
|
-
*/
|
|
361
|
-
ethDestOutcome(param, endState,
|
|
362
|
-
// Primary raw-ETH last-hop params are built with recipient = Augustus, so
|
|
363
|
-
// a recipient-capable dex delivers itself. Fallback params are always
|
|
364
|
-
// built with recipient = executor (see getDexCallsParams) — their output
|
|
365
|
-
// stays on the executor no matter what the dex supports.
|
|
366
|
-
deliversViaRecipient) {
|
|
367
|
-
if (endState.sentNative)
|
|
368
|
-
return 'sent';
|
|
369
|
-
if (param.needWrapNative)
|
|
370
|
-
return endState.unwrapped ? 'eth' : 'weth';
|
|
371
|
-
return deliversViaRecipient && param.dexFuncHasRecipient ? 'sent' : 'eth';
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* Wrap an already-assembled per-exchange unit in a revertable fallback group
|
|
375
|
-
* (specialDex 0xFF). The step's calldata payload is [28-byte padding]
|
|
376
|
-
* [tryLen(4)][fallbackLen(4)][try-block][fallback-block]; the try-block is the
|
|
377
|
-
* unit as it would have run inline, the fallback-block is the alternative's
|
|
378
|
-
* unit. On-chain, Executor02 runs the try-block in a self-call and, on revert,
|
|
379
|
-
* runs the fallback-block from the same input.
|
|
380
|
-
*
|
|
381
|
-
* Threading: when the group sits directly in a horizontal sequence
|
|
382
|
-
* (insidePath = false) it must thread the running amount to the next step, so
|
|
383
|
-
* it uses the vertical-branching wrapper's flag/destTokenPos semantics. When
|
|
384
|
-
* it is a member of a split (insidePath = true), the vertical-branching
|
|
385
|
-
* wrapper above it does the threading, so the group skips the balance check.
|
|
386
|
-
*/
|
|
387
|
-
wrapInRevertableGroup(priceRoute, routeIndex, swapIndex, swapExchangeIndex, exchangeParams, exchangeParamIndex, tryBlock, allowToAddWrap, prevBranchWasWrapped, insidePath, wrapAddedInsideTry, tryEndState, maybeWethCallData, applyVerticalBranching) {
|
|
388
|
-
const swap = priceRoute.bestRoute[routeIndex].swaps[swapIndex];
|
|
389
|
-
const swapExchange = swap.swapExchanges[swapExchangeIndex];
|
|
390
|
-
const fallbackParam = exchangeParams[exchangeParamIndex].fallbackParam;
|
|
391
|
-
// fallback-block: substitute the fallback param at this hop and recompute
|
|
392
|
-
// flags for it. Fresh wrap maps: the fallback is an independent alternative
|
|
393
|
-
// whose own wrap/approve must be encoded inside its block.
|
|
394
|
-
const fallbackExchangeParams = exchangeParams.slice();
|
|
395
|
-
fallbackExchangeParams[exchangeParamIndex] = fallbackParam;
|
|
396
|
-
const fallbackFlags = this.buildFlags(priceRoute, fallbackExchangeParams, maybeWethCallData);
|
|
397
|
-
const fallbackEndState = {
|
|
398
|
-
unwrapped: false,
|
|
399
|
-
sentNative: false,
|
|
400
|
-
};
|
|
401
|
-
const fallbackWrapMap = {};
|
|
402
|
-
let fallbackBlock = this.buildSingleSwapExchangeCallData(priceRoute, routeIndex, swapIndex, swapExchangeIndex, fallbackExchangeParams, fallbackFlags, fallbackWrapMap, allowToAddWrap, prevBranchWasWrapped, {}, maybeWethCallData, false, // addMultiSwapMetadata — the path metadata wraps the group, not the block
|
|
403
|
-
applyVerticalBranching, true, // disableRevertableGroup — never nest
|
|
404
|
-
fallbackEndState);
|
|
405
|
-
// Normalize the fallback block's INPUT. When the primary's wrap lives outside
|
|
406
|
-
// the try block (root/shared wrap), it persists after a try revert, so the
|
|
407
|
-
// branch holds its slice as WETH — unlike a try-internal wrap, which rolls
|
|
408
|
-
// back leaving raw ETH (that case the fallback unit already handles by
|
|
409
|
-
// adding its own approve+deposit).
|
|
410
|
-
if ((0, utils_1.isETHAddress)(swap.srcToken) &&
|
|
411
|
-
Boolean(exchangeParams[exchangeParamIndex].needWrapNative) &&
|
|
412
|
-
!wrapAddedInsideTry) {
|
|
413
|
-
if (!fallbackParam.needWrapNative) {
|
|
414
|
-
// WETH in hand, fallback consumes raw ETH: unwrap the slice first (the
|
|
415
|
-
// running amount is inserted at runtime; rolls back with the block).
|
|
416
|
-
fallbackBlock = hexConcat([
|
|
417
|
-
this.buildUnwrapEthCallData(this.getWETHAddress(fallbackParam), this.erc20Interface.encodeFunctionData('withdraw', [
|
|
418
|
-
swapExchange.srcAmount,
|
|
419
|
-
])),
|
|
420
|
-
fallbackBlock,
|
|
421
|
-
]);
|
|
422
|
-
}
|
|
423
|
-
else if (fallbackParam.approveData && !fallbackParam.skipApproval) {
|
|
424
|
-
// WETH in hand, fallback also consumes WETH: no deposit needed, but the
|
|
425
|
-
// unit skipped its approve (it only rides with the deposit branch,
|
|
426
|
-
// which the external wrap suppresses) — prepend it.
|
|
427
|
-
fallbackBlock = hexConcat([
|
|
428
|
-
this.buildApproveCallData(fallbackParam.approveData.target, fallbackParam.approveData.token, fallbackFlags.approves[exchangeParamIndex], fallbackParam.permit2Approval),
|
|
429
|
-
fallbackBlock,
|
|
430
|
-
]);
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
// Raw-native primary + wrap-needing fallback on a native-src hop: no wrap
|
|
434
|
-
// exists on the primary path, and the fallback unit can wrongly skip its
|
|
435
|
-
// own deposit — root-wrap detection runs on the SUBSTITUTED params
|
|
436
|
-
// (doesRouteNeedsRootWrapEth), not the real route. If the unit didn't
|
|
437
|
-
// wrap, prepend the approve+deposit.
|
|
438
|
-
if ((0, utils_1.isETHAddress)(swap.srcToken) &&
|
|
439
|
-
!exchangeParams[exchangeParamIndex].needWrapNative &&
|
|
440
|
-
Boolean(fallbackParam.needWrapNative) &&
|
|
441
|
-
!!maybeWethCallData?.deposit &&
|
|
442
|
-
!fallbackWrapMap[`${routeIndex}_${swapIndex}_${swapExchangeIndex}`]) {
|
|
443
|
-
const approveCallData = fallbackParam.approveData && !fallbackParam.skipApproval
|
|
444
|
-
? this.buildApproveCallData(fallbackParam.approveData.target, fallbackParam.approveData.token, fallbackFlags.approves[exchangeParamIndex], fallbackParam.permit2Approval)
|
|
445
|
-
: '0x';
|
|
446
|
-
fallbackBlock = hexConcat([
|
|
447
|
-
approveCallData,
|
|
448
|
-
this.buildWrapEthCallData(this.getWETHAddress(fallbackParam), this.erc20Interface.encodeFunctionData('deposit'), types_1.Flag.SEND_ETH_EQUAL_TO_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP),
|
|
449
|
-
fallbackBlock,
|
|
450
|
-
]);
|
|
451
|
-
}
|
|
452
|
-
// Normalize the fallback block's OUTPUT on an ETH-dest final hop: the
|
|
453
|
-
// post-group machinery was shaped by the primary, so the fallback must
|
|
454
|
-
// end where the try block would — wrap raw ETH when the try ends in WETH,
|
|
455
|
-
// unwrap a WETH-holding fallback (and send if the try would have)
|
|
456
|
-
// otherwise; already-delivered ('sent') is terminal.
|
|
457
|
-
const isLastSwap = swapIndex === priceRoute.bestRoute[routeIndex].swaps.length - 1;
|
|
458
|
-
if ((0, utils_1.isETHAddress)(swap.destToken) && isLastSwap) {
|
|
459
|
-
const tryOutcome = this.ethDestOutcome(exchangeParams[exchangeParamIndex], tryEndState, true);
|
|
460
|
-
const fallbackOutcome = this.ethDestOutcome(fallbackParam, fallbackEndState, false);
|
|
461
|
-
if (fallbackOutcome !== tryOutcome && fallbackOutcome !== 'sent') {
|
|
462
|
-
if (tryOutcome === 'weth') {
|
|
463
|
-
fallbackBlock = hexConcat([
|
|
464
|
-
fallbackBlock,
|
|
465
|
-
this.buildWrapEthCallData(this.getWETHAddress(fallbackParam), this.erc20Interface.encodeFunctionData('deposit'), types_1.Flag.SEND_ETH_EQUAL_TO_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP),
|
|
466
|
-
]);
|
|
467
|
-
}
|
|
468
|
-
else {
|
|
469
|
-
if (fallbackOutcome === 'weth') {
|
|
470
|
-
fallbackBlock = hexConcat([
|
|
471
|
-
fallbackBlock,
|
|
472
|
-
this.buildUnwrapEthCallData(this.getWETHAddress(fallbackParam), this.erc20Interface.encodeFunctionData('withdraw', [
|
|
473
|
-
swapExchange.destAmount,
|
|
474
|
-
])),
|
|
475
|
-
]);
|
|
476
|
-
}
|
|
477
|
-
if (tryOutcome === 'sent') {
|
|
478
|
-
fallbackBlock = hexConcat([
|
|
479
|
-
fallbackBlock,
|
|
480
|
-
this.buildFinalSpecialFlagCalldata(),
|
|
481
|
-
]);
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
// payload = [padding(28)][tryLen(4)][fallbackLen(4)][try][fallback]
|
|
487
|
-
let payload = hexConcat([
|
|
488
|
-
constants_1.ZEROS_28_BYTES,
|
|
489
|
-
hexZeroPad(hexlify(hexDataLength(tryBlock)), 4),
|
|
490
|
-
hexZeroPad(hexlify(hexDataLength(fallbackBlock)), 4),
|
|
491
|
-
tryBlock,
|
|
492
|
-
fallbackBlock,
|
|
493
|
-
]);
|
|
494
|
-
const flag = insidePath
|
|
495
|
-
? types_1.Flag.DONT_INSERT_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP // 0
|
|
496
|
-
: this.buildVerticalBranchingFlag(priceRoute, swap, exchangeParams, routeIndex, swapIndex);
|
|
497
|
-
// Locate the dest token in the payload for the post-group balance check
|
|
498
|
-
// (append it if absent — trailing bytes after the blocks are ignored on-chain).
|
|
499
|
-
let destTokenPos = 0;
|
|
500
|
-
if (flag % 3 === 2) {
|
|
501
|
-
const destTokenAddr = (0, utils_1.isETHAddress)(swap.destToken)
|
|
502
|
-
? this.dexHelper.config.data.wrappedNativeTokenAddress.toLowerCase()
|
|
503
|
-
: swap.destToken.toLowerCase();
|
|
504
|
-
payload = this.addTokenAddressToCallData(payload, destTokenAddr);
|
|
505
|
-
const destTokenAddrIndex = payload
|
|
506
|
-
.replace('0x', '')
|
|
507
|
-
.indexOf(destTokenAddr.replace('0x', ''));
|
|
508
|
-
destTokenPos = destTokenAddrIndex / 2 - 40;
|
|
509
|
-
if (destTokenPos < 0)
|
|
510
|
-
destTokenPos = 0;
|
|
511
|
-
}
|
|
512
|
-
return solidityPack([
|
|
513
|
-
'bytes20',
|
|
514
|
-
'bytes4',
|
|
515
|
-
'bytes2',
|
|
516
|
-
'bytes2',
|
|
517
|
-
'bytes1',
|
|
518
|
-
'bytes1',
|
|
519
|
-
'bytes2',
|
|
520
|
-
'bytes',
|
|
521
|
-
], [
|
|
522
|
-
constants_1.ZEROS_20_BYTES, // no call target for a group
|
|
523
|
-
hexZeroPad(hexlify(hexDataLength(payload)), 4), // payload length (incl. padding)
|
|
524
|
-
hexZeroPad(hexlify(0), 2), // fromAmountPos (unused by the group branch)
|
|
525
|
-
hexZeroPad(hexlify(destTokenPos), 2), // destTokenPos
|
|
526
|
-
hexZeroPad(hexlify(0), 1), // returnAmountPos (contract forces 0xFF)
|
|
527
|
-
hexZeroPad(hexlify(types_1.SpecialDex.REVERTABLE_FALLBACK_GROUP), 1), // 0xFF
|
|
528
|
-
hexZeroPad(hexlify(flag), 2), // flag (balance-check threading)
|
|
529
|
-
payload,
|
|
530
|
-
]);
|
|
531
|
-
}
|
|
532
|
-
buildSingleSwapExchangeCallData(priceRoute, routeIndex, swapIndex, swapExchangeIndex, exchangeParams, flags, addedWrapToSwapExchangeMap, allowToAddWrap = true, prevBranchWasWrapped = false, unwrapToSwapMap, maybeWethCallData, addMultiSwapMetadata, applyVerticalBranching, disableRevertableGroup = false, endStateOut) {
|
|
355
|
+
buildSingleSwapExchangeCallData(priceRoute, routeIndex, swapIndex, swapExchangeIndex, exchangeParams, flags, addedWrapToSwapExchangeMap, allowToAddWrap = true, prevBranchWasWrapped = false, unwrapToSwapMap, maybeWethCallData, addMultiSwapMetadata, applyVerticalBranching) {
|
|
533
356
|
const isSimpleSwap = priceRoute.bestRoute.length === 1 &&
|
|
534
357
|
priceRoute.bestRoute[0].swaps.length === 1;
|
|
535
358
|
let swapExchangeCallData = '';
|
|
536
359
|
const swap = priceRoute.bestRoute[routeIndex].swaps[swapIndex];
|
|
537
360
|
const swapExchange = swap.swapExchanges[swapExchangeIndex];
|
|
538
|
-
// What this unit appends for ETH-dest endings — a revertable group's
|
|
539
|
-
// fallback block must end in the same state as its try block, so both
|
|
540
|
-
// sides report what they did (see wrapInRevertableGroup).
|
|
541
|
-
const endState = {
|
|
542
|
-
unwrapped: false,
|
|
543
|
-
sentNative: false,
|
|
544
|
-
};
|
|
545
361
|
let exchangeParamIndex = 0;
|
|
546
362
|
let tempExchangeParamIndex = 0;
|
|
547
363
|
priceRoute.bestRoute.map(route => route.swaps.map(curSwap => {
|
|
@@ -652,7 +468,6 @@ class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
|
|
|
652
468
|
this.isLastExchangeWithNeedWrapNative(priceRoute, swap, exchangeParams, exchangeParamIndex);
|
|
653
469
|
if (customWethAddress || needUnwrap) {
|
|
654
470
|
unwrapToSwapMap[swapIndex] = true;
|
|
655
|
-
endState.unwrapped = true;
|
|
656
471
|
withdrawCallData = this.buildUnwrapEthCallData(this.getWETHAddress(curExchangeParam), maybeWethCallData.withdraw.calldata);
|
|
657
472
|
}
|
|
658
473
|
swapExchangeCallData = hexConcat([
|
|
@@ -660,7 +475,6 @@ class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
|
|
|
660
475
|
withdrawCallData,
|
|
661
476
|
]);
|
|
662
477
|
if (isSimpleSwap && (needUnwrap || customWethAddress)) {
|
|
663
|
-
endState.sentNative = true;
|
|
664
478
|
const finalSpecialFlagCalldata = this.buildFinalSpecialFlagCalldata();
|
|
665
479
|
swapExchangeCallData = hexConcat([
|
|
666
480
|
swapExchangeCallData,
|
|
@@ -707,33 +521,12 @@ class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
|
|
|
707
521
|
isLastSwap &&
|
|
708
522
|
// don't need to send eth without unwrapping, handling unwrap and sendEth in the end of root branch
|
|
709
523
|
!this.doesRouteNeedsRootUnwrapEth(priceRoute, exchangeParams)) {
|
|
710
|
-
endState.sentNative = true;
|
|
711
524
|
const finalSpecialFlagCalldata = this.buildFinalSpecialFlagCalldata();
|
|
712
525
|
swapExchangeCallData = hexConcat([
|
|
713
526
|
swapExchangeCallData,
|
|
714
527
|
finalSpecialFlagCalldata,
|
|
715
528
|
]);
|
|
716
529
|
}
|
|
717
|
-
if (endStateOut) {
|
|
718
|
-
endStateOut.unwrapped = endState.unwrapped;
|
|
719
|
-
endStateOut.sentNative = endState.sentNative;
|
|
720
|
-
}
|
|
721
|
-
const fallbackParam = curExchangeParam.fallbackParam;
|
|
722
|
-
if (!disableRevertableGroup &&
|
|
723
|
-
fallbackParam &&
|
|
724
|
-
// Mixed wrap-ness on a MID-ROUTE ETH-dest hop is not normalized (raw ETH
|
|
725
|
-
// as an intermediate threading token is flag-7 territory the group's
|
|
726
|
-
// balance check doesn't model) — run plain. Final-hop mismatches are
|
|
727
|
-
// normalized inside wrapInRevertableGroup (input and output side).
|
|
728
|
-
!((0, utils_1.isETHAddress)(swap.destToken) &&
|
|
729
|
-
!isLastSwap &&
|
|
730
|
-
Boolean(curExchangeParam.needWrapNative) !==
|
|
731
|
-
Boolean(fallbackParam.needWrapNative))) {
|
|
732
|
-
swapExchangeCallData = this.wrapInRevertableGroup(priceRoute, routeIndex, swapIndex, swapExchangeIndex, exchangeParams, exchangeParamIndex, swapExchangeCallData, allowToAddWrap, prevBranchWasWrapped, !!addMultiSwapMetadata,
|
|
733
|
-
// Whether the primary's wrap sits INSIDE the try block (rolls back with
|
|
734
|
-
// it) or outside (root/shared — persists after a try revert).
|
|
735
|
-
!!addedWrapToSwapExchangeMap[`${routeIndex}_${swapIndex}_${swapExchangeIndex}`], endState, maybeWethCallData, applyVerticalBranching);
|
|
736
|
-
}
|
|
737
530
|
if (addMultiSwapMetadata) {
|
|
738
531
|
return this.addMultiSwapMetadata(priceRoute, exchangeParams, swapExchangeCallData, swapExchange.percent, swap, exchangeParamIndex, addedWrapToSwapExchangeMap[`${routeIndex}_${swapIndex}_${swapExchangeIndex}`], addedUnwrapForDexWithNoNeedWrapNative);
|
|
739
532
|
}
|