chore: Make naming consistent: transfer_needed, approval_needed, etc

Took 46 minutes
This commit is contained in:
Diana Carvalho
2025-05-15 14:52:43 +01:00
parent 4a0533b8ea
commit 09ff7691f8
9 changed files with 117 additions and 112 deletions

View File

@@ -125,7 +125,7 @@ impl StrategyEncoder for SingleSwapStrategyEncoder {
let swap_receiver =
if !unwrap { solution.receiver.clone() } else { self.router_address.clone() };
let (mut transfer_from, mut funds_receiver, transfer) = self
let (mut transfer_from_needed, mut token_in_receiver, transfer_needed) = self
.transfer_optimization
.get_transfers(grouped_swap.clone(), wrap);
let encoding_context = EncodingContext {
@@ -134,8 +134,8 @@ impl StrategyEncoder for SingleSwapStrategyEncoder {
router_address: Some(self.router_address.clone()),
group_token_in: grouped_swap.token_in.clone(),
group_token_out: grouped_swap.token_out.clone(),
transfer_from,
transfer,
transfer_from_needed,
transfer_needed,
};
let mut grouped_protocol_data: Vec<u8> = vec![];
@@ -156,11 +156,13 @@ impl StrategyEncoder for SingleSwapStrategyEncoder {
) {
// The first swap is from a callback constrained protocol. This means that the in
// transfer needs to happen at callback time and not before.
transfer_from = false;
funds_receiver = Address::ZERO.to_string();
transfer_from_needed = false;
token_in_receiver = Address::ZERO.to_string();
}
let funds_receiver = Address::from_str(&funds_receiver).map_err(|_| {
EncodingError::FatalError(format!("Invalid funds receiver address: {funds_receiver}"))
let token_in_receiver = Address::from_str(&token_in_receiver).map_err(|_| {
EncodingError::FatalError(format!(
"Invalid funds receiver address: {token_in_receiver}"
))
})?;
let method_calldata = if let Some(permit2) = self.permit2.clone() {
let (permit, signature) = permit2.get_permit(
@@ -177,8 +179,8 @@ impl StrategyEncoder for SingleSwapStrategyEncoder {
wrap,
unwrap,
bytes_to_address(&solution.receiver)?,
transfer_from,
funds_receiver,
transfer_from_needed,
token_in_receiver,
permit,
signature.as_bytes().to_vec(),
swap_data,
@@ -193,8 +195,8 @@ impl StrategyEncoder for SingleSwapStrategyEncoder {
wrap,
unwrap,
bytes_to_address(&solution.receiver)?,
transfer_from,
funds_receiver,
transfer_from_needed,
token_in_receiver,
swap_data,
)
.abi_encode()
@@ -307,7 +309,7 @@ impl StrategyEncoder for SequentialSwapStrategyEncoder {
NativeAction::Unwrap => unwrap = true,
}
}
let (mut transfer_from, mut funds_receiver, transfer) = self
let (mut transfer_from_needed, mut token_in_receiver, transfer_needed) = self
.transfer_optimization
.get_transfers(grouped_swaps[0].clone(), wrap);
@@ -331,7 +333,7 @@ impl StrategyEncoder for SequentialSwapStrategyEncoder {
next_in_between_swap_optimization_allowed = next_swap_optimization;
let in_between_transfer = if i == 0 {
transfer
transfer_needed
} else {
self.transfer_optimization
.get_in_between_transfer(&protocol, in_between_swap_optimization_allowed)
@@ -342,8 +344,8 @@ impl StrategyEncoder for SequentialSwapStrategyEncoder {
router_address: Some(self.router_address.clone()),
group_token_in: grouped_swap.token_in.clone(),
group_token_out: grouped_swap.token_out.clone(),
transfer_from: if i == 0 { transfer_from } else { false },
transfer: in_between_transfer,
transfer_from_needed: if i == 0 { transfer_from_needed } else { false },
transfer_needed: in_between_transfer,
};
let mut grouped_protocol_data: Vec<u8> = vec![];
@@ -369,11 +371,13 @@ impl StrategyEncoder for SequentialSwapStrategyEncoder {
) {
// The first swap is from a callback constrained protocol. This means that the in
// transfer needs to happen at callback time and not before.
transfer_from = false;
funds_receiver = Address::ZERO.to_string();
transfer_from_needed = false;
token_in_receiver = Address::ZERO.to_string();
}
let funds_receiver = Address::from_str(&funds_receiver).map_err(|_| {
EncodingError::FatalError(format!("Invalid funds receiver address: {funds_receiver}"))
let token_in_receiver = Address::from_str(&token_in_receiver).map_err(|_| {
EncodingError::FatalError(format!(
"Invalid funds receiver address: {token_in_receiver}"
))
})?;
let encoded_swaps = ple_encode(swaps);
let method_calldata = if let Some(permit2) = self.permit2.clone() {
@@ -391,8 +395,8 @@ impl StrategyEncoder for SequentialSwapStrategyEncoder {
wrap,
unwrap,
bytes_to_address(&solution.receiver)?,
transfer_from,
funds_receiver,
transfer_from_needed,
token_in_receiver,
permit,
signature.as_bytes().to_vec(),
encoded_swaps,
@@ -407,8 +411,8 @@ impl StrategyEncoder for SequentialSwapStrategyEncoder {
wrap,
unwrap,
bytes_to_address(&solution.receiver)?,
transfer_from,
funds_receiver,
transfer_from_needed,
token_in_receiver,
encoded_swaps,
)
.abi_encode()
@@ -570,7 +574,7 @@ impl StrategyEncoder for SplitSwapStrategyEncoder {
tokens.push(solution.checked_token.clone());
}
let (transfer_from, _funds_receiver, _transfer) = self
let (transfer_from_needed, _token_in_receiver, _transfer_needed) = self
.transfer_optimization
.get_transfers(grouped_swaps[0].clone(), wrap);
let mut swaps = vec![];
@@ -589,7 +593,7 @@ impl StrategyEncoder for SplitSwapStrategyEncoder {
} else {
self.router_address.clone()
};
let transfer = self
let transfer_needed = self
.transfer_optimization
.get_in_between_transfer(&protocol, false);
let encoding_context = EncodingContext {
@@ -598,8 +602,8 @@ impl StrategyEncoder for SplitSwapStrategyEncoder {
router_address: Some(self.router_address.clone()),
group_token_in: grouped_swap.token_in.clone(),
group_token_out: grouped_swap.token_out.clone(),
transfer_from: false,
transfer,
transfer_from_needed: false,
transfer_needed,
};
let mut grouped_protocol_data: Vec<u8> = vec![];
@@ -643,7 +647,7 @@ impl StrategyEncoder for SplitSwapStrategyEncoder {
unwrap,
U256::from(tokens_len),
bytes_to_address(&solution.receiver)?,
transfer_from,
transfer_from_needed,
permit,
signature.as_bytes().to_vec(),
encoded_swaps,
@@ -659,7 +663,7 @@ impl StrategyEncoder for SplitSwapStrategyEncoder {
unwrap,
U256::from(tokens_len),
bytes_to_address(&solution.receiver)?,
transfer_from,
transfer_from_needed,
encoded_swaps,
)
.abi_encode()

View File

@@ -60,10 +60,10 @@ impl TransferOptimization {
// Transfer from swapper to pool
(true, swap.swaps[0].component.id.clone(), false)
}
// in transfer is not necessary for these protocols. Only make a transfer if the
// tokens are not already in the router
// in transfer is not necessary for these protocols. Only make a transfer from the swapper
// to the router if the tokens are not already in the router
} else if !self.token_in_already_in_router {
// Transfer from swapper to router using permit2.
// Transfer from swapper to router using.
(true, self.router_address.to_string(), false)
} else {
(false, zero_address, false)

View File

@@ -66,7 +66,7 @@ impl SwapEncoder for UniswapV2SwapEncoder {
component_id,
bytes_to_address(&encoding_context.receiver)?,
zero_to_one,
encoding_context.transfer,
encoding_context.transfer_needed,
);
Ok(args.abi_encode_packed())
@@ -129,8 +129,8 @@ impl SwapEncoder for UniswapV3SwapEncoder {
bytes_to_address(&encoding_context.receiver)?,
component_id,
zero_to_one,
encoding_context.transfer_from,
encoding_context.transfer,
encoding_context.transfer_from_needed,
encoding_context.transfer_needed,
);
Ok(args.abi_encode_packed())
@@ -207,8 +207,8 @@ impl SwapEncoder for UniswapV4SwapEncoder {
group_token_in_address,
group_token_out_address,
zero_to_one,
encoding_context.transfer_from,
encoding_context.transfer,
encoding_context.transfer_from_needed,
encoding_context.transfer_needed,
bytes_to_address(&encoding_context.receiver)?,
pool_params,
);
@@ -345,8 +345,8 @@ impl SwapEncoder for EkuboSwapEncoder {
let mut encoded = vec![];
if encoding_context.group_token_in == swap.token_in {
encoded.extend((encoding_context.transfer_from as u8).to_be_bytes());
encoded.extend((encoding_context.transfer as u8).to_be_bytes());
encoded.extend((encoding_context.transfer_from_needed as u8).to_be_bytes());
encoded.extend((encoding_context.transfer_needed as u8).to_be_bytes());
encoded.extend(bytes_to_address(&encoding_context.receiver)?);
encoded.extend(bytes_to_address(&swap.token_in)?);
}
@@ -621,7 +621,7 @@ impl SwapEncoder for MaverickV2SwapEncoder {
bytes_to_address(&swap.token_in)?,
component_id,
bytes_to_address(&encoding_context.receiver)?,
encoding_context.transfer,
encoding_context.transfer_needed,
);
Ok(args.abi_encode_packed())
}
@@ -671,8 +671,8 @@ mod tests {
router_address: Some(Bytes::zero(20)),
group_token_in: token_in.clone(),
group_token_out: token_out.clone(),
transfer: true,
transfer_from: false,
transfer_needed: true,
transfer_from_needed: false,
};
let encoder = UniswapV2SwapEncoder::new(
String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"),
@@ -731,8 +731,8 @@ mod tests {
router_address: Some(Bytes::zero(20)),
group_token_in: token_in.clone(),
group_token_out: token_out.clone(),
transfer: true,
transfer_from: false,
transfer_needed: true,
transfer_from_needed: false,
};
let encoder = UniswapV3SwapEncoder::new(
String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"),
@@ -796,8 +796,8 @@ mod tests {
router_address: Some(Bytes::zero(20)),
group_token_in: token_in.clone(),
group_token_out: token_out.clone(),
transfer: false,
transfer_from: false,
transfer_needed: false,
transfer_from_needed: false,
};
let encoder = BalancerV2SwapEncoder::new(
String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"),
@@ -869,8 +869,8 @@ mod tests {
group_token_in: token_in.clone(),
group_token_out: token_out.clone(),
transfer: true,
transfer_from: false,
transfer_needed: true,
transfer_from_needed: false,
};
let encoder = UniswapV4SwapEncoder::new(
String::from("0xF62849F9A0B5Bf2913b396098F7c7019b51A820a"),
@@ -943,8 +943,8 @@ mod tests {
group_token_in: group_token_in.clone(),
// Token out is the same as the group token out
group_token_out: token_out.clone(),
transfer: true,
transfer_from: false,
transfer_needed: true,
transfer_from_needed: false,
};
let encoder = UniswapV4SwapEncoder::new(
@@ -987,8 +987,8 @@ mod tests {
router_address: Some(router_address.clone()),
group_token_in: usde_address.clone(),
group_token_out: wbtc_address.clone(),
transfer: true,
transfer_from: false,
transfer_needed: true,
transfer_from_needed: false,
};
// Setup - First sequence: USDE -> USDT
@@ -1125,8 +1125,8 @@ mod tests {
group_token_out: token_out.clone(),
exact_out: false,
router_address: Some(Bytes::default()),
transfer: true,
transfer_from: false,
transfer_needed: true,
transfer_from_needed: false,
};
let encoder =
@@ -1174,8 +1174,8 @@ mod tests {
group_token_out: group_token_out.clone(),
exact_out: false,
router_address: Some(Bytes::default()),
transfer: true,
transfer_from: false,
transfer_needed: true,
transfer_from_needed: false,
};
let first_swap = Swap {
@@ -1373,8 +1373,8 @@ mod tests {
router_address: None,
group_token_in: token_in.clone(),
group_token_out: token_out.clone(),
transfer: false,
transfer_from: false,
transfer_needed: false,
transfer_from_needed: false,
};
let encoder = CurveSwapEncoder::new(
String::from("0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f"),
@@ -1442,8 +1442,8 @@ mod tests {
router_address: None,
group_token_in: token_in.clone(),
group_token_out: token_out.clone(),
transfer: false,
transfer_from: false,
transfer_needed: false,
transfer_from_needed: false,
};
let encoder = CurveSwapEncoder::new(
String::from("0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f"),
@@ -1512,8 +1512,8 @@ mod tests {
router_address: None,
group_token_in: token_in.clone(),
group_token_out: token_out.clone(),
transfer: false,
transfer_from: false,
transfer_needed: false,
transfer_from_needed: false,
};
let encoder = CurveSwapEncoder::new(
String::from("0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f"),
@@ -1582,8 +1582,8 @@ mod tests {
router_address: Some(Bytes::default()),
group_token_in: token_in.clone(),
group_token_out: token_out.clone(),
transfer: true,
transfer_from: false,
transfer_needed: true,
transfer_from_needed: false,
};
let encoder = MaverickV2SwapEncoder::new(
String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"),

View File

@@ -279,8 +279,8 @@ impl TychoExecutorEncoder {
router_address: None,
group_token_in: grouped_swap.token_in.clone(),
group_token_out: grouped_swap.token_out.clone(),
transfer: true,
transfer_from: false,
transfer_needed: true,
transfer_from_needed: false,
};
let protocol_data = swap_encoder.encode_swap(swap.clone(), encoding_context.clone())?;
grouped_protocol_data.extend(protocol_data);

View File

@@ -106,8 +106,9 @@ pub struct Transaction {
/// solution does not require router address.
/// * `group_token_in`: Token to be used as the input for the group swap.
/// * `group_token_out`: Token to be used as the output for the group swap.
/// * `transfer_from`: true if the solution requires a transfer from the user to the router or pool.
/// * `transfer`: true if the solution requires a transfer from the router to the pool.
/// * `transfer_from_needed`: true if the solution requires a transfer from the user to the router
/// or pool.
/// * `transfer_needed`: true if the solution requires a transfer from the router to the pool.
#[derive(Clone, Debug)]
pub struct EncodingContext {
pub receiver: Bytes,
@@ -115,8 +116,8 @@ pub struct EncodingContext {
pub router_address: Option<Bytes>,
pub group_token_in: Bytes,
pub group_token_out: Bytes,
pub transfer_from: bool,
pub transfer: bool,
pub transfer_from_needed: bool,
pub transfer_needed: bool,
}
#[derive(Clone, PartialEq, Eq, Hash)]