From f5df1bbd87fb38f686c1aa14c741c8676ecf0c4b Mon Sep 17 00:00:00 2001 From: Diana Carvalho Date: Fri, 17 Jan 2025 11:42:22 +0000 Subject: [PATCH] feat: Add chain in config.json for the executor addresses --- don't change below this line --- ENG-4075 <#DTT#> --- src/encoding/swap_encoder/config.json | 6 ++++-- src/encoding/swap_encoder/mod.rs | 3 ++- src/encoding/swap_encoder/registry.rs | 15 ++++++++++----- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/encoding/swap_encoder/config.json b/src/encoding/swap_encoder/config.json index 11bc16e..1be7d99 100644 --- a/src/encoding/swap_encoder/config.json +++ b/src/encoding/swap_encoder/config.json @@ -1,6 +1,8 @@ { "executors": { - "uniswap_v2": "0x5C2F5a71f67c01775180ADc06909288B4C329308", - "vm:balancer_v2": "0x543778987b293C7E8Cf0722BB2e935ba6f4068D4" + "ethereum": { + "uniswap_v2": "0x5C2F5a71f67c01775180ADc06909288B4C329308", + "vm:balancer_v2": "0x543778987b293C7E8Cf0722BB2e935ba6f4068D4" + } } } \ No newline at end of file diff --git a/src/encoding/swap_encoder/mod.rs b/src/encoding/swap_encoder/mod.rs index 90cee48..82521f2 100644 --- a/src/encoding/swap_encoder/mod.rs +++ b/src/encoding/swap_encoder/mod.rs @@ -1,6 +1,7 @@ use std::sync::RwLock; use lazy_static::lazy_static; +use tycho_core::dto::Chain; use crate::encoding::swap_encoder::registry::{Config, SwapEncoderRegistry}; @@ -11,6 +12,6 @@ mod swap_struct_encoder; lazy_static! { pub static ref SWAP_ENCODER_REGISTRY: RwLock = { let config = Config::from_file("config.json").expect("Failed to load configuration file"); - RwLock::new(SwapEncoderRegistry::new(config)) + RwLock::new(SwapEncoderRegistry::new(config, Chain::Ethereum)) }; } diff --git a/src/encoding/swap_encoder/registry.rs b/src/encoding/swap_encoder/registry.rs index efcfdda..b2cd081 100644 --- a/src/encoding/swap_encoder/registry.rs +++ b/src/encoding/swap_encoder/registry.rs @@ -1,6 +1,7 @@ use std::{collections::HashMap, fs}; use serde::Deserialize; +use tycho_core::dto::Chain; use crate::encoding::swap_encoder::{ builder::SwapEncoderBuilder, swap_struct_encoder::SwapEncoder, @@ -11,15 +12,18 @@ pub struct SwapEncoderRegistry { } impl SwapEncoderRegistry { - pub fn new(config: Config) -> Self { + pub fn new(config: Config, blockchain: Chain) -> Self { let mut encoders = HashMap::new(); - - for (protocol, executor_address) in config.executors { + let executors = config + .executors + .get(&blockchain) + .unwrap_or_else(|| panic!("No executors found for blockchain: {}", blockchain)); + for (protocol, executor_address) in executors { let builder = SwapEncoderBuilder::new(&protocol, &executor_address); let encoder = builder.build().unwrap_or_else(|_| { panic!("Failed to build swap encoder for protocol: {}", protocol) }); - encoders.insert(protocol, encoder); + encoders.insert(protocol.to_string(), encoder); } Self { encoders } @@ -33,7 +37,8 @@ impl SwapEncoderRegistry { #[derive(Deserialize)] pub struct Config { - pub executors: HashMap, // Protocol -> Executor address mapping + pub executors: HashMap>, /* Blockchain -> {Protocol -> + * Executor address} mapping */ } impl Config {