feat: Add transferFromNeeded to non permit2 methods
This will block an attempt to transfer from the user when we expect the funds to already be in the router. chores: - add docs - in EncodingContext, rename transfer to transfer_type Took 58 minutes
This commit is contained in:
@@ -66,7 +66,7 @@ impl SwapEncoder for UniswapV2SwapEncoder {
|
||||
component_id,
|
||||
bytes_to_address(&encoding_context.receiver)?,
|
||||
zero_to_one,
|
||||
(encoding_context.transfer as u8).to_be_bytes(),
|
||||
(encoding_context.transfer_type as u8).to_be_bytes(),
|
||||
);
|
||||
|
||||
Ok(args.abi_encode_packed())
|
||||
@@ -129,7 +129,7 @@ impl SwapEncoder for UniswapV3SwapEncoder {
|
||||
bytes_to_address(&encoding_context.receiver)?,
|
||||
component_id,
|
||||
zero_to_one,
|
||||
(encoding_context.transfer as u8).to_be_bytes(),
|
||||
(encoding_context.transfer_type as u8).to_be_bytes(),
|
||||
);
|
||||
|
||||
Ok(args.abi_encode_packed())
|
||||
@@ -206,7 +206,7 @@ impl SwapEncoder for UniswapV4SwapEncoder {
|
||||
group_token_in_address,
|
||||
group_token_out_address,
|
||||
zero_to_one,
|
||||
(encoding_context.transfer as u8).to_be_bytes(),
|
||||
(encoding_context.transfer_type as u8).to_be_bytes(),
|
||||
bytes_to_address(&encoding_context.receiver)?,
|
||||
pool_params,
|
||||
);
|
||||
@@ -282,7 +282,7 @@ impl SwapEncoder for BalancerV2SwapEncoder {
|
||||
component_id,
|
||||
bytes_to_address(&encoding_context.receiver)?,
|
||||
approval_needed,
|
||||
(encoding_context.transfer as u8).to_be_bytes(),
|
||||
(encoding_context.transfer_type as u8).to_be_bytes(),
|
||||
);
|
||||
Ok(args.abi_encode_packed())
|
||||
}
|
||||
@@ -344,7 +344,7 @@ impl SwapEncoder for EkuboSwapEncoder {
|
||||
let mut encoded = vec![];
|
||||
|
||||
if encoding_context.group_token_in == swap.token_in {
|
||||
encoded.extend((encoding_context.transfer as u8).to_be_bytes());
|
||||
encoded.extend((encoding_context.transfer_type as u8).to_be_bytes());
|
||||
encoded.extend(bytes_to_address(&encoding_context.receiver)?);
|
||||
encoded.extend(bytes_to_address(&swap.token_in)?);
|
||||
}
|
||||
@@ -575,7 +575,7 @@ impl SwapEncoder for CurveSwapEncoder {
|
||||
i.to_be_bytes::<1>(),
|
||||
j.to_be_bytes::<1>(),
|
||||
approval_needed,
|
||||
(encoding_context.transfer as u8).to_be_bytes(),
|
||||
(encoding_context.transfer_type as u8).to_be_bytes(),
|
||||
bytes_to_address(&encoding_context.receiver)?,
|
||||
);
|
||||
|
||||
@@ -620,7 +620,7 @@ impl SwapEncoder for MaverickV2SwapEncoder {
|
||||
bytes_to_address(&swap.token_in)?,
|
||||
component_id,
|
||||
bytes_to_address(&encoding_context.receiver)?,
|
||||
(encoding_context.transfer as u8).to_be_bytes(),
|
||||
(encoding_context.transfer_type as u8).to_be_bytes(),
|
||||
);
|
||||
Ok(args.abi_encode_packed())
|
||||
}
|
||||
@@ -670,7 +670,7 @@ mod tests {
|
||||
router_address: Some(Bytes::zero(20)),
|
||||
group_token_in: token_in.clone(),
|
||||
group_token_out: token_out.clone(),
|
||||
transfer: TransferType::Transfer,
|
||||
transfer_type: TransferType::Transfer,
|
||||
};
|
||||
let encoder = UniswapV2SwapEncoder::new(
|
||||
String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"),
|
||||
@@ -729,7 +729,7 @@ mod tests {
|
||||
router_address: Some(Bytes::zero(20)),
|
||||
group_token_in: token_in.clone(),
|
||||
group_token_out: token_out.clone(),
|
||||
transfer: TransferType::Transfer,
|
||||
transfer_type: TransferType::Transfer,
|
||||
};
|
||||
let encoder = UniswapV3SwapEncoder::new(
|
||||
String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"),
|
||||
@@ -791,7 +791,7 @@ mod tests {
|
||||
router_address: Some(Bytes::zero(20)),
|
||||
group_token_in: token_in.clone(),
|
||||
group_token_out: token_out.clone(),
|
||||
transfer: TransferType::None,
|
||||
transfer_type: TransferType::None,
|
||||
};
|
||||
let encoder = BalancerV2SwapEncoder::new(
|
||||
String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"),
|
||||
@@ -865,7 +865,7 @@ mod tests {
|
||||
|
||||
group_token_in: token_in.clone(),
|
||||
group_token_out: token_out.clone(),
|
||||
transfer: TransferType::Transfer,
|
||||
transfer_type: TransferType::Transfer,
|
||||
};
|
||||
let encoder = UniswapV4SwapEncoder::new(
|
||||
String::from("0xF62849F9A0B5Bf2913b396098F7c7019b51A820a"),
|
||||
@@ -936,7 +936,7 @@ 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: TransferType::Transfer,
|
||||
transfer_type: TransferType::Transfer,
|
||||
};
|
||||
|
||||
let encoder = UniswapV4SwapEncoder::new(
|
||||
@@ -979,7 +979,7 @@ mod tests {
|
||||
router_address: Some(router_address.clone()),
|
||||
group_token_in: usde_address.clone(),
|
||||
group_token_out: wbtc_address.clone(),
|
||||
transfer: TransferType::Transfer,
|
||||
transfer_type: TransferType::Transfer,
|
||||
};
|
||||
|
||||
// Setup - First sequence: USDE -> USDT
|
||||
@@ -1114,7 +1114,7 @@ mod tests {
|
||||
group_token_out: token_out.clone(),
|
||||
exact_out: false,
|
||||
router_address: Some(Bytes::default()),
|
||||
transfer: TransferType::Transfer,
|
||||
transfer_type: TransferType::Transfer,
|
||||
};
|
||||
|
||||
let encoder =
|
||||
@@ -1160,7 +1160,7 @@ mod tests {
|
||||
group_token_out: group_token_out.clone(),
|
||||
exact_out: false,
|
||||
router_address: Some(Bytes::default()),
|
||||
transfer: TransferType::Transfer,
|
||||
transfer_type: TransferType::Transfer,
|
||||
};
|
||||
|
||||
let first_swap = Swap {
|
||||
@@ -1356,7 +1356,7 @@ mod tests {
|
||||
router_address: None,
|
||||
group_token_in: token_in.clone(),
|
||||
group_token_out: token_out.clone(),
|
||||
transfer: TransferType::None,
|
||||
transfer_type: TransferType::None,
|
||||
};
|
||||
let encoder = CurveSwapEncoder::new(
|
||||
String::from("0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f"),
|
||||
@@ -1426,7 +1426,7 @@ mod tests {
|
||||
router_address: None,
|
||||
group_token_in: token_in.clone(),
|
||||
group_token_out: token_out.clone(),
|
||||
transfer: TransferType::None,
|
||||
transfer_type: TransferType::None,
|
||||
};
|
||||
let encoder = CurveSwapEncoder::new(
|
||||
String::from("0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f"),
|
||||
@@ -1497,7 +1497,7 @@ mod tests {
|
||||
router_address: None,
|
||||
group_token_in: token_in.clone(),
|
||||
group_token_out: token_out.clone(),
|
||||
transfer: TransferType::None,
|
||||
transfer_type: TransferType::None,
|
||||
};
|
||||
let encoder = CurveSwapEncoder::new(
|
||||
String::from("0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f"),
|
||||
@@ -1568,7 +1568,7 @@ mod tests {
|
||||
router_address: Some(Bytes::default()),
|
||||
group_token_in: token_in.clone(),
|
||||
group_token_out: token_out.clone(),
|
||||
transfer: TransferType::Transfer,
|
||||
transfer_type: TransferType::Transfer,
|
||||
};
|
||||
let encoder = MaverickV2SwapEncoder::new(
|
||||
String::from("0x543778987b293C7E8Cf0722BB2e935ba6f4068D4"),
|
||||
|
||||
Reference in New Issue
Block a user