diff --git a/core/src/asset-strategies/AaveV3DepositStrategy.ts b/core/src/asset-strategies/AaveV3DepositStrategy.ts index b9177dc..bce3c67 100644 --- a/core/src/asset-strategies/AaveV3DepositStrategy.ts +++ b/core/src/asset-strategies/AaveV3DepositStrategy.ts @@ -8,7 +8,7 @@ import { getMagicOffsets } from "core/src/utils/get-magic-offset"; import { IERC20, IPool } from "core/src/abis"; import { FRACTION_MULTIPLIER, - MAGIC_REPLACER_0, + MAGIC_REPLACERS, } from "core/src/utils/get-magic-offset"; import { FetchPriceDataParams, @@ -91,9 +91,9 @@ export class AaveV3DepositStrategy extends InterfaceStrategy { getMagicOffsets({ data: IERC20.encodeFunctionData("approve", [ poolAddress, - MAGIC_REPLACER_0, + MAGIC_REPLACERS[0], ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ @@ -110,8 +110,8 @@ export class AaveV3DepositStrategy extends InterfaceStrategy { }); const { offsets: balanceOfToOffsets } = getMagicOffsets({ - data: IERC20.encodeFunctionResult("balanceOf", [MAGIC_REPLACER_0]), - magicReplacers: [MAGIC_REPLACER_0], + data: IERC20.encodeFunctionResult("balanceOf", [MAGIC_REPLACERS[0]]), + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ @@ -133,11 +133,11 @@ export class AaveV3DepositStrategy extends InterfaceStrategy { getMagicOffsets({ data: IPool.encodeFunctionData("supply", [ linkedAsset.address, // asset - MAGIC_REPLACER_0, // amount + MAGIC_REPLACERS[0], // amount walletAddress, // onBehalfOf 0, // referralCode ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ @@ -202,15 +202,15 @@ export class AaveV3DepositStrategy extends InterfaceStrategy { getMagicOffsets({ data: IPool.encodeFunctionData("withdraw", [ linkedAsset.address, // asset - MAGIC_REPLACER_0, // _shares + MAGIC_REPLACERS[0], // _shares walletAddress, // to ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); const { offsets: withdrawToOffsets } = getMagicOffsets({ - data: IPool.encodeFunctionResult("withdraw", [MAGIC_REPLACER_0]), - magicReplacers: [MAGIC_REPLACER_0], + data: IPool.encodeFunctionResult("withdraw", [MAGIC_REPLACERS[0]]), + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ diff --git a/core/src/asset-strategies/BalancerDepositStrategy.ts b/core/src/asset-strategies/BalancerDepositStrategy.ts index 903f787..70996b6 100644 --- a/core/src/asset-strategies/BalancerDepositStrategy.ts +++ b/core/src/asset-strategies/BalancerDepositStrategy.ts @@ -10,14 +10,11 @@ import { getPrice, } from "../transaction/asset-type-strategies-helpers"; import { + FRACTION_MULTIPLIER, MAGIC_REPLACERS, getMagicOffsets, } from "core/src/utils/get-magic-offset"; import { IComposableStablePool, IERC20, IVault } from "core/src/abis"; -import { - FRACTION_MULTIPLIER, - MAGIC_REPLACER_0, -} from "core/src/utils/get-magic-offset"; import { FetchPriceDataParams, GetPriceParams, @@ -273,9 +270,9 @@ export class BalancerDepositStrategy extends InterfaceStrategy { getMagicOffsets({ data: IERC20.encodeFunctionData("approve", [ vaultAddress, - MAGIC_REPLACER_0, + MAGIC_REPLACERS[0], ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ stepAddress: linkedAsset.address, @@ -294,8 +291,8 @@ export class BalancerDepositStrategy extends InterfaceStrategy { } const { offsets: balanceOfToOffsets } = getMagicOffsets({ - data: IERC20.encodeFunctionResult("balanceOf", [MAGIC_REPLACER_0]), - magicReplacers: [MAGIC_REPLACER_0], + data: IERC20.encodeFunctionResult("balanceOf", [MAGIC_REPLACERS[0]]), + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ stepAddress: asset.address, @@ -447,8 +444,8 @@ export class BalancerDepositStrategy extends InterfaceStrategy { }); const { offsets: balanceOfToOffsets } = getMagicOffsets({ - data: IERC20.encodeFunctionResult("balanceOf", [MAGIC_REPLACER_0]), - magicReplacers: [MAGIC_REPLACER_0], + data: IERC20.encodeFunctionResult("balanceOf", [MAGIC_REPLACERS[0]]), + magicReplacers: [MAGIC_REPLACERS[0]], }); asset.linkedAssets.map((la, i) => { @@ -511,7 +508,7 @@ export class BalancerDepositStrategy extends InterfaceStrategy { false, // fromInternalBalance ], ]), - magicReplacers: [MAGIC_REPLACERS[0]], // Each replacer appear once in amounts and once in userData. + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ diff --git a/core/src/asset-strategies/BeefyDepositStrategy.ts b/core/src/asset-strategies/BeefyDepositStrategy.ts index d5e72aa..dedc7e4 100644 --- a/core/src/asset-strategies/BeefyDepositStrategy.ts +++ b/core/src/asset-strategies/BeefyDepositStrategy.ts @@ -10,7 +10,7 @@ import { getMagicOffsets } from "core/src/utils/get-magic-offset"; import { IBeefyVaultV6, IERC20 } from "core/src/abis"; import { FRACTION_MULTIPLIER, - MAGIC_REPLACER_0, + MAGIC_REPLACERS, } from "core/src/utils/get-magic-offset"; import { FetchPriceDataParams, @@ -108,9 +108,9 @@ export class BeefyDepositStrategy extends InterfaceStrategy { getMagicOffsets({ data: IERC20.encodeFunctionData("approve", [ asset.address, - MAGIC_REPLACER_0, + MAGIC_REPLACERS[0], ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ @@ -127,8 +127,8 @@ export class BeefyDepositStrategy extends InterfaceStrategy { }); const { offsets: balanceOfToOffsets } = getMagicOffsets({ - data: IERC20.encodeFunctionResult("balanceOf", [MAGIC_REPLACER_0]), - magicReplacers: [MAGIC_REPLACER_0], + data: IERC20.encodeFunctionResult("balanceOf", [MAGIC_REPLACERS[0]]), + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ @@ -149,9 +149,9 @@ export class BeefyDepositStrategy extends InterfaceStrategy { const { data: depositEncodedCall, offsets: depositFromOffsets } = getMagicOffsets({ data: IBeefyVaultV6.encodeFunctionData("deposit", [ - MAGIC_REPLACER_0, // _amount + MAGIC_REPLACERS[0], // _amount ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ @@ -216,8 +216,8 @@ export class BeefyDepositStrategy extends InterfaceStrategy { }); const { offsets: balanceOfToOffsets } = getMagicOffsets({ - data: IERC20.encodeFunctionResult("balanceOf", [MAGIC_REPLACER_0]), - magicReplacers: [MAGIC_REPLACER_0], + data: IERC20.encodeFunctionResult("balanceOf", [MAGIC_REPLACERS[0]]), + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ @@ -238,9 +238,9 @@ export class BeefyDepositStrategy extends InterfaceStrategy { const { data: withdrawEncodedCall, offsets: withdrawFromOffsets } = getMagicOffsets({ data: IBeefyVaultV6.encodeFunctionData("withdraw", [ - MAGIC_REPLACER_0, // _shares + MAGIC_REPLACERS[0], // _shares ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ diff --git a/core/src/asset-strategies/GammaDepositStrategy.ts b/core/src/asset-strategies/GammaDepositStrategy.ts index cc3af67..ce2cbf9 100644 --- a/core/src/asset-strategies/GammaDepositStrategy.ts +++ b/core/src/asset-strategies/GammaDepositStrategy.ts @@ -20,8 +20,7 @@ import { } from "core/src/abis"; import { FRACTION_MULTIPLIER, - MAGIC_REPLACER_0, - MAGIC_REPLACER_1, + MAGIC_REPLACERS, } from "core/src/utils/get-magic-offset"; import { loadConfig } from "../config/load-config"; import { @@ -186,18 +185,18 @@ export class GammaDepositStrategy extends InterfaceStrategy { } = getMagicOffsets({ data: GammaRatiosCalculator.encodeFunctionData("calculateRatios", [ [linkedAssetAddresses[0], linkedAssetAddresses[1]], - [MAGIC_REPLACER_0, MAGIC_REPLACER_1], + [MAGIC_REPLACERS[0], MAGIC_REPLACERS[1]], asset.address, hypervisorRouterAddress, // hypervisorRouterAddress ]), - magicReplacers: [MAGIC_REPLACER_0, MAGIC_REPLACER_1], + magicReplacers: [MAGIC_REPLACERS[0], MAGIC_REPLACERS[1]], }); const { offsets: calculateRatiosToOffsets } = getMagicOffsets({ data: GammaRatiosCalculator.encodeFunctionResult("calculateRatios", [ - MAGIC_REPLACER_0, - MAGIC_REPLACER_1, + MAGIC_REPLACERS[0], + MAGIC_REPLACERS[1], ]), - magicReplacers: [MAGIC_REPLACER_0, MAGIC_REPLACER_1], + magicReplacers: [MAGIC_REPLACERS[0], MAGIC_REPLACERS[1]], }); routerOperation.steps.push({ @@ -238,9 +237,9 @@ export class GammaDepositStrategy extends InterfaceStrategy { getMagicOffsets({ data: IERC20.encodeFunctionData("approve", [ asset.address, - MAGIC_REPLACER_0, + MAGIC_REPLACERS[0], ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ @@ -260,20 +259,20 @@ export class GammaDepositStrategy extends InterfaceStrategy { const { data: depositEncodedCall, offsets: depositFromOffsets } = getMagicOffsets({ data: IHypervisorRouter.encodeFunctionData("deposit", [ - MAGIC_REPLACER_0, - MAGIC_REPLACER_1, + MAGIC_REPLACERS[0], + MAGIC_REPLACERS[1], walletAddress, asset.address, [0, 0, 0, 0], // minIn ]), - magicReplacers: [MAGIC_REPLACER_0, MAGIC_REPLACER_1], + magicReplacers: [MAGIC_REPLACERS[0], MAGIC_REPLACERS[1]], }); const { offsets: depositToOffsets } = getMagicOffsets({ data: IHypervisorRouter.encodeFunctionResult("deposit", [ - MAGIC_REPLACER_0, + MAGIC_REPLACERS[0], ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); routerOperation.steps.push({ @@ -345,20 +344,20 @@ export class GammaDepositStrategy extends InterfaceStrategy { const { data: withdrawEncodedCall, offsets: withdrawFromOffsets } = getMagicOffsets({ data: IHypervisor.encodeFunctionData("withdraw", [ - MAGIC_REPLACER_0, + MAGIC_REPLACERS[0], walletAddress, walletAddress, [0, 0, 0, 0], // minAmounts ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); const { offsets: withdrawToOffsets } = getMagicOffsets({ data: IHypervisor.encodeFunctionResult("withdraw", [ - MAGIC_REPLACER_0, - MAGIC_REPLACER_1, + MAGIC_REPLACERS[0], + MAGIC_REPLACERS[1], ]), - magicReplacers: [MAGIC_REPLACER_0, MAGIC_REPLACER_1], + magicReplacers: [MAGIC_REPLACERS[0], MAGIC_REPLACERS[1]], }); routerOperation.steps.push({ diff --git a/core/src/path/exchanges.ts b/core/src/path/exchanges.ts index 640cf02..616dd8b 100644 --- a/core/src/path/exchanges.ts +++ b/core/src/path/exchanges.ts @@ -4,7 +4,7 @@ import { IERC20, IParaswap, ZeroXERC20 } from "../abis"; import { Provider } from "ethers"; import { FRACTION_MULTIPLIER, - MAGIC_REPLACER_0, + MAGIC_REPLACERS, getMagicOffsets, } from "../utils/get-magic-offset"; @@ -67,9 +67,9 @@ export class Paraswap extends Exchange { getMagicOffsets({ data: IERC20.encodeFunctionData("approve", [ path.params.approveAddress, - MAGIC_REPLACER_0, + MAGIC_REPLACERS[0], ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); output.steps.push({ @@ -104,7 +104,7 @@ export class Paraswap extends Exchange { data: IParaswap.encodeFunctionData("megaSwap", [ [ path.fromToken, // fromToken - MAGIC_REPLACER_0, // fromAmount + MAGIC_REPLACERS[0], // fromAmount 1, // toAmount (originally decodedData.args[0].toAmount) (minAmountOut) BigInt( "115792089237316195423570985008687907853269984665640564039457584007913129639935" @@ -118,15 +118,15 @@ export class Paraswap extends Exchange { decodedData.args[0].uuid, // uuid ], ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); swapEncodedCall = data; swapFromOffset = fromOffsets[0]; const { offsets: toOffsets } = getMagicOffsets({ - data: IParaswap.encodeFunctionResult("megaSwap", [MAGIC_REPLACER_0]), - magicReplacers: [MAGIC_REPLACER_0], + data: IParaswap.encodeFunctionResult("megaSwap", [MAGIC_REPLACERS[0]]), + magicReplacers: [MAGIC_REPLACERS[0]], }); swapToOffset = toOffsets[0]; @@ -135,7 +135,7 @@ export class Paraswap extends Exchange { data: IParaswap.encodeFunctionData("multiSwap", [ [ path.fromToken, // fromToken - MAGIC_REPLACER_0, // fromAmount + MAGIC_REPLACERS[0], // fromAmount 1, // toAmount (originally decodedData.args[0].toAmount) (minAmountOut) BigInt( "115792089237316195423570985008687907853269984665640564039457584007913129639935" @@ -149,15 +149,15 @@ export class Paraswap extends Exchange { decodedData.args[0].uuid, // uuid ], ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); swapEncodedCall = data; swapFromOffset = fromOffsets[0]; const { offsets: toOffsets } = getMagicOffsets({ - data: IParaswap.encodeFunctionResult("multiSwap", [MAGIC_REPLACER_0]), - magicReplacers: [MAGIC_REPLACER_0], + data: IParaswap.encodeFunctionResult("multiSwap", [MAGIC_REPLACERS[0]]), + magicReplacers: [MAGIC_REPLACERS[0]], }); swapToOffset = toOffsets[0]; @@ -238,9 +238,9 @@ export class ZeroX extends Exchange { getMagicOffsets({ data: IERC20.encodeFunctionData("approve", [ path.params.approveAddress, - MAGIC_REPLACER_0, + MAGIC_REPLACERS[0], ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); output.steps.push({ @@ -266,19 +266,19 @@ export class ZeroX extends Exchange { data: ZeroXERC20.encodeFunctionData("transformERC20", [ path.fromToken, // inputToken path.toToken, // outputToken - MAGIC_REPLACER_0, // inputTokenAmount + MAGIC_REPLACERS[0], // inputTokenAmount 1, // minOutputTokenAmount decodedTransformERC20[4], // transformations ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], } ); const { offsets: swapToOffsets } = getMagicOffsets({ data: ZeroXERC20.encodeFunctionResult("transformERC20", [ - MAGIC_REPLACER_0, + MAGIC_REPLACERS[0], ]), - magicReplacers: [MAGIC_REPLACER_0], + magicReplacers: [MAGIC_REPLACERS[0]], }); output.steps.push({ diff --git a/core/src/utils/get-magic-offset.ts b/core/src/utils/get-magic-offset.ts index 5197227..ea56a17 100644 --- a/core/src/utils/get-magic-offset.ts +++ b/core/src/utils/get-magic-offset.ts @@ -30,10 +30,6 @@ export function getMagicOffsets({ }; } -export const MAGIC_REPLACER_0 = - "0x22e876a8f23cf658879db6745b42ab3e944e526ad8e0eb1cad27a4cac1d0621f"; -export const MAGIC_REPLACER_1 = - "0xefda6e4e83cdb7f85cc1224007eaec8516b2c28011282b93b03063709a6e641a"; export const MAGIC_REPLACERS = [ "0x7fa9b53d120de9cd66856522bcf6d4a7797019996b607a7c9da51787beed38d1", "0x7f797936f1e9ca0b2ab9736276d6a755468ef28a6cefe78c0c0c3b1903f97a5f",