URI: 
       twallet: minor clean-up of tx.set_rbf() calls - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 914eb9989d3a595ba4ee3889aa9f171551e50091
   DIR parent ca86e3572442d294674cb2c252a1540a15344ebe
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Thu, 11 Feb 2021 21:52:34 +0100
       
       wallet: minor clean-up of tx.set_rbf() calls
       
       Better to always call it, to make sure inputs have identical sequence numbers.
       
       Diffstat:
         M electrum/gui/kivy/uix/dialogs/tx_d… |       3 +--
         M electrum/gui/qt/confirm_tx_dialog.… |       3 +--
         M electrum/gui/qt/main_window.py      |       4 +---
         M electrum/transaction.py             |       3 ++-
         M electrum/wallet.py                  |      13 +++++++------
       
       5 files changed, 12 insertions(+), 14 deletions(-)
       ---
   DIR diff --git a/electrum/gui/kivy/uix/dialogs/tx_dialog.py b/electrum/gui/kivy/uix/dialogs/tx_dialog.py
       t@@ -282,8 +282,7 @@ class TxDialog(Factory.Popup):
                except CannotBumpFee as e:
                    self.app.show_error(str(e))
                    return
       -        if is_final:
       -            new_tx.set_rbf(False)
       +        new_tx.set_rbf(not is_final)
                self.tx = new_tx
                self.update()
                self.do_sign()
   DIR diff --git a/electrum/gui/qt/confirm_tx_dialog.py b/electrum/gui/qt/confirm_tx_dialog.py
       t@@ -111,8 +111,7 @@ class TxEditor:
                    self.main_window.show_error(str(e))
                    raise
                use_rbf = bool(self.config.get('use_rbf', True))
       -        if use_rbf:
       -            self.tx.set_rbf(True)
       +        self.tx.set_rbf(use_rbf)
        
            def have_enough_funds_assuming_zero_fees(self) -> bool:
                try:
   DIR diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py
       t@@ -3242,7 +3242,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
                except CannotCPFP as e:
                    self.show_error(str(e))
                    return
       -        new_tx.set_rbf(True)
                self.show_transaction(new_tx)
        
            def _add_info_to_tx_from_wallet_and_network(self, tx: PartialTransaction) -> bool:
       t@@ -3329,8 +3328,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
                except Exception as e:
                    self.show_error(str(e))
                    return
       -        if is_final:
       -            new_tx.set_rbf(False)
       +        new_tx.set_rbf(not is_final)
                self.show_transaction(new_tx, tx_desc=tx_label)
        
            def bump_fee_dialog(self, tx: Transaction):
   DIR diff --git a/electrum/transaction.py b/electrum/transaction.py
       t@@ -864,7 +864,8 @@ class Transaction:
            def add_info_from_wallet(self, wallet: 'Abstract_Wallet', **kwargs) -> None:
                return  # no-op
        
       -    def is_final(self):
       +    def is_final(self) -> bool:
       +        """Whether RBF is disabled."""
                return not any([txin.nsequence < 0xffffffff - 1 for txin in self.inputs()])
        
            def estimated_size(self):
   DIR diff --git a/electrum/wallet.py b/electrum/wallet.py
       t@@ -195,9 +195,8 @@ async def sweep(
                locktime = get_locktime_for_new_transaction(network)
        
            tx = PartialTransaction.from_io(inputs, outputs, locktime=locktime, version=tx_version)
       -    rbf = config.get('use_rbf', True)
       -    if rbf:
       -        tx.set_rbf(True)
       +    rbf = bool(config.get('use_rbf', True))
       +    tx.set_rbf(rbf)
            tx.sign(keypairs)
            return tx
        
       t@@ -1303,6 +1302,7 @@ class Abstract_Wallet(AddressSynchronizer, ABC):
                # Timelock tx to current height.
                tx.locktime = get_locktime_for_new_transaction(self.network)
        
       +        tx.set_rbf(False)  # caller can set RBF manually later
                tx.add_info_from_wallet(self)
                run_hook('make_unsigned_transaction', self, tx)
                return tx
       t@@ -1606,6 +1606,7 @@ class Abstract_Wallet(AddressSynchronizer, ABC):
                outputs = [PartialTxOutput.from_address_and_value(out_address, output_value)]
                locktime = get_locktime_for_new_transaction(self.network)
                tx_new = PartialTransaction.from_io(inputs, outputs, locktime=locktime)
       +        tx_new.set_rbf(True)
                tx_new.add_info_from_wallet(self)
                return tx_new
        
       t@@ -1656,6 +1657,7 @@ class Abstract_Wallet(AddressSynchronizer, ABC):
                    raise CannotDoubleSpendTx(_("The output value remaining after fee is too low."))
                outputs = [PartialTxOutput.from_address_and_value(out_address, value - new_fee)]
                tx_new = PartialTransaction.from_io(inputs, outputs, locktime=locktime)
       +        tx_new.set_rbf(True)
                tx_new.add_info_from_wallet(self)
                return tx_new
        
       t@@ -2301,9 +2303,8 @@ class Abstract_Wallet(AddressSynchronizer, ABC):
                if locktime is not None:
                    tx.locktime = locktime
                if rbf is None:
       -            rbf = self.config.get('use_rbf', True)
       -        if rbf:
       -            tx.set_rbf(True)
       +            rbf = bool(self.config.get('use_rbf', True))
       +        tx.set_rbf(rbf)
                if not unsigned:
                    self.sign_transaction(tx, password)
                return tx