From 8808ea7a6dba02316f44a4e689e1f03a107ef875 Mon Sep 17 00:00:00 2001 From: shamardy Date: Thu, 17 Nov 2022 15:09:28 +0200 Subject: [PATCH] use orderbook ticker instead of ticker to calculate swap locktimes --- mm2src/mm2_main/src/lp_ordermatch.rs | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/mm2src/mm2_main/src/lp_ordermatch.rs b/mm2src/mm2_main/src/lp_ordermatch.rs index d1d6b1311c..c802dd93fa 100644 --- a/mm2src/mm2_main/src/lp_ordermatch.rs +++ b/mm2src/mm2_main/src/lp_ordermatch.rs @@ -1604,6 +1604,22 @@ impl TakerOrder { fn rel_orderbook_ticker(&self) -> &str { self.rel_orderbook_ticker.as_deref().unwrap_or(&self.request.rel) } + /// Returns the orderbook ticker of the taker coin + fn taker_orderbook_ticker(&self) -> &str { + match self.request.action { + TakerAction::Buy => self.rel_orderbook_ticker(), + TakerAction::Sell => self.base_orderbook_ticker(), + } + } + + /// Returns the orderbook ticker of the maker coin + fn maker_orderbook_ticker(&self) -> &str { + match self.request.action { + TakerAction::Buy => self.base_orderbook_ticker(), + TakerAction::Sell => self.rel_orderbook_ticker(), + } + } + fn orderbook_topic(&self) -> String { orderbook_topic_from_base_rel(self.base_orderbook_ticker(), self.rel_orderbook_ticker()) } @@ -2878,7 +2894,11 @@ fn lp_connect_start_bob(ctx: MmArc, maker_match: MakerMatch, maker_order: MakerO }, None => AtomicLocktimeVersion::V1, }; - let lock_time = lp_atomic_locktime(maker_coin.ticker(), taker_coin.ticker(), atomic_locktime_v); + let lock_time = lp_atomic_locktime( + maker_order.base_orderbook_ticker(), + maker_order.rel_orderbook_ticker(), + atomic_locktime_v, + ); log_tag!( ctx, ""; @@ -2972,7 +2992,11 @@ fn lp_connected_alice(ctx: MmArc, taker_order: TakerOrder, taker_match: TakerMat }, None => AtomicLocktimeVersion::V1, }; - let locktime = lp_atomic_locktime(maker_coin.ticker(), taker_coin.ticker(), atomic_locktime_v); + let locktime = lp_atomic_locktime( + taker_order.maker_orderbook_ticker(), + taker_order.taker_orderbook_ticker(), + atomic_locktime_v, + ); log_tag!( ctx, "";