From 79f50f27f7e4da3b5b4b86b42a83a5cc95546476 Mon Sep 17 00:00:00 2001 From: tecnovert Date: Sat, 30 May 2026 22:54:14 +0200 Subject: [PATCH] fix: ui, display offer chain a feerate for reversed swaps --- basicswap/db.py | 5 +++-- basicswap/templates/offer.html | 2 +- basicswap/ui/page_offers.py | 22 ++++++++++++++-------- doc/release-notes.md | 5 +++++ 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/basicswap/db.py b/basicswap/db.py index d310f44..3498156 100644 --- a/basicswap/db.py +++ b/basicswap/db.py @@ -399,8 +399,9 @@ class XmrOffer(Table): swap_id = Column("integer", primary_key=True, autoincrement=True) offer_id = Column("blob") - a_fee_rate = Column("integer") # Chain a fee rate - b_fee_rate = Column("integer") # Chain b fee rate + # TODO: rename to from/to - values are not switched for reverse swaps + a_fee_rate = Column("integer") # Chain from fee rate + b_fee_rate = Column("integer") # Chain to fee rate # Delay before the chain a lock refund tx can be mined lock_time_1 = Column("integer") diff --git a/basicswap/templates/offer.html b/basicswap/templates/offer.html index 93cc370..c250945 100644 --- a/basicswap/templates/offer.html +++ b/basicswap/templates/offer.html @@ -224,7 +224,7 @@ Chain A local fee rate - {{ data.a_fee_rate_verify }} (Fee source: {{ data.a_fee_rate_verify_src }}{% if data.a_fee_warn == true %} WARNING {% endif %}) + {{ data.a_fee_rate_verify }} (Fee source: {{ data.a_fee_rate_verify_src }}{% if data.a_fee_warn == "high" %} WARNING - HIGH {% elif data.a_fee_warn == "low" %} WARNING - LOW {% elif data.a_fee_warn is defined %} WARNING {% endif %}) {% endif %} diff --git a/basicswap/ui/page_offers.py b/basicswap/ui/page_offers.py index 8daa8c6..48f33d9 100644 --- a/basicswap/ui/page_offers.py +++ b/basicswap/ui/page_offers.py @@ -768,24 +768,30 @@ def page_offer(self, url_split, post_string): ci_leader = ci_to if reverse_bid else ci_from if xmr_offer: - int_fee_rate_now, fee_source = ci_leader.get_fee_rate() + a_fee_rate_now, fee_source = ci_leader.get_fee_rate() + a_fee_rate_now = ci_leader.make_int(a_fee_rate_now) - data["xmr_type"] = True - data["a_fee_rate"] = ci_leader.format_amount(xmr_offer.a_fee_rate) - data["a_fee_rate_verify"] = ci_leader.format_amount( - int_fee_rate_now, conv_int=True + chain_a_fee_rate: int = ( + xmr_offer.b_fee_rate if reverse_bid else xmr_offer.a_fee_rate ) + data["xmr_type"] = True + data["a_fee_rate"] = ci_leader.format_amount(chain_a_fee_rate) + data["a_fee_rate_verify"] = ci_leader.format_amount(a_fee_rate_now) data["a_fee_rate_verify_src"] = fee_source - data["a_fee_warn"] = xmr_offer.a_fee_rate < int_fee_rate_now - from_fee_rate = xmr_offer.b_fee_rate if reverse_bid else xmr_offer.a_fee_rate + warning_threshold: float = 1.2 + if chain_a_fee_rate * warning_threshold < a_fee_rate_now: + data["a_fee_warn"] = "low" + elif chain_a_fee_rate > a_fee_rate_now * warning_threshold: + data["a_fee_warn"] = "high" + lock_spend_tx_vsize = ( ci_from.xmr_swap_b_lock_spend_tx_vsize() if reverse_bid else ci_from.xmr_swap_a_lock_spend_tx_vsize() ) lock_spend_tx_fee = ci_from.make_int( - from_fee_rate * lock_spend_tx_vsize / 1000, r=1 + chain_a_fee_rate * lock_spend_tx_vsize / 1000, r=1 ) data["amt_from_lock_spend_tx_fee"] = ci_from.format_amount( lock_spend_tx_fee // ci_from.COIN() diff --git a/doc/release-notes.md b/doc/release-notes.md index 3fc3035..dfd8417 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -13,6 +13,11 @@ - New setting "startup_delay" - Adjusts the time waited for coin daemons to start between "startup_tries". - Valid as a base setting and can be overridden per coin with chainclients settings. +- UI: + - offer page: + - Fixed feerate from other chain displayed for reversed swaps + - Added warning text for fee above 1.2 x local estimate. + 0.14.5