fix: usv4 integration tests and remove selector from swap/strategy encoder

This commit is contained in:
royvardhan
2025-02-24 19:48:25 +05:30
parent 69745b18fd
commit 18efe0305b
6 changed files with 30 additions and 89 deletions

View File

@@ -30,7 +30,6 @@ pub trait EVMStrategyEncoder: StrategyEncoder {
token_out: U8,
split: U24,
executor_address: Bytes,
executor_selector: FixedBytes<4>,
protocol_data: Vec<u8>,
) -> Vec<u8> {
let mut encoded = Vec::new();
@@ -38,17 +37,10 @@ pub trait EVMStrategyEncoder: StrategyEncoder {
encoded.push(token_out.to_be_bytes_vec()[0]);
encoded.extend_from_slice(&split.to_be_bytes_vec());
encoded.extend(executor_address.to_vec());
encoded.extend(executor_selector);
encoded.extend(protocol_data);
encoded
}
/// Encodes a selector string into its 4-byte representation.
fn encode_executor_selector(&self, selector: &str) -> FixedBytes<4> {
let hash = keccak256(selector.as_bytes());
FixedBytes::<4>::from([hash[0], hash[1], hash[2], hash[3]])
}
/// Uses prefix-length encoding to efficient encode action data.
///
/// Prefix-length encoding is a data encoding method where the beginning of a data segment
@@ -114,10 +106,7 @@ impl SplitSwapStrategyEncoder {
impl EVMStrategyEncoder for SplitSwapStrategyEncoder {}
impl StrategyEncoder for SplitSwapStrategyEncoder {
fn encode_strategy(
&self,
solution: Solution,
) -> Result<(Vec<u8>, Bytes, Option<String>), EncodingError> {
fn encode_strategy(&self, solution: Solution) -> Result<(Vec<u8>, Bytes), EncodingError> {
self.split_swap_validator
.validate_split_percentages(&solution.swaps)?;
self.split_swap_validator
@@ -209,7 +198,6 @@ impl StrategyEncoder for SplitSwapStrategyEncoder {
Bytes::from_str(swap_encoder.executor_address()).map_err(|_| {
EncodingError::FatalError("Invalid executor address".to_string())
})?,
self.encode_executor_selector(swap_encoder.swap_selector()),
grouped_protocol_data,
);
swaps.push(swap_data);
@@ -253,7 +241,7 @@ impl StrategyEncoder for SplitSwapStrategyEncoder {
};
let contract_interaction = encode_input(&self.selector, method_calldata);
Ok((contract_interaction, solution.router_address, None))
Ok((contract_interaction, solution.router_address))
}
fn get_swap_encoder(&self, protocol_system: &str) -> Option<&Box<dyn SwapEncoder>> {
@@ -283,10 +271,7 @@ impl ExecutorStrategyEncoder {
}
impl EVMStrategyEncoder for ExecutorStrategyEncoder {}
impl StrategyEncoder for ExecutorStrategyEncoder {
fn encode_strategy(
&self,
solution: Solution,
) -> Result<(Vec<u8>, Bytes, Option<String>), EncodingError> {
fn encode_strategy(&self, solution: Solution) -> Result<(Vec<u8>, Bytes), EncodingError> {
let grouped_swaps = group_swaps(solution.clone().swaps);
let number_of_groups = grouped_swaps.len();
if number_of_groups > 1 {
@@ -328,11 +313,7 @@ impl StrategyEncoder for ExecutorStrategyEncoder {
let executor_address = Bytes::from_str(swap_encoder.executor_address())
.map_err(|_| EncodingError::FatalError("Invalid executor address".to_string()))?;
Ok((
grouped_protocol_data,
executor_address,
Some(swap_encoder.swap_selector().to_string()),
))
Ok((grouped_protocol_data, executor_address))
}
fn get_swap_encoder(&self, protocol_system: &str) -> Option<&Box<dyn SwapEncoder>> {
@@ -413,7 +394,7 @@ mod tests {
native_action: None,
};
let (protocol_data, executor_address, selector) = encoder
let (protocol_data, executor_address) = encoder
.encode_strategy(solution)
.unwrap();
let hex_protocol_data = encode(&protocol_data);
@@ -434,7 +415,6 @@ mod tests {
"00",
))
);
assert_eq!(selector, Some("swap(uint256,bytes)".to_string()));
}
#[test]
@@ -539,7 +519,7 @@ mod tests {
..Default::default()
};
let (protocol_data, executor_address, selector) = encoder
let (protocol_data, executor_address) = encoder
.encode_strategy(solution)
.unwrap();
let hex_protocol_data = encode(&protocol_data);
@@ -574,7 +554,6 @@ mod tests {
"0001f4"
))
);
assert_eq!(selector, Some("swap(uint256,bytes)".to_string()));
}
#[rstest]
@@ -646,7 +625,7 @@ mod tests {
..Default::default()
};
let (calldata, _, _) = encoder
let (calldata, _) = encoder
.encode_strategy(solution)
.unwrap();
let expected_min_amount_encoded = hex::encode(U256::abi_encode(&expected_min_amount));
@@ -748,7 +727,7 @@ mod tests {
..Default::default()
};
let (calldata, _, _) = encoder
let (calldata, _) = encoder
.encode_strategy(solution)
.unwrap();
@@ -797,7 +776,7 @@ mod tests {
..Default::default()
};
let (calldata, _, _) = encoder
let (calldata, _) = encoder
.encode_strategy(solution)
.unwrap();
@@ -886,7 +865,7 @@ mod tests {
..Default::default()
};
let (calldata, _, _) = encoder
let (calldata, _) = encoder
.encode_strategy(solution)
.unwrap();
@@ -968,7 +947,7 @@ mod tests {
..Default::default()
};
let (calldata, _, _) = encoder
let (calldata, _) = encoder
.encode_strategy(solution)
.unwrap();
@@ -1079,7 +1058,7 @@ mod tests {
..Default::default()
};
let (calldata, _, _) = encoder
let (calldata, _) = encoder
.encode_strategy(solution)
.unwrap();
let expected_min_amount_encoded = hex::encode(U256::abi_encode(&expected_min_amount));
@@ -1171,7 +1150,7 @@ mod tests {
..Default::default()
};
let (calldata, _, _) = encoder
let (calldata, _) = encoder
.encode_strategy(solution)
.unwrap();
let hex_calldata = encode(&calldata);
@@ -1235,7 +1214,7 @@ mod tests {
..Default::default()
};
let (calldata, _, _) = encoder
let (calldata, _) = encoder
.encode_strategy(solution)
.unwrap();