Skip to content

Commit 0f1ba0c

Browse files
committed
edit filled order
1 parent a0dce4d commit 0f1ba0c

File tree

1 file changed

+22
-7
lines changed
  • pallets/hybrid-orderbook/src

1 file changed

+22
-7
lines changed

pallets/hybrid-orderbook/src/lib.rs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -936,6 +936,7 @@ pub mod pallet {
936936

937937
fn handle_filled_orders(
938938
is_bid: bool,
939+
pool: &Pool<T>,
939940
base_asset: T::AssetKind,
940941
quote_asset: T::AssetKind,
941942
orderer: &T::AccountId,
@@ -953,7 +954,11 @@ pub mod pallet {
953954
// Release amount would be different based on `is_bid`. If it is bid order, `q`
954955
// amount of base asset would be released. While if it is ask order, `p*q` amount of
955956
// quote asset would be released.
956-
let released = if is_bid { q } else { p * q };
957+
let released = if is_bid { q } else {
958+
let r: T::Unit = p * q;
959+
let (p_adj, _, q_adj) = pool.decimal_adjustment();
960+
r.denom(p_adj.unwrap_or(0) + q_adj.unwrap_or(0))
961+
};
957962
// 1. Release the frozen asset
958963
T::AssetsFreezer::decrease_frozen(
959964
asset1.clone(),
@@ -963,8 +968,16 @@ pub mod pallet {
963968
)?;
964969
// 2. Transfer assets between orderer and owner of limit order
965970
let (transfer1, transfer2) = if is_bid { (q, released) } else { (released, q) };
966-
T::Assets::transfer(asset1.clone(), &owner, orderer, transfer1, Preserve)?;
967-
T::Assets::transfer(asset2.clone(), orderer, &owner, transfer2, Preserve)?;
971+
T::Assets::transfer(asset1.clone(), &owner, &orderer, transfer1, Preserve)?;
972+
T::Assets::transfer(asset2.clone(), &orderer, &owner, transfer2, Preserve)?;
973+
log::debug!(target: LOG_TARGET, "HandleFilledOrder {:?} {:?} {:?} {:?} {:?} {:?}",
974+
orderer,
975+
transfer1,
976+
transfer2,
977+
owner,
978+
transfer2,
979+
transfer1,
980+
);
968981
}
969982

970983
Ok(())
@@ -1224,6 +1237,7 @@ pub mod pallet {
12241237
}
12251238
Self::handle_filled_orders(
12261239
is_bid,
1240+
&pool,
12271241
base_asset.clone(),
12281242
quote_asset.clone(),
12291243
orderer,
@@ -1362,24 +1376,25 @@ pub mod pallet {
13621376
}
13631377
// Narrow it down if it is not equal to target price
13641378
let one: T::Unit = One::one();
1379+
let one_normalized = one.normalize(Some(pool.base_decimals));
13651380
if pool_price < target {
13661381
// 'pool_price' should become bigger
13671382
if is_bid {
13681383
// If it is bid order, more base assets should be swapped out
1369-
min = mid + one.normalize(Some(pool.base_decimals));
1384+
min = mid + one_normalized;
13701385
} else {
13711386
// If it is ask order, less base assets should be swapped in
1372-
max = mid - one.normalize(Some(pool.base_decimals));
1387+
max = mid - one_normalized;
13731388
}
13741389
swap_quantity = mid;
13751390
} else {
13761391
// 'pool_price' should become smaller
13771392
if is_bid {
13781393
// If it is bid order, less base assets should be swapped out
1379-
max = mid - One::one();
1394+
max = mid - one_normalized;
13801395
} else {
13811396
// If it is ask order, more base assets should be swapped in
1382-
min = mid + One::one();
1397+
min = mid + one_normalized;
13831398
}
13841399
}
13851400
}

0 commit comments

Comments
 (0)