Skip to content

Commit 0f9990b

Browse files
refactoring
1 parent 45587f7 commit 0f9990b

File tree

7 files changed

+93
-88
lines changed

7 files changed

+93
-88
lines changed

mantis/node/src/bin/mantis.rs

-86
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ async fn simulate_orders(simulate_args: &SimulateArgs) {
157157

158158
enum CoinToss{}
159159

160-
161160
impl Get<bool> for CoinToss {
162161
fn get() -> bool {
163162
random::<bool>()
@@ -197,91 +196,6 @@ async fn get_data_and_solve(
197196
}
198197
}
199198

200-
async fn solve<Decider: Get<bool>>(
201-
active_orders: Vec<OrderItem>,
202-
signing_key: &cosmrs::crypto::secp256k1::SigningKey,
203-
tip: &Tip,
204-
cvm_glt: Option<cw_cvm_outpost::msg::CvmGlt>,
205-
router: &String,
206-
) -> Vec<cw_mantis_order::ExecMsg> {
207-
let cows_per_pair = mantis_node::mantis::solve::find_cows(&active_orders);
208-
let mut msgs = vec![];
209-
for pair_solution in cows_per_pair {
210-
let salt = crate::cvm::calculate_salt(signing_key, tip, pair_solution.ab.clone());
211-
let cvm_program = if let Some(ref cvm_glt) = cvm_glt {
212-
let cvm_program = intent_banks_to_cvm_program(
213-
pair_solution.clone(),
214-
&active_orders,
215-
cvm_glt,
216-
router,
217-
&salt,
218-
)
219-
.await;
220-
221-
Some(cvm_program)
222-
} else {
223-
None
224-
};
225-
226-
// would be reasonable to do do cross chain if it solves some % of whole trade
227-
let route = if let Some(cvm_program) = cvm_program
228-
&& Decider::get()
229-
{
230-
Some(CrossChainPart::new(
231-
cvm_program,
232-
salt.clone(),
233-
pair_solution.optimal_price.into(),
234-
))
235-
} else {
236-
None
237-
};
238-
let msg = SolutionSubMsg {
239-
cows: pair_solution.cows.clone(),
240-
route,
241-
timeout: tip.timeout(12),
242-
optimal_price: pair_solution.optimal_price.into(),
243-
};
244-
let msg = cw_mantis_order::ExecMsg::Solve { msg };
245-
msgs.push(msg);
246-
}
247-
msgs
248-
}
249-
250-
async fn intent_banks_to_cvm_program(
251-
pair_solution: PairSolution,
252-
all_orders: &Vec<OrderItem>,
253-
cvm_glt: &cw_cvm_outpost::msg::GetConfigResponse,
254-
router_api: &String,
255-
salt: &Vec<u8>,
256-
) -> CvmProgram {
257-
let (a, b) = mantis_node::mantis::solve::IntentBankInput::find_intent_amount(
258-
pair_solution.cows.as_ref(),
259-
all_orders,
260-
pair_solution.optimal_price,
261-
cvm_glt,
262-
pair_solution.ab.clone(),
263-
);
264-
265-
log::info!(target:"mantis::solver::", "found for cross chain a: {:?}, b: {:?}", a, b);
266-
267-
let mut instructions = vec![];
268-
269-
if a.in_asset_amount.0.gt(&0) {
270-
let mut a_cvm_route = blackbox::get_route(router_api, a, cvm_glt, salt.as_ref()).await;
271-
instructions.append(&mut a_cvm_route);
272-
}
273-
if b.in_asset_amount.0.gt(&0) {
274-
let mut b_cvm_route = blackbox::get_route(router_api, b, cvm_glt, salt.as_ref()).await;
275-
instructions.append(&mut b_cvm_route);
276-
}
277-
log::info!(target: "mantis::solver", "built instructions: {:?}", instructions);
278-
279-
let cvm_program = CvmProgram {
280-
tag: salt.to_vec(),
281-
instructions,
282-
};
283-
cvm_program
284-
}
285199

286200
async fn send_solution(
287201
msg: cw_mantis_order::ExecMsg,

mantis/node/src/solver/cows/mod.rs

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
pub mod optimizer;
2+
pub mod orderbook;
3+
pub mod solution;
File renamed without changes.
File renamed without changes.
File renamed without changes.

mantis/node/src/solver/mod.rs

+90-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,93 @@
11
pub mod cows;
2-
pub mod orderbook;
32
pub mod router;
4-
pub mod solution;
53
pub mod types;
4+
5+
6+
7+
async fn solve<Decider: Get<bool>>(
8+
active_orders: Vec<OrderItem>,
9+
signing_key: &cosmrs::crypto::secp256k1::SigningKey,
10+
tip: &Tip,
11+
cvm_glt: Option<cw_cvm_outpost::msg::CvmGlt>,
12+
router: &String,
13+
) -> Vec<cw_mantis_order::ExecMsg> {
14+
let cows_per_pair = mantis_node::mantis::solve::find_cows(&active_orders);
15+
let mut msgs = vec![];
16+
for pair_solution in cows_per_pair {
17+
let salt = crate::cvm::calculate_salt(signing_key, tip, pair_solution.ab.clone());
18+
let cvm_program = if let Some(ref cvm_glt) = cvm_glt {
19+
let cvm_program = intent_banks_to_cvm_program(
20+
pair_solution.clone(),
21+
&active_orders,
22+
cvm_glt,
23+
router,
24+
&salt,
25+
)
26+
.await;
27+
28+
Some(cvm_program)
29+
} else {
30+
None
31+
};
32+
33+
// would be reasonable to do do cross chain if it solves some % of whole trade
34+
let route = if let Some(cvm_program) = cvm_program
35+
&& Decider::get()
36+
{
37+
Some(CrossChainPart::new(
38+
cvm_program,
39+
salt.clone(),
40+
pair_solution.optimal_price.into(),
41+
))
42+
} else {
43+
None
44+
};
45+
let msg = SolutionSubMsg {
46+
cows: pair_solution.cows.clone(),
47+
route,
48+
timeout: tip.timeout(12),
49+
optimal_price: pair_solution.optimal_price.into(),
50+
};
51+
let msg = cw_mantis_order::ExecMsg::Solve { msg };
52+
msgs.push(msg);
53+
}
54+
msgs
55+
}
56+
57+
58+
59+
async fn intent_banks_to_cvm_program(
60+
pair_solution: PairSolution,
61+
all_orders: &Vec<OrderItem>,
62+
cvm_glt: &cw_cvm_outpost::msg::GetConfigResponse,
63+
router_api: &String,
64+
salt: &Vec<u8>,
65+
) -> CvmProgram {
66+
let (a, b) = mantis_node::mantis::solve::IntentBankInput::find_intent_amount(
67+
pair_solution.cows.as_ref(),
68+
all_orders,
69+
pair_solution.optimal_price,
70+
cvm_glt,
71+
pair_solution.ab.clone(),
72+
);
73+
74+
log::info!(target:"mantis::solver::", "found for cross chain a: {:?}, b: {:?}", a, b);
75+
76+
let mut instructions = vec![];
77+
78+
if a.in_asset_amount.0.gt(&0) {
79+
let mut a_cvm_route = blackbox::get_route(router_api, a, cvm_glt, salt.as_ref()).await;
80+
instructions.append(&mut a_cvm_route);
81+
}
82+
if b.in_asset_amount.0.gt(&0) {
83+
let mut b_cvm_route = blackbox::get_route(router_api, b, cvm_glt, salt.as_ref()).await;
84+
instructions.append(&mut b_cvm_route);
85+
}
86+
log::info!(target: "mantis::solver", "built instructions: {:?}", instructions);
87+
88+
let cvm_program = CvmProgram {
89+
tag: salt.to_vec(),
90+
instructions,
91+
};
92+
cvm_program
93+
}
File renamed without changes.

0 commit comments

Comments
 (0)