Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
rouzwelt committed Dec 28, 2024
1 parent 76b2b17 commit 484390d
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 33 deletions.
12 changes: 6 additions & 6 deletions src/modes/interOrderbook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";

/**
Expand Down Expand Up @@ -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
Expand All @@ -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(
Expand Down
4 changes: 2 additions & 2 deletions src/modes/routeProcessor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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]),
Expand Down Expand Up @@ -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];
Expand Down
9 changes: 2 additions & 7 deletions test/e2e/data.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
6 changes: 3 additions & 3 deletions test/findOpp.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -161,15 +161,15 @@ 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",
},
]);
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(
Expand Down
12 changes: 6 additions & 6 deletions test/mode-interOrderbook.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,15 @@ 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",
},
]);
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(
Expand Down Expand Up @@ -196,15 +196,15 @@ 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",
},
]);
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(
Expand Down Expand Up @@ -287,15 +287,15 @@ 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",
},
]);
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(
Expand Down
14 changes: 7 additions & 7 deletions test/mode-routeProcessor.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down
4 changes: 2 additions & 2 deletions test/processPair.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit 484390d

Please sign in to comment.