Merge branch 'main' into encoding/tnl/fix-ekubo-grouping

This commit is contained in:
Tamara
2025-04-03 11:45:14 +02:00
committed by GitHub
10 changed files with 68 additions and 4 deletions

View File

@@ -15,6 +15,7 @@ jobs:
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
ref: ${{ github.event.pull_request.head.sha }}
submodules: recursive
- name: Install Foundry

View File

@@ -24,5 +24,10 @@
},
"tenderly_base": {
"uniswap_v3": "0x7c7E06d7317e620a185078e236879D2a87fC8d22"
},
"unichain": {
"uniswap_v2": "0x2E80FBD880379744b46C2aB7249D2949E6696353",
"uniswap_v3": "0x7ba9149EaCC5801279FF8B4d7ECa020bbef18F90",
"uniswap_v4": "0x475EB503D630C2919DC8B24cB6603E17e69Bfe35"
}
}

View File

@@ -1,4 +1,5 @@
{
"ethereum": "0x0178f471f219737c51d6005556d2f44de011a08a",
"base": "0xC2C23b0199525DE070D126860133dc3badaD2EEb"
"base": "0xC2C23b0199525DE070D126860133dc3badaD2EEb",
"unichain": "0x9BDC3bE75440dBE563527CB39BB11cFBD1E21b09"
}

View File

@@ -35,6 +35,11 @@ module.exports = {
url: process.env.RPC_URL,
accounts: [process.env.PRIVATE_KEY],
chainId: 8453
},
unichain: {
url: process.env.RPC_URL,
accounts: [process.env.PRIVATE_KEY],
chainId: 130
}
},
@@ -45,6 +50,20 @@ module.exports = {
},
etherscan: {
apiKey: process.env.BLOCKCHAIN_EXPLORER_API_KEY,
apiKey: {
unichain: process.env.BLOCKCHAIN_EXPLORER_API_KEY,
base: process.env.BLOCKCHAIN_EXPLORER_API_KEY,
ethereum: process.env.BLOCKCHAIN_EXPLORER_API_KEY,
},
customChains: [
{
network: "unichain",
chainId: 130,
urls: {
apiURL: "https://api.uniscan.xyz/api",
browserURL: "https://www.uniscan.xyz/"
}
}
]
}
};

View File

@@ -36,6 +36,7 @@ const executors_to_deploy = {
// Args: Ekubo core contract
{exchange: "EkuboExecutor", args: [
"0xe0e0e08A6A4b9Dc7bD67BCB7aadE5cF48157d444"
]}
],
"base":[
// Args: Factory, Pool Init Code Hash
@@ -67,6 +68,20 @@ const executors_to_deploy = {
{exchange: "UniswapV4Executor", args: ["0x498581ff718922c3f8e6a244956af099b2652b2b"]},
{exchange: "BalancerV2Executor", args: []},
],
"unichain":[
// Args: Factory, Pool Init Code Hash
{exchange: "UniswapV2Executor", args: [
"0x1f98400000000000000000000000000000000002",
"0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f"
]},
// USV3 - Args: Factory, Pool Init Code Hash
{exchange: "UniswapV3Executor", args: [
"0x1f98400000000000000000000000000000000003",
"0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54"
]},
// Args: Pool manager
{exchange: "UniswapV4Executor", args: ["0x1f98400000000000000000000000000000000004"]},
],
}
async function main() {

View File

@@ -13,6 +13,10 @@ async function main() {
// permit2 address is the same as on ethereum
permit2 = "0x000000000022D473030F116dDEE9F6B43aC78BA3";
weth = "0x4200000000000000000000000000000000000006";
} else if (network === "unichain") {
// permit2 address is the same as on ethereum
permit2 = "0x000000000022D473030F116dDEE9F6B43aC78BA3";
weth = "0x4200000000000000000000000000000000000006";
} else {
throw new Error(`Unsupported network: ${network}`);
}

View File

@@ -58,5 +58,20 @@
"FUND_RESCUER_ROLE": [
"0xb0A77f867Fcec1e9b271Ee17354bC6bBC0dD5662"
]
},
"unichain": {
"EXECUTOR_SETTER_ROLE": [
"0x810A00Fa9287700871ba0f870Cd89D7Eac08D48C"
],
"FEE_SETTER_ROLE": [],
"PAUSER_ROLE": [
"0x810A00Fa9287700871ba0f870Cd89D7Eac08D48C"
],
"UNPAUSER_ROLE": [
"0x810A00Fa9287700871ba0f870Cd89D7Eac08D48C"
],
"FUND_RESCUER_ROLE": [
"0x810A00Fa9287700871ba0f870Cd89D7Eac08D48C"
]
}
}

View File

@@ -1020,7 +1020,10 @@ contract TychoRouterTest is TychoRouterTestSetup {
// TEMPORARY while the Ekubo executor address is hardcoded in TychoRouter
// This allows us to change the code at that address to be the testing executor code
vm.etch(0xA612f60d3C49E5f13f0e067b14E0eD6656F3F279, 0x2a07706473244BC757E10F2a9E86fB532828afe3.code);
vm.etch(
0xA612f60d3C49E5f13f0e067b14E0eD6656F3F279,
0x2a07706473244BC757E10F2a9E86fB532828afe3.code
);
deal(ALICE, 1 ether);
uint256 balancerBefore = IERC20(USDC_ADDR).balanceOf(ALICE);

View File

@@ -35,7 +35,6 @@ use tycho_execution::encoding::{
/// "token_out": "0x...",
/// "split": 0.0
/// }],
/// "router_address": "0x..."
/// }
/// ```
#[command(author, version, about, long_about = None)]

View File

@@ -148,6 +148,7 @@ impl Chain {
self.decode_hex("0000000000000000000000000000000000000000", decode_err_msg)
}
324 => self.decode_hex("000000000000000000000000000000000000800A", decode_err_msg),
130 => self.decode_hex("0000000000000000000000000000000000000000", decode_err_msg),
_ => Err(EncodingError::InvalidInput(format!(
"Native token not set for chain {:?}. Double check the chain is supported.",
self.name
@@ -162,6 +163,7 @@ impl Chain {
8453 => self.decode_hex("4200000000000000000000000000000000000006", decode_err_msg),
324 => self.decode_hex("5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", decode_err_msg),
42161 => self.decode_hex("82aF49447D8a07e3bd95BD0d56f35241523fBab1", decode_err_msg),
130 => self.decode_hex("4200000000000000000000000000000000000006", decode_err_msg),
_ => Err(EncodingError::InvalidInput(format!(
"Wrapped token not set for chain {:?}. Double check the chain is supported.",
self.name