Skip to content

Commit 3d01384

Browse files
workz
1 parent e5ef00c commit 3d01384

File tree

4 files changed

+70
-46
lines changed

4 files changed

+70
-46
lines changed

contracts/cosmwasm/outpost/src/contract/execute.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use cosmwasm_std::{
1313
entry_point, wasm_execute, Addr, BankMsg, Coin, CosmosMsg, Deps, DepsMut, Env, MessageInfo,
1414
Response, StdError,
1515
};
16-
use cvm_route::asset::{AssetReference, AssetToNetwork};
16+
use cvm_route::asset::{AssetReference, NetworkAssetItem};
1717
use cw20::{Cw20Contract, Cw20ExecuteMsg};
1818

1919
use cvm_runtime::{
@@ -97,12 +97,12 @@ fn handle_config_msg(
9797
ConfigSubMsg::ForceRemoveAsset { asset_id } => {
9898
assets::force_remove_asset(auth, deps, asset_id)
9999
}
100-
ConfigSubMsg::ForceAssetToNetworkMap(AssetToNetwork {
101-
this_asset,
102-
other_network,
103-
other_asset,
100+
ConfigSubMsg::ForceAssetToNetworkMap(NetworkAssetItem {
101+
to_network_id,
102+
from_asset_id,
103+
to_asset_id,
104104
}) => {
105-
assets::force_asset_to_network_map(auth, deps, this_asset, other_network, other_asset)
105+
assets::force_asset_to_network_map(auth, deps, from_asset_id, to_network_id, to_asset_id)
106106
}
107107
ConfigSubMsg::ForceNetwork(msg) => network::force_network(auth, deps, msg),
108108
ConfigSubMsg::ForceInstantiate { user_origin, salt } => {

crates/cvm-route/src/asset.rs

-22
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,6 @@
11
use crate::{prelude::*, transport::ForeignAssetId};
22
use cvm::{AssetId, NetworkId};
33

4-
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
5-
#[serde(rename_all = "snake_case")]
6-
#[cfg_attr(
7-
feature = "json-schema", // all(feature = "json-schema", not(target_arch = "wasm32")),
8-
derive(schemars::JsonSchema)
9-
)]
10-
pub struct AssetToNetwork {
11-
pub this_asset: AssetId,
12-
pub other_network: NetworkId,
13-
pub other_asset: AssetId,
14-
}
15-
16-
impl AssetToNetwork {
17-
pub fn new(this_asset: AssetId, other_network: NetworkId, other_asset: AssetId) -> Self {
18-
Self {
19-
this_asset,
20-
other_network,
21-
other_asset,
22-
}
23-
}
24-
}
25-
264
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
275
#[serde(rename_all = "snake_case")]
286
#[cfg_attr(

crates/cvm-runtime/src/outpost/config.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use cvm_route::{
2-
asset::{AssetItem, AssetToNetwork}, exchange::ExchangeItem, transport::NetworkToNetworkItem,
2+
asset::{AssetItem, NetworkAssetItem}, exchange::ExchangeItem, transport::NetworkToNetworkItem,
33
venue::AssetsVenueItem,
44
};
55

@@ -103,7 +103,7 @@ pub enum ConfigSubMsg {
103103
/// Permissioned message (gov or admin) to force set asset information.
104104
ForceAsset(AssetItem),
105105

106-
ForceAssetToNetworkMap(AssetToNetwork),
106+
ForceAssetToNetworkMap(NetworkAssetItem),
107107

108108
ForceExchange(ExchangeItem),
109109

mantis/node/tests/cvms.rs

+62-16
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ use bounded_collections::Get;
22
use cosmrs::tendermint::block::Height;
33
use cosmwasm_std::{Addr, Coin, Coins, Empty};
44
use cvm_route::{
5-
asset::{AssetItem, AssetReference, NetworkAssetItem},
5+
asset::{self, AssetItem, AssetReference, NetworkAssetItem},
66
exchange::ExchangeItem,
77
transport::{NetworkToNetworkItem, OtherNetworkItem},
88
venue::AssetsVenueItem,
99
};
1010
use cw_cvm_outpost::msg::{CvmGlt, HereItem, NetworkItem, OutpostId};
11-
use cw_mantis_order::{OrderItem, OrderSubMsg};
11+
use cw_mantis_order::{OrderItem, OrderSubMsg, SolutionSubMsg};
1212
use cw_multi_test::{App, Bank, BankKeeper, Contract, ContractWrapper, Executor};
1313
use mantis_node::mantis::cosmos::{client::Tip, signer::from_mnemonic};
1414
use serde::de;
@@ -39,15 +39,15 @@ async fn cvm_devnet_case() {
3939
let cw_cvm_outpost_code_id = centauri.store_code(Box::new(cw_cvm_outpost_wasm));
4040
let cw_cvm_executor_code_id = centauri.store_code(Box::new(cw_cvm_executor_wasm));
4141

42-
let admin = Addr::unchecked("juno1g2rahf5846rxzp3fwlswy08fz8ccuwk03k57y");
42+
let sender = Addr::unchecked("juno1g2rahf5846rxzp3fwlswy08fz8ccuwk03k57y");
4343
let cw_cvm_outpost_instantiate = cw_cvm_outpost::msg::InstantiateMsg(HereItem {
4444
network_id: 3.into(),
45-
admin: admin.clone(),
45+
admin: sender.clone(),
4646
});
4747
let cw_cvm_outpost_contract = centauri
4848
.instantiate_contract(
4949
cw_cvm_outpost_code_id,
50-
admin.clone(),
50+
sender.clone(),
5151
&cw_cvm_outpost_instantiate,
5252
&[],
5353
"composable_cvm_outpost",
@@ -56,23 +56,21 @@ async fn cvm_devnet_case() {
5656
.unwrap();
5757

5858
let cw_mantis_order_instantiate = cw_mantis_order::sv::InstantiateMsg {
59-
admin: Some(admin.clone()),
59+
admin: Some(sender.clone()),
6060
cvm_address: cw_cvm_outpost_contract.clone(),
6161
};
6262

6363
let cw_mantis_contract = centauri
6464
.instantiate_contract(
6565
cw_mantis_order_code_id,
66-
admin,
66+
sender.clone(),
6767
&cw_mantis_order_instantiate,
6868
&[],
6969
"composable_mantis_order",
7070
None,
7171
)
7272
.unwrap();
7373

74-
let sender = Addr::unchecked("juno16g2rahf5846rxzp3fwlswy08fz8ccuwk03k57y");
75-
7674
let ACoin = |x: u128| Coin {
7775
denom: "a".to_string(),
7876
amount: x.into(),
@@ -102,7 +100,7 @@ async fn cvm_devnet_case() {
102100
owner: sender.clone(),
103101
msg: a_to_b_msg.clone(),
104102
given: ACoin(100),
105-
order_id: 1u128.into(),
103+
order_id: 0u128.into(),
106104
};
107105

108106
let b_to_a_msg = OrderSubMsg {
@@ -116,7 +114,7 @@ async fn cvm_devnet_case() {
116114
owner: sender.clone(),
117115
msg: b_to_a_msg.clone(),
118116
given: BCoin(1000),
119-
order_id: 2u128.into(),
117+
order_id: 1u128.into(),
120118
};
121119

122120
centauri
@@ -244,18 +242,66 @@ async fn cvm_devnet_case() {
244242

245243
let mut config_messages = vec![];
246244

247-
for network_item in cvm_glt {
248-
let config_message = cw_cvm_outpost::msg::ConfigSubMsg::ForceNetwork(network_item);
245+
for network in cvm_glt.networks.clone().into_iter() {
246+
let config_message = cw_cvm_outpost::msg::ConfigSubMsg::ForceNetwork(network);
247+
config_messages.push(config_message);
248+
}
249+
250+
for asset in cvm_glt.assets.clone().into_iter() {
251+
let config_message = cw_cvm_outpost::msg::ConfigSubMsg::ForceAsset(asset);
252+
config_messages.push(config_message);
253+
}
254+
255+
for network_to_network in cvm_glt.network_to_networks.clone().into_iter() {
256+
let config_message =
257+
cw_cvm_outpost::msg::ConfigSubMsg::ForceNetworkToNetwork(network_to_network);
258+
config_messages.push(config_message);
259+
}
260+
261+
for exchange in cvm_glt.exchanges.clone().into_iter() {
262+
let config_message = cw_cvm_outpost::msg::ConfigSubMsg::ForceExchange(exchange);
263+
config_messages.push(config_message);
264+
}
265+
266+
for asset_venue in cvm_glt.asset_venue_items.clone().into_iter() {
267+
let config_message = cw_cvm_outpost::msg::ConfigSubMsg::ForceAssetsVenue(asset_venue);
268+
config_messages.push(config_message);
269+
}
270+
271+
for network_asset in cvm_glt.network_assets.clone().into_iter() {
272+
let config_message =
273+
cw_cvm_outpost::msg::ConfigSubMsg::ForceAssetToNetworkMap(network_asset);
249274
config_messages.push(config_message);
250275
}
251276

252277
let force_config = cw_cvm_outpost::msg::ExecuteMsg::Config(
253278
cw_cvm_outpost::msg::ConfigSubMsg::Force(config_messages),
254279
);
255280

256-
let solution =
257-
mantis_node::mantis::blackbox::solve::<True>(active_orders, &alice, &tip, cvm_glt.into(), router)
258-
.await;
281+
centauri
282+
.execute_contract(
283+
sender.clone(),
284+
cw_cvm_outpost_contract.clone(),
285+
&force_config,
286+
&[],
287+
)
288+
.unwrap();
289+
290+
let solution = mantis_node::mantis::blackbox::solve::<True>(
291+
active_orders,
292+
&alice,
293+
&tip,
294+
cvm_glt.into(),
295+
router,
296+
)
297+
.await;
298+
299+
centauri.execute_contract(
300+
sender.clone(),
301+
cw_mantis_contract.clone(),
302+
&solution[0],
303+
&[],
304+
).unwrap();
259305

260306
panic!("solution: {:?}", solution);
261307
}

0 commit comments

Comments
 (0)