From 484390dba02a91321786d9ecab0e196c1ae6bc65 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 28 Dec 2024 19:29:27 +0000 Subject: [PATCH] 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,