From 484390dba02a91321786d9ecab0e196c1ae6bc65 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 28 Dec 2024 19:29:27 +0000 Subject: [PATCH 1/3] init --- src/modes/interOrderbook.ts | 12 ++++++------ src/modes/routeProcessor.ts | 4 ++-- test/e2e/data.js | 9 ++------- test/findOpp.test.js | 6 +++--- test/mode-interOrderbook.test.js | 12 ++++++------ test/mode-routeProcessor.test.js | 14 +++++++------- test/processPair.test.js | 4 ++-- 7 files changed, 28 insertions(+), 33 deletions(-) diff --git a/src/modes/interOrderbook.ts b/src/modes/interOrderbook.ts index e2368370..db3fa128 100644 --- a/src/modes/interOrderbook.ts +++ b/src/modes/interOrderbook.ts @@ -3,7 +3,7 @@ import { BaseError, PublicClient } from "viem"; import { getBountyEnsureBytecode } from "../config"; import { BigNumber, Contract, ethers } from "ethers"; import { containsNodeError, errorSnapshot } from "../error"; -import { estimateProfit, scale18To, withBigintSerializer } from "../utils"; +import { estimateProfit, ONE18, scale18To, withBigintSerializer } from "../utils"; import { BotConfig, BundledOrders, ViemClient, DryrunResult, SpanAttrs } from "../types"; /** @@ -45,11 +45,11 @@ export async function dryrun({ const opposingMaxInput = orderPairObject.takeOrders[0].quote!.ratio.isZero() ? ethers.constants.MaxUint256 : scale18To( - maximumInputFixed - .mul(orderPairObject.takeOrders[0].quote!.ratio) - .div(`1${"0".repeat(18)}`), + maximumInputFixed.mul(orderPairObject.takeOrders[0].quote!.ratio).div(ONE18), orderPairObject.buyTokenDecimals, - ); + ) + .mul(110) + .div(100); const opposingMaxIORatio = orderPairObject.takeOrders[0].quote!.ratio.isZero() ? ethers.constants.MaxUint256 @@ -70,7 +70,7 @@ export async function dryrun({ ]); const takeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput, + maximumInput: maximumInput.mul(110).div(100), // +10% headroom maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: ethers.utils.defaultAbiCoder.encode( diff --git a/src/modes/routeProcessor.ts b/src/modes/routeProcessor.ts index 11af85a4..0cc51e8d 100644 --- a/src/modes/routeProcessor.ts +++ b/src/modes/routeProcessor.ts @@ -135,7 +135,7 @@ export async function dryrun({ const takeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput, + maximumInput: maximumInput.mul(110).div(100), // +10% headroom maximumIORatio: config.maxRatio ? ethers.constants.MaxUint256 : price, orders, data: ethers.utils.defaultAbiCoder.encode(["bytes"], [rpParams.routeCode]), @@ -469,7 +469,7 @@ export async function findOppWithRetries({ // ie its maxInput is the greatest const prom = allPromises[i]; if (prom.status === "fulfilled") { - if (!choice || choice.maximumInput!.lt(prom.value.value!.maximumInput!)) { + if (!choice || choice.estimatedProfit.lt(prom.value.value!.estimatedProfit!)) { // record the attributes of the choosing one for (const attrKey in prom.value.spanAttributes) { spanAttributes[attrKey] = prom.value.spanAttributes[attrKey]; diff --git a/test/e2e/data.js b/test/e2e/data.js index 8deebba9..c088bb7a 100644 --- a/test/e2e/data.js +++ b/test/e2e/data.js @@ -82,13 +82,8 @@ module.exports = [ "0x51cD71ec61487A3359993922A5BBac294934A628", "0x2e574D0802F433E71F7dC91650aB2C23aDeb0D81", ], - [ - LiquidityProviders.Enosys, - LiquidityProviders.BlazeSwap, - LiquidityProviders.SparkDexV2, - LiquidityProviders.SparkDexV3, - ], - ["1", "100", "100", "100"], + [LiquidityProviders.Enosys, LiquidityProviders.SparkDexV2, LiquidityProviders.SparkDexV3], + ["1", "100", "100"], ], [ ChainId.ETHEREUM, diff --git a/test/findOpp.test.js b/test/findOpp.test.js index 27e14227..1eb7dd11 100644 --- a/test/findOpp.test.js +++ b/test/findOpp.test.js @@ -75,7 +75,7 @@ describe("Test find opp", async function () { }); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -161,7 +161,7 @@ describe("Test find opp", async function () { const encodedFN = obInterface.encodeFunctionData("takeOrders2", [ { minimumInput: ethers.constants.One, - maximumInput: opposingMaxInput, + maximumInput: opposingMaxInput.mul(110).div(100), maximumIORatio: opposingMaxIORatio, orders: opposingOrderPairObject.takeOrders.map((v) => v.takeOrder), data: "0x", @@ -169,7 +169,7 @@ describe("Test find opp", async function () { ]); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: ethers.utils.defaultAbiCoder.encode( diff --git a/test/mode-interOrderbook.test.js b/test/mode-interOrderbook.test.js index 24ac4a2d..06cc7959 100644 --- a/test/mode-interOrderbook.test.js +++ b/test/mode-interOrderbook.test.js @@ -61,7 +61,7 @@ describe("Test inter-orderbook dryrun", async function () { const encodedFN = obInterface.encodeFunctionData("takeOrders2", [ { minimumInput: ethers.constants.One, - maximumInput: opposingMaxInput, + maximumInput: opposingMaxInput.mul(110).div(100), maximumIORatio: opposingMaxIORatio, orders: opposingOrderPairObject.takeOrders.map((v) => v.takeOrder), data: "0x", @@ -69,7 +69,7 @@ describe("Test inter-orderbook dryrun", async function () { ]); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: ethers.utils.defaultAbiCoder.encode( @@ -196,7 +196,7 @@ describe("Test inter-orderbook find opp", async function () { const encodedFN = obInterface.encodeFunctionData("takeOrders2", [ { minimumInput: ethers.constants.One, - maximumInput: opposingMaxInput, + maximumInput: opposingMaxInput.mul(110).div(100), maximumIORatio: opposingMaxIORatio, orders: opposingOrderPairObject.takeOrders.map((v) => v.takeOrder), data: "0x", @@ -204,7 +204,7 @@ describe("Test inter-orderbook find opp", async function () { ]); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: ethers.utils.defaultAbiCoder.encode( @@ -287,7 +287,7 @@ describe("Test inter-orderbook find opp", async function () { const encodedFN = obInterface.encodeFunctionData("takeOrders2", [ { minimumInput: ethers.constants.One, - maximumInput: opposingMaxInput, + maximumInput: opposingMaxInput.mul(110).div(100), maximumIORatio: opposingMaxIORatio, orders: opposingOrderPairObject.takeOrders.map((v) => v.takeOrder), data: "0x", @@ -295,7 +295,7 @@ describe("Test inter-orderbook find opp", async function () { ]); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: ethers.utils.defaultAbiCoder.encode( diff --git a/test/mode-routeProcessor.test.js b/test/mode-routeProcessor.test.js index 1dbdce30..306cf88e 100644 --- a/test/mode-routeProcessor.test.js +++ b/test/mode-routeProcessor.test.js @@ -73,7 +73,7 @@ describe("Test route processor dryrun", async function () { }); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -190,7 +190,7 @@ describe("Test route processor dryrun", async function () { } catch (error) { const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -274,7 +274,7 @@ describe("Test route processor find opp", async function () { }); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -357,7 +357,7 @@ describe("Test route processor find opp", async function () { }); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: ethers.utils.parseUnits("9999999.701976776123046875"), + maximumInput: ethers.utils.parseUnits("9999999.701976776123046875").mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -440,7 +440,7 @@ describe("Test route processor find opp", async function () { } catch (error) { const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -555,7 +555,7 @@ describe("Test find opp with retries", async function () { }); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [ orderPairObject.takeOrders[0].takeOrder, @@ -638,7 +638,7 @@ describe("Test find opp with retries", async function () { } catch (error) { const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, diff --git a/test/processPair.test.js b/test/processPair.test.js index 952c46a9..3d1cd146 100644 --- a/test/processPair.test.js +++ b/test/processPair.test.js @@ -512,7 +512,7 @@ describe("Test process pair", async function () { } catch (error) { const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -706,7 +706,7 @@ describe("Test process pair", async function () { } catch (error) { const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance, + maximumInput: vaultBalance.mul(110).div(100), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, From 8e4e124f6f4839330ac43ef3603703763024518c Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 28 Dec 2024 19:31:47 +0000 Subject: [PATCH 2/3] fix --- src/modes/routeProcessor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modes/routeProcessor.ts b/src/modes/routeProcessor.ts index 0cc51e8d..e85bd3eb 100644 --- a/src/modes/routeProcessor.ts +++ b/src/modes/routeProcessor.ts @@ -469,7 +469,7 @@ export async function findOppWithRetries({ // ie its maxInput is the greatest const prom = allPromises[i]; if (prom.status === "fulfilled") { - if (!choice || choice.estimatedProfit.lt(prom.value.value!.estimatedProfit!)) { + if (!choice || choice.maximumInput!.lt(prom.value.value!.maximumInput!)) { // record the attributes of the choosing one for (const attrKey in prom.value.spanAttributes) { spanAttributes[attrKey] = prom.value.spanAttributes[attrKey]; From d4119cfe5b6459d8eb0c6595bf5b822669644369 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 31 Dec 2024 05:07:55 +0000 Subject: [PATCH 3/3] update --- src/modes/interOrderbook.ts | 6 ++---- src/modes/routeProcessor.ts | 5 ++++- test/findOpp.test.js | 6 +++--- test/mode-interOrderbook.test.js | 12 ++++++------ test/mode-routeProcessor.test.js | 14 +++++++------- test/processPair.test.js | 4 ++-- 6 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/modes/interOrderbook.ts b/src/modes/interOrderbook.ts index db3fa128..68239c97 100644 --- a/src/modes/interOrderbook.ts +++ b/src/modes/interOrderbook.ts @@ -47,9 +47,7 @@ export async function dryrun({ : scale18To( maximumInputFixed.mul(orderPairObject.takeOrders[0].quote!.ratio).div(ONE18), orderPairObject.buyTokenDecimals, - ) - .mul(110) - .div(100); + ); const opposingMaxIORatio = orderPairObject.takeOrders[0].quote!.ratio.isZero() ? ethers.constants.MaxUint256 @@ -70,7 +68,7 @@ export async function dryrun({ ]); const takeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: maximumInput.mul(110).div(100), // +10% headroom + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: ethers.utils.defaultAbiCoder.encode( diff --git a/src/modes/routeProcessor.ts b/src/modes/routeProcessor.ts index e85bd3eb..1b780683 100644 --- a/src/modes/routeProcessor.ts +++ b/src/modes/routeProcessor.ts @@ -62,6 +62,9 @@ export async function dryrun({ spanAttributes, }; + // determines if amount is partial derived from binary search or not + const isPartial = !orderPairObject.takeOrders[0].quote!.maxOutput.eq(maximumInputFixed); + const maximumInput = scale18To(maximumInputFixed, orderPairObject.sellTokenDecimals); spanAttributes["amountIn"] = ethers.utils.formatUnits(maximumInputFixed); @@ -135,7 +138,7 @@ export async function dryrun({ const takeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: maximumInput.mul(110).div(100), // +10% headroom + maximumInput: isPartial ? maximumInput : ethers.constants.MaxUint256, maximumIORatio: config.maxRatio ? ethers.constants.MaxUint256 : price, orders, data: ethers.utils.defaultAbiCoder.encode(["bytes"], [rpParams.routeCode]), diff --git a/test/findOpp.test.js b/test/findOpp.test.js index 1eb7dd11..c03f5ca5 100644 --- a/test/findOpp.test.js +++ b/test/findOpp.test.js @@ -75,7 +75,7 @@ describe("Test find opp", async function () { }); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -161,7 +161,7 @@ describe("Test find opp", async function () { const encodedFN = obInterface.encodeFunctionData("takeOrders2", [ { minimumInput: ethers.constants.One, - maximumInput: opposingMaxInput.mul(110).div(100), + maximumInput: opposingMaxInput, maximumIORatio: opposingMaxIORatio, orders: opposingOrderPairObject.takeOrders.map((v) => v.takeOrder), data: "0x", @@ -169,7 +169,7 @@ describe("Test find opp", async function () { ]); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: ethers.utils.defaultAbiCoder.encode( diff --git a/test/mode-interOrderbook.test.js b/test/mode-interOrderbook.test.js index 06cc7959..10925f23 100644 --- a/test/mode-interOrderbook.test.js +++ b/test/mode-interOrderbook.test.js @@ -61,7 +61,7 @@ describe("Test inter-orderbook dryrun", async function () { const encodedFN = obInterface.encodeFunctionData("takeOrders2", [ { minimumInput: ethers.constants.One, - maximumInput: opposingMaxInput.mul(110).div(100), + maximumInput: opposingMaxInput, maximumIORatio: opposingMaxIORatio, orders: opposingOrderPairObject.takeOrders.map((v) => v.takeOrder), data: "0x", @@ -69,7 +69,7 @@ describe("Test inter-orderbook dryrun", async function () { ]); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: ethers.utils.defaultAbiCoder.encode( @@ -196,7 +196,7 @@ describe("Test inter-orderbook find opp", async function () { const encodedFN = obInterface.encodeFunctionData("takeOrders2", [ { minimumInput: ethers.constants.One, - maximumInput: opposingMaxInput.mul(110).div(100), + maximumInput: opposingMaxInput, maximumIORatio: opposingMaxIORatio, orders: opposingOrderPairObject.takeOrders.map((v) => v.takeOrder), data: "0x", @@ -204,7 +204,7 @@ describe("Test inter-orderbook find opp", async function () { ]); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: ethers.utils.defaultAbiCoder.encode( @@ -287,7 +287,7 @@ describe("Test inter-orderbook find opp", async function () { const encodedFN = obInterface.encodeFunctionData("takeOrders2", [ { minimumInput: ethers.constants.One, - maximumInput: opposingMaxInput.mul(110).div(100), + maximumInput: opposingMaxInput, maximumIORatio: opposingMaxIORatio, orders: opposingOrderPairObject.takeOrders.map((v) => v.takeOrder), data: "0x", @@ -295,7 +295,7 @@ describe("Test inter-orderbook find opp", async function () { ]); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: ethers.utils.defaultAbiCoder.encode( diff --git a/test/mode-routeProcessor.test.js b/test/mode-routeProcessor.test.js index 306cf88e..be30c5d8 100644 --- a/test/mode-routeProcessor.test.js +++ b/test/mode-routeProcessor.test.js @@ -73,7 +73,7 @@ describe("Test route processor dryrun", async function () { }); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -190,7 +190,7 @@ describe("Test route processor dryrun", async function () { } catch (error) { const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -274,7 +274,7 @@ describe("Test route processor find opp", async function () { }); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -357,7 +357,7 @@ describe("Test route processor find opp", async function () { }); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: ethers.utils.parseUnits("9999999.701976776123046875").mul(110).div(100), + maximumInput: ethers.utils.parseUnits("9999999.701976776123046875"), maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -440,7 +440,7 @@ describe("Test route processor find opp", async function () { } catch (error) { const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -555,7 +555,7 @@ describe("Test find opp with retries", async function () { }); const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [ orderPairObject.takeOrders[0].takeOrder, @@ -638,7 +638,7 @@ describe("Test find opp with retries", async function () { } catch (error) { const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, diff --git a/test/processPair.test.js b/test/processPair.test.js index 3d1cd146..a0da30e2 100644 --- a/test/processPair.test.js +++ b/test/processPair.test.js @@ -512,7 +512,7 @@ describe("Test process pair", async function () { } catch (error) { const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData, @@ -706,7 +706,7 @@ describe("Test process pair", async function () { } catch (error) { const expectedTakeOrdersConfigStruct = { minimumInput: ethers.constants.One, - maximumInput: vaultBalance.mul(110).div(100), + maximumInput: ethers.constants.MaxUint256, maximumIORatio: ethers.constants.MaxUint256, orders: [orderPairObject.takeOrders[0].takeOrder], data: expectedRouteData,