Skip to content

Commit

Permalink
added venues notion as needed for router
Browse files Browse the repository at this point in the history
  • Loading branch information
dzmitry-lahoda committed Apr 7, 2024
1 parent 61dc8c0 commit 61f7e49
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 6 deletions.
1 change: 1 addition & 0 deletions crates/cvm-route/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ pub mod asset;
pub mod exchange;
mod prelude;
pub mod transport;
pub mod venue;
use cvm::asset::*;
use cvm::exchange::*;
use cvm::network::*;
28 changes: 28 additions & 0 deletions crates/cvm-route/src/venue.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
//! expresses asset transformation regardless of way transforamtion is done

use crate::prelude::*;
use cvm::{exchange::ExchangeId, AssetId};

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
#[cfg_attr(
feature = "json-schema", // all(feature = "json-schema", not(target_arch = "wasm32")),
derive(schemars::JsonSchema)
)]
#[serde(rename_all = "snake_case")]
pub enum VenueId {
Exchange(ExchangeId),
Transfer,
}

/// assets which can be transomed into each other via venue
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
#[cfg_attr(
feature = "json-schema", // all(feature = "json-schema", not(target_arch = "wasm32")),
derive(schemars::JsonSchema)
)]
#[serde(rename_all = "snake_case")]
pub struct AssetsVenueItem {
pub venue_id: VenueId,
pub from_asset_id: AssetId,
pub to_asset_id : AssetId,
}
6 changes: 5 additions & 1 deletion crates/cvm-runtime/src/outpost/config.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#[cfg(feature = "cosmwasm")]
use cosmwasm_std::{BlockInfo, IbcTimeout};

use cvm_route::{
asset::AssetToNetwork, exchange::ExchangeItem, transport::NetworkToNetworkItem, *,
asset::AssetToNetwork, exchange::ExchangeItem, transport::NetworkToNetworkItem, venue::AssetsVenueItem, *
};
use ibc_core_host_types::identifiers::ChannelId;

Expand Down Expand Up @@ -126,6 +128,8 @@ pub enum ConfigSubMsg {
#[serde(skip_serializing_if = "String::is_empty", default)]
salt: String,
},

ForceAssetsVenue(AssetsVenueItem),
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
Expand Down
20 changes: 16 additions & 4 deletions crates/cvm-runtime/src/outpost/query.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
use crate::{prelude::*, AssetId, ExchangeId, NetworkId};

use cvm_route::{
asset::{AssetItem, AssetReference, NetworkAssetItem},
exchange::ExchangeItem,
transport::NetworkToNetworkItem,
*,
asset::{AssetItem, AssetReference, NetworkAssetItem}, exchange::ExchangeItem, transport::NetworkToNetworkItem, venue::AssetsVenueItem, *
};

use super::NetworkItem;
Expand Down Expand Up @@ -111,6 +108,7 @@ pub struct GetConfigResponse {
pub exchanges: Vec<ExchangeItem>,
pub networks: Vec<NetworkItem>,
pub network_assets: Vec<NetworkAssetItem>,
pub asset_venue_items : Vec<AssetsVenueItem>,
}

impl GetConfigResponse {
Expand All @@ -133,4 +131,18 @@ impl GetConfigResponse {
pub fn get_all_asset_ids(&self) -> Vec<AssetId> {
self.assets.iter().map(|x| x.asset_id).collect()
}

pub fn get_all_asset_maps(&self) -> Vec<(AssetId, AssetId)> {
let transfers = self
.network_assets
.iter()
// CVM GLT has 2 entires for each direction for bidirectional transfers
.map(|x| (x.asset_id, x.to_asset_id));
let exchanges = self
.asset_venue_items
.iter()
.map(|x| (x.from_asset_id, x.to_asset_id));

transfers.chain(exchanges).collect()
}
}
2 changes: 2 additions & 0 deletions crates/cvm/src/prelude.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ pub use alloc::{
};

pub use core::{fmt::Display, str::FromStr};

#[cfg(feature = "cosmwasm")]
pub use cosmwasm_std::{Addr, Binary, Coin, Uint128};
pub use serde::{Deserialize, Serialize};

Expand Down
2 changes: 1 addition & 1 deletion mantis/node/src/mantis/blackbox/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ pub async fn get_route(
salt: &[u8],
) -> CvmProgram {
if route_provider == "solver" {
panic!();
panic!()
bf::route(input, cvm_glt, salt);
} else {
let blackbox: Client = Client::new(route_provider);
Expand Down

0 comments on commit 61f7e49

Please sign in to comment.