Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: some changes and TODO requests #51

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 15 additions & 22 deletions contracts/ics101/src/contract.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use std::ops::{Div, Mul};
use std::vec;

#[cfg(not(feature = "library"))]
use cosmwasm_std::entry_point;
Expand Down Expand Up @@ -222,9 +221,9 @@ fn make_pool(
let pool_id = get_pool_id_with_tokens(&tokens, msg.source_chain_id.clone(), msg.destination_chain_id.clone());

TEMP.save(deps.storage, &pool_id)?;

// load pool throw error if not found
let interchain_pool_temp = POOLS.may_load(deps.storage,&pool_id)?;
if let Some(_pool) = interchain_pool_temp {
if POOLS.has(deps.storage,&pool_id) {
return Err(ContractError::Std(StdError::generic_err(format!(
"Pool already exists"
))));
Expand Down Expand Up @@ -416,6 +415,9 @@ fn take_pool(
state_change: None,
};

// TODO: counter_party_channel is just make pool message channel.
// When source channel and counter_party_channel is different, it trigger issues.
DedicatedDev marked this conversation as resolved.
Show resolved Hide resolved
// Because of that, go version expose channel as a parameter in msg.
DedicatedDev marked this conversation as resolved.
Show resolved Hide resolved
let ibc_msg = IbcMsg::SendPacket {
channel_id: interchain_pool.counter_party_channel.clone(),
data: to_binary(&ibc_packet_data)?,
Expand Down Expand Up @@ -528,7 +530,7 @@ pub fn single_asset_deposit(

// Create the interchain market maker (amm).
let amm = InterchainMarketMaker {
pool_id: pool_id.clone(),
// pool_id: pool_id.clone(),
pool: pool.clone(),
fee_rate: pool.swap_fee,
};
Expand All @@ -555,6 +557,7 @@ pub fn single_asset_deposit(
};

// Send the IBC swap packet.
// TODO: same issue about counter_party_channel.
let ibc_msg = IbcMsg::SendPacket {
channel_id: pool.counter_party_channel.clone(),
data: to_binary(&packet_data)?,
Expand Down Expand Up @@ -617,7 +620,6 @@ fn make_multi_asset_deposit(

// Create the interchain market maker
let amm = InterchainMarketMaker {
pool_id: interchain_pool.clone().id,
pool: interchain_pool.clone(),
fee_rate: interchain_pool.swap_fee,
};
Expand All @@ -629,9 +631,10 @@ fn make_multi_asset_deposit(
])?;

let mut config = CONFIG.load(deps.storage)?;

let mut multi_asset_order = MultiAssetDepositOrder {
id: "".to_string(),
config.counter = config.counter + 1;

let multi_asset_order = MultiAssetDepositOrder {
id: get_order_id(msg.deposits[0].sender.clone(), config.counter).to_string(),
chain_id: msg.chain_id.clone(),
pool_id: msg.pool_id.clone(),
source_maker: msg.deposits[0].sender.clone(),
Expand All @@ -646,14 +649,6 @@ fn make_multi_asset_deposit(
// check for order, if exist throw error.

let ac_key = msg.deposits[0].sender.clone() + "-" + &msg.pool_id.clone() + "-" + &msg.deposits[1].sender.clone();
// let multi_asset_order_temp = ACTIVE_ORDERS.may_load(deps.storage, ac_key.clone())?;

// if let Some(_order) = multi_asset_order_temp {
// return Err(ContractError::ErrPreviousOrderNotCompleted);
// }
config.counter = config.counter + 1;
multi_asset_order.id = get_order_id(msg.deposits[0].sender.clone(), config.counter);
//}

// save order in source chain
let key = msg.pool_id.clone() + "-" + &multi_asset_order.id.clone().to_string();
Expand All @@ -676,6 +671,7 @@ fn make_multi_asset_deposit(
state_change: Some(state_change_data),
};

// TODO: counter_party_channel is not same with source channel information.
let ibc_msg = IbcMsg::SendPacket {
channel_id: interchain_pool.clone().counter_party_channel,
data: to_binary(&packet_data)?,
Expand Down Expand Up @@ -734,6 +730,7 @@ fn cancel_multi_asset_deposit(
state_change: None,
};

// TODO: same problem.
let ibc_msg = IbcMsg::SendPacket {
channel_id: interchain_pool.clone().counter_party_channel,
data: to_binary(&packet_data)?,
Expand Down Expand Up @@ -806,7 +803,6 @@ fn take_multi_asset_deposit(
// find number of tokens to be minted
// Create the interchain market maker (amm).
let amm = InterchainMarketMaker {
pool_id: msg.pool_id.clone(),
pool: interchain_pool.clone(),
fee_rate: interchain_pool.swap_fee,
};
Expand Down Expand Up @@ -888,7 +884,6 @@ fn multi_asset_withdraw(

// Create the interchain market maker
let amm = InterchainMarketMaker {
pool_id: interchain_pool.clone().id,
pool: interchain_pool.clone(),
fee_rate: interchain_pool.swap_fee,
};
Expand Down Expand Up @@ -990,7 +985,6 @@ fn swap(

// Create the interchain market maker
let amm = InterchainMarketMaker {
pool_id: interchain_pool.clone().id,
pool: interchain_pool.clone(),
fee_rate: interchain_pool.swap_fee,
};
Expand Down Expand Up @@ -1254,7 +1248,7 @@ fn query_left_swap(

// Create the interchain market maker
let amm = InterchainMarketMaker {
pool_id: interchain_pool.clone().id,
//pool_id: interchain_pool.clone().id,
pool: interchain_pool.clone(),
fee_rate: interchain_pool.swap_fee,
};
Expand Down Expand Up @@ -1289,7 +1283,7 @@ fn query_right_swap(

// Create the interchain market maker
let amm = InterchainMarketMaker {
pool_id: interchain_pool.clone().id,
//pool_id: interchain_pool.clone().id,
pool: interchain_pool.clone(),
fee_rate: interchain_pool.swap_fee,
};
Expand Down Expand Up @@ -1332,7 +1326,6 @@ fn query_rate(deps: Deps, pool_id: String, amount: Uint128) -> StdResult<Vec<Coi

// Create the interchain market maker
let amm = InterchainMarketMaker {
pool_id: interchain_pool.clone().id,
pool: interchain_pool.clone(),
fee_rate: interchain_pool.swap_fee,
};
Expand Down
15 changes: 7 additions & 8 deletions contracts/ics101/src/interchainswap_handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -125,12 +125,11 @@ pub(crate) fn on_received_make_pool(
let pool_id = get_pool_id_with_tokens(&tokens, msg.source_chain_id.clone(), msg.destination_chain_id.clone());

//load pool throw error if found
let interchain_pool_temp = POOLS.may_load(deps.storage, &pool_id.clone())?;
if let Some(_pool) = interchain_pool_temp {
return Err(ContractError::Std(StdError::generic_err(format!(
"Pool already exists"
))));
}
if POOLS.has(deps.storage, &pool_id.clone()) {
return Err(ContractError::Std(StdError::generic_err(format!(
"Pool already exists"
))));
};

let mut liquidity = vec![];
for mut asset in msg.liquidity {
Expand Down Expand Up @@ -195,7 +194,7 @@ pub(crate) fn on_received_take_pool(
// find number of tokens to be minted
// Create the interchain market maker (amm).
let amm = InterchainMarketMaker {
pool_id: msg.pool_id.clone(),
//pool_id: msg.pool_id.clone(),
pool: interchain_pool.clone(),
fee_rate: interchain_pool.swap_fee,
};
Expand Down Expand Up @@ -624,7 +623,7 @@ pub(crate) fn on_packet_success(
// find number of tokens to be minted
// Create the interchain market maker (amm).
let amm = InterchainMarketMaker {
pool_id: msg.pool_id.clone(),
//pool_id: msg.pool_id.clone(),
pool: interchain_pool.clone(),
fee_rate: interchain_pool.swap_fee,
};
Expand Down
2 changes: 0 additions & 2 deletions contracts/ics101/src/market.rs
Original file line number Diff line number Diff line change
Expand Up @@ -128,15 +128,13 @@ impl InterchainLiquidityPool {

#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
pub struct InterchainMarketMaker {
pub pool_id: String,
pub pool: InterchainLiquidityPool,
pub fee_rate: u32,
}

impl InterchainMarketMaker {
pub fn new(pool_data: &InterchainLiquidityPool, fee_rate: u32) -> Self {
InterchainMarketMaker {
pool_id: pool_data.clone().id,
pool: pool_data.clone(),
fee_rate,
}
Expand Down