From 9d608f38babac2c9ce9d8f44815595c09fbf8256 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 2 Dec 2024 21:21:35 +0000 Subject: [PATCH] init --- src/config.ts | 10 ++++++++-- src/modes/interOrderbook.ts | 3 +++ src/modes/intraOrderbook.ts | 3 +++ src/modes/routeProcessor.ts | 3 +++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/config.ts b/src/config.ts index 035bc50f..ba6a715d 100644 --- a/src/config.ts +++ b/src/config.ts @@ -221,11 +221,14 @@ export function getBountyEnsureBytecode( inputToEthPrice: BigNumber, outputToEthPrice: BigNumber, minimumExcepted: BigNumber, + sender: string, ): string { const inputPrice = inputToEthPrice.toHexString().substring(2).padStart(64, "0"); const outputPrice = outputToEthPrice.toHexString().substring(2).padStart(64, "0"); const minimum = minimumExcepted.toHexString().substring(2).padStart(64, "0"); + const msgSender = sender.substring(2).padStart(64, "0").toLowerCase(); // rainlang bytecode: + // :ensure(sender context<0 0>()), // :ensure( // greater-than-or-equal-to( // add( @@ -236,7 +239,7 @@ export function getBountyEnsureBytecode( // ) // \"minimum sender output\" // ); - return `0x0000000000000000000000000000000000000000000000000000000000000004${inputPrice}${outputPrice}${minimum}956d696e696d756d2073656e646572206f757470757400000000000000000000000000000000000000000000000000000000000000000000000000000000003b0100000d06000203100001011000003d12000003100101011000013d120000011000030110000200100001001000002b120000211200001d020000`; + return `0x0000000000000000000000000000000000000000000000000000000000000006${msgSender}8e756e6b6e6f776e2073656e6465720000000000000000000000000000000000${inputPrice}${outputPrice}${minimum}956d696e696d756d2073656e646572206f7574707574000000000000000000000000000000000000000000000000000000000000000000000000000000000047010000100500000110000103100000011000001e1200001d020000011000050110000403100101011000033d12000003100001011000023d1200002b120000211200001d020000`; } /** @@ -259,6 +262,7 @@ export function getWithdrawEnsureBytecode( inputToEthPrice: BigNumber, outputToEthPrice: BigNumber, minimumExcepted: BigNumber, + sender: string, ): string { const bot = botAddress.substring(2).padStart(64, "0"); const input = inputToken.substring(2).padStart(64, "0"); @@ -268,7 +272,9 @@ export function getWithdrawEnsureBytecode( const inputPrice = inputToEthPrice.toHexString().substring(2).padStart(64, "0"); const outputPrice = outputToEthPrice.toHexString().substring(2).padStart(64, "0"); const minimum = minimumExcepted.toHexString().substring(2).padStart(64, "0"); + const msgSender = sender.substring(2).padStart(64, "0").toLowerCase(); // rainlang bytecode: + // :ensure(sender context<0 0>()), // :ensure( // greater-than-or-equal-to( // add( @@ -279,7 +285,7 @@ export function getWithdrawEnsureBytecode( // ) // \"minimumSenderOutput\" // ); - return `0x0000000000000000000000000000000000000000000000000000000000000009${input}${bot}${inputBalance}${inputPrice}${output}${outputBalance}${outputPrice}${minimum}936d696e696d756d53656e6465724f757470757400000000000000000000000000000000000000000000000000000000000000000000000000000000000000530100001307000001100008011000070110000601100005011000010110000411120000471200003d1200000110000301100002011000010110000011120000471200003d1200002b120000211200001d020000`; + return `0x000000000000000000000000000000000000000000000000000000000000000b${msgSender}8e756e6b6e6f776e2073656e6465720000000000000000000000000000000000${input}${bot}${inputBalance}${inputPrice}${output}${outputBalance}${outputPrice}${minimum}936d696e696d756d53656e6465724f75747075740000000000000000000000000000000000000000000000000000000000000000000000000000000000000067010000180700000110000103100000011000001e1200001d0200000110000a011000090110000801100007011000030110000611120000471200003d1200000110000501100004011000030110000211120000471200003d1200002b120000211200001d020000`; } /** diff --git a/src/modes/interOrderbook.ts b/src/modes/interOrderbook.ts index 1577f21e..fa1763d6 100644 --- a/src/modes/interOrderbook.ts +++ b/src/modes/interOrderbook.ts @@ -89,6 +89,7 @@ export async function dryrun({ ethers.utils.parseUnits(inputToEthPrice), ethers.utils.parseUnits(outputToEthPrice), ethers.constants.Zero, + signer.account.address, ), }, signedContext: [], @@ -144,6 +145,7 @@ export async function dryrun({ ethers.utils.parseUnits(inputToEthPrice), ethers.utils.parseUnits(outputToEthPrice), gasCost.mul(headroom).div("100"), + signer.account.address, ); rawtx.data = arb.interface.encodeFunctionData("arb3", [ orderPairObject.orderbook, @@ -163,6 +165,7 @@ export async function dryrun({ ethers.utils.parseUnits(inputToEthPrice), ethers.utils.parseUnits(outputToEthPrice), gasCost.mul(config.gasCoveragePercentage).div("100"), + signer.account.address, ); rawtx.data = arb.interface.encodeFunctionData("arb3", [ orderPairObject.orderbook, diff --git a/src/modes/intraOrderbook.ts b/src/modes/intraOrderbook.ts index acf56665..9c262dbe 100644 --- a/src/modes/intraOrderbook.ts +++ b/src/modes/intraOrderbook.ts @@ -62,6 +62,7 @@ export async function dryrun({ ethers.utils.parseUnits(inputToEthPrice), ethers.utils.parseUnits(outputToEthPrice), ethers.constants.Zero, + signer.account.address, ), }, signedContext: [], @@ -147,6 +148,7 @@ export async function dryrun({ ethers.utils.parseUnits(inputToEthPrice), ethers.utils.parseUnits(outputToEthPrice), gasCost.mul(headroom).div("100"), + signer.account.address, ); withdrawOutputCalldata = obInterface.encodeFunctionData("withdraw2", [ orderPairObject.sellToken, @@ -175,6 +177,7 @@ export async function dryrun({ ethers.utils.parseUnits(inputToEthPrice), ethers.utils.parseUnits(outputToEthPrice), gasCost.mul(config.gasCoveragePercentage).div("100"), + signer.account.address, ); withdrawOutputCalldata = obInterface.encodeFunctionData("withdraw2", [ orderPairObject.sellToken, diff --git a/src/modes/routeProcessor.ts b/src/modes/routeProcessor.ts index 20cd8935..de93eb3d 100644 --- a/src/modes/routeProcessor.ts +++ b/src/modes/routeProcessor.ts @@ -164,6 +164,7 @@ export async function dryrun({ ethers.utils.parseUnits(ethPrice), ethers.constants.Zero, ethers.constants.Zero, + signer.account.address, ), }, signedContext: [], @@ -221,6 +222,7 @@ export async function dryrun({ ethers.utils.parseUnits(ethPrice), ethers.constants.Zero, gasCost.mul(headroom).div("100"), + signer.account.address, ); rawtx.data = arb.interface.encodeFunctionData("arb3", [ orderPairObject.orderbook, @@ -240,6 +242,7 @@ export async function dryrun({ ethers.utils.parseUnits(ethPrice), ethers.constants.Zero, gasCost.mul(config.gasCoveragePercentage).div("100"), + signer.account.address, ); rawtx.data = arb.interface.encodeFunctionData("arb3", [ orderPairObject.orderbook,