Skip to content

Commit 1db7ec5

Browse files
committed
Refactor code with LiquoriceSettlement instead of ILiquoriceSettlement
1 parent ebd79e1 commit 1db7ec5

File tree

8 files changed

+41
-1320
lines changed

8 files changed

+41
-1320
lines changed

crates/contracts/artifacts/ILiquoriceSettlement.json

Lines changed: 0 additions & 1078 deletions
This file was deleted.

crates/contracts/artifacts/LiquoriceSettlement.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

crates/contracts/src/alloy.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ crate::bindings!(
594594
);
595595

596596
crate::bindings!(
597-
ILiquoriceSettlement,
597+
LiquoriceSettlement,
598598
crate::deployments! {
599599
// <https://liquorice.gitbook.io/liquorice-docs/links/smart-contracts>
600600
MAINNET => address!("0x0448633eb8B0A42EfED924C42069E0DcF08fb552"),

crates/contracts/src/bin/vendor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ fn run() -> Result<()> {
107107
"Manually vendored ABI and bytecode for hooks trampoline contract",
108108
)
109109
.manual(
110-
"ILiquoriceSettlement",
110+
"LiquoriceSettlement",
111111
"Liquorice does not publish its code",
112112
)
113113
.npm(

crates/driver/src/infra/notify/liquidity_sources/liquorice/notifier.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use {
2020
alloy::primitives::Address,
2121
anyhow::{Context, Result, anyhow},
2222
chrono::Utc,
23-
contracts::alloy::ILiquoriceSettlement,
23+
contracts::alloy::LiquoriceSettlement,
2424
};
2525

2626
const NOTIFICATION_SOURCE: &str = "cow_protocol";
@@ -40,7 +40,7 @@ impl Notifier {
4040
chain: chain::Chain,
4141
) -> Result<Self> {
4242
let liquorice_settlement_contract_address =
43-
ILiquoriceSettlement::deployment_address(&chain.id())
43+
LiquoriceSettlement::deployment_address(&chain.id())
4444
.ok_or(anyhow!("Liquorice settlement contract not found"))?;
4545

4646
Ok(Self {
@@ -85,11 +85,11 @@ impl LiquiditySourceNotifying for Notifier {
8585
mod utils {
8686
use {
8787
crate::domain::{
88-
competition::{solution, solution::Settlement},
88+
competition::solution::{self, Settlement},
8989
eth,
9090
},
9191
alloy::{primitives::Address, sol_types::SolCall},
92-
contracts::alloy::ILiquoriceSettlement,
92+
contracts::alloy::LiquoriceSettlement,
9393
ethrpc::alloy::conversions::IntoAlloy,
9494
std::collections::HashSet,
9595
};
@@ -150,7 +150,7 @@ mod utils {
150150
}
151151

152152
// Decode the calldata using the Liquorice settlement contract ABI
153-
let input = ILiquoriceSettlement::ILiquoriceSettlement::settleSingleCall::abi_decode(
153+
let input = LiquoriceSettlement::LiquoriceSettlement::settleSingleCall::abi_decode(
154154
&interaction.call_data.0,
155155
)
156156
.ok()?;
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
pub mod onchain;
21
pub mod server;

crates/e2e/src/api/liquorice/onchain.rs

Lines changed: 0 additions & 197 deletions
This file was deleted.

crates/e2e/tests/e2e/liquidity_source_notification.rs

Lines changed: 33 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
use {
2-
alloy::primitives::{Address, Bytes, U256, address},
2+
alloy::{
3+
primitives::{Address, Bytes, U256, address},
4+
signers::{SignerSync, local::PrivateKeySigner},
5+
},
36
chrono::Utc,
47
contracts::{
58
ERC20,
6-
alloy::{ILiquoriceSettlement, InstanceExt},
9+
alloy::{InstanceExt, LiquoriceSettlement},
710
},
811
driver::infra,
912
e2e::{
@@ -114,9 +117,10 @@ async fn liquidity_source_notification(web3: Web3) {
114117

115118
// Liquorice settlement contract through which we will trade with the
116119
// `liquorice_maker`
117-
let liquorice_settlement = ILiquoriceSettlement::Instance::deployed(&web3.alloy)
120+
let liquorice_settlement = LiquoriceSettlement::Instance::deployed(&web3.alloy)
118121
.await
119122
.unwrap();
123+
120124
let liquorice_balance_manager_address = liquorice_settlement
121125
.BALANCE_MANAGER()
122126
.call()
@@ -223,54 +227,46 @@ http-timeout = "10s"
223227
// Prepare Liquorice solution
224228

225229
// Create Liquorice order
226-
let liquorice_order = api::liquorice::onchain::order::Single {
227-
rfq_id: "c99d2e3f-702b-49c9-8bb8-43775770f2f3".to_string(),
230+
let liquorice_order = LiquoriceSettlement::ILiquoriceSettlement::Single {
231+
rfqId: "c99d2e3f-702b-49c9-8bb8-43775770f2f3".to_string(),
228232
nonce: U256::from(0),
229233
trader: onchain.contracts().gp_settlement.address().into_alloy(),
230-
effective_trader: onchain.contracts().gp_settlement.address().into_alloy(),
231-
base_token: token_usdc.address().into_alloy(),
232-
quote_token: token_usdt.address().into_alloy(),
233-
base_token_amount: trade_amount.into_alloy(),
234-
quote_token_amount: trade_amount.into_alloy(),
235-
min_fill_amount: U256::from(1),
236-
quote_expiry: U256::from(Utc::now().timestamp() as u64 + 10),
234+
effectiveTrader: onchain.contracts().gp_settlement.address().into_alloy(),
235+
baseToken: token_usdc.address().into_alloy(),
236+
quoteToken: token_usdt.address().into_alloy(),
237+
baseTokenAmount: trade_amount.into_alloy(),
238+
quoteTokenAmount: trade_amount.into_alloy(),
239+
minFillAmount: U256::from(1),
240+
quoteExpiry: U256::from(Utc::now().timestamp() as u64 + 10),
237241
recipient: liquorice_maker.address().into_alloy(),
238242
};
239243

240244
// Create calldata
241245
let liquorice_solution_calldata = {
246+
let liquorice_order_hash = liquorice_settlement
247+
.hashSingleOrder(liquorice_order.clone())
248+
.call()
249+
.await
250+
.unwrap();
251+
242252
// Create Liquorice order signature
243-
let liquorice_order_signature = liquorice_order.sign(
244-
&api::liquorice::onchain::DomainSeparator::new(1, *liquorice_settlement.address()),
245-
liquorice_order.hash(),
246-
&liquorice_maker,
247-
);
253+
254+
let signer = PrivateKeySigner::from_slice(liquorice_maker.private_key()).unwrap();
255+
let liquorice_order_signature = signer.sign_hash_sync(&liquorice_order_hash).unwrap();
248256

249257
// Create Liquorice settlement calldata
250258
liquorice_settlement
251259
.settleSingle(
252260
liquorice_maker.address().into_alloy(),
253-
ILiquoriceSettlement::ILiquoriceSettlement::Single {
254-
rfqId: liquorice_order.rfq_id.clone(),
255-
nonce: liquorice_order.nonce,
256-
trader: liquorice_order.trader,
257-
effectiveTrader: liquorice_order.effective_trader,
258-
baseToken: liquorice_order.base_token,
259-
quoteToken: liquorice_order.quote_token,
260-
baseTokenAmount: liquorice_order.base_token_amount,
261-
quoteTokenAmount: liquorice_order.quote_token_amount,
262-
minFillAmount: liquorice_order.min_fill_amount,
263-
quoteExpiry: liquorice_order.quote_expiry,
264-
recipient: liquorice_order.recipient,
265-
},
266-
ILiquoriceSettlement::Signature::TypedSignature {
267-
signatureType: liquorice_order_signature.signature_type,
268-
transferCommand: liquorice_order_signature.transfer_command,
269-
signatureBytes: liquorice_order_signature.signature.as_bytes().into(),
261+
liquorice_order.clone(),
262+
LiquoriceSettlement::Signature::TypedSignature {
263+
signatureType: 3, // EIP712
264+
transferCommand: 1, // SIMPLE_TRANSFER
265+
signatureBytes: liquorice_order_signature.as_bytes().into(),
270266
},
271-
liquorice_order.quote_token_amount,
267+
liquorice_order.quoteTokenAmount,
272268
// Taker signature is not used in this use case
273-
ILiquoriceSettlement::Signature::TypedSignature {
269+
LiquoriceSettlement::Signature::TypedSignature {
274270
signatureType: 0,
275271
transferCommand: 0,
276272
signatureBytes: Bytes::from(vec![0u8; 65]),
@@ -345,5 +341,5 @@ http-timeout = "10s"
345341
assert!(matches!(notification.content, Content::Settle(Settle {
346342
rfq_ids,
347343
..
348-
}) if rfq_ids.contains(&liquorice_order.rfq_id)));
344+
}) if rfq_ids.contains(&liquorice_order.rfqId)));
349345
}

0 commit comments

Comments
 (0)