1
0

Merge pull request #7142 from SomberNight/202103_fix_swap_amounts

swaps: revise send/recv amount calculation
This commit is contained in:
ghost43
2021-03-28 16:47:18 +00:00
committed by GitHub
4 changed files with 78 additions and 19 deletions

View File

@@ -726,7 +726,9 @@ class SwapDialog(Factory.Popup):
max_onchain_spend = 0
reverse = int(min(self.lnworker.num_sats_can_send(),
self.swap_manager.get_max_amount()))
forward = int(min(self.swap_manager.num_sats_can_receive(),
max_recv_amt_ln = int(self.swap_manager.num_sats_can_receive())
max_recv_amt_oc = self.swap_manager.get_send_amount(max_recv_amt_ln, is_reverse=False) or float('inf')
forward = int(min(max_recv_amt_oc,
# maximally supported swap amount by provider
self.swap_manager.get_max_amount(),
max_onchain_spend))

View File

@@ -126,8 +126,9 @@ class SwapDialog(WindowModalDialog):
if self.tx:
amount = self.tx.output_value_for_address(ln_dummy_address())
max_swap_amt = self.swap_manager.get_max_amount()
max_recv_amt = int(self.swap_manager.num_sats_can_receive())
max_amt = min(max_swap_amt, max_recv_amt)
max_recv_amt_ln = int(self.swap_manager.num_sats_can_receive())
max_recv_amt_oc = self.swap_manager.get_send_amount(max_recv_amt_ln, is_reverse=False) or float('inf')
max_amt = int(min(max_swap_amt, max_recv_amt_oc))
if amount > max_amt:
amount = max_amt
self._update_tx(amount)
@@ -145,7 +146,7 @@ class SwapDialog(WindowModalDialog):
return
self.send_amount_e.setStyleSheet(ColorScheme.DEFAULT.as_stylesheet())
send_amount = self.send_amount_e.get_amount()
recv_amount = self.swap_manager.get_recv_amount(send_amount, self.is_reverse)
recv_amount = self.swap_manager.get_recv_amount(send_amount, is_reverse=self.is_reverse)
if self.is_reverse and send_amount and send_amount > self.lnworker.num_sats_can_send():
# cannot send this much on lightning
recv_amount = None
@@ -166,7 +167,7 @@ class SwapDialog(WindowModalDialog):
return
self.recv_amount_e.setStyleSheet(ColorScheme.DEFAULT.as_stylesheet())
recv_amount = self.recv_amount_e.get_amount()
send_amount = self.swap_manager.get_send_amount(recv_amount, self.is_reverse)
send_amount = self.swap_manager.get_send_amount(recv_amount, is_reverse=self.is_reverse)
if self.is_reverse and send_amount and send_amount > self.lnworker.num_sats_can_send():
send_amount = None
self.send_amount_e.follows = True