URI: 
       tledger: faster sign_transaction startup - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit ee63e84bcfbc8d5861521367ca0b44c3aa411871
   DIR parent 6b8c447eb90a0a37f7271681e98f319c8178592a
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Tue, 17 Dec 2019 21:19:57 +0100
       
       ledger: faster sign_transaction startup
       
       Only call Ledger_KeyStore.get_client_electrum() once,
       as it runs DeviceMgr.scan_devices(), which is slow.
       
       Diffstat:
         M electrum/plugins/ledger/ledger.py   |      10 ++++++----
       
       1 file changed, 6 insertions(+), 4 deletions(-)
       ---
   DIR diff --git a/electrum/plugins/ledger/ledger.py b/electrum/plugins/ledger/ledger.py
       t@@ -325,6 +325,8 @@ class Ledger_KeyStore(Hardware_KeyStore):
                segwitTransaction = False
                pin = ""
                self.get_client() # prompt for the PIN before displaying the dialog if necessary
       +        client_electrum = self.get_client_electrum()
       +        assert client_electrum
        
                # Fetch inputs of the transaction to sign
                for txin in tx.inputs():
       t@@ -335,12 +337,12 @@ class Ledger_KeyStore(Hardware_KeyStore):
                        p2shTransaction = True
        
                    if txin.script_type in ['p2wpkh-p2sh', 'p2wsh-p2sh']:
       -                if not self.get_client_electrum().supports_segwit():
       +                if not client_electrum.supports_segwit():
                            self.give_error(MSG_NEEDS_FW_UPDATE_SEGWIT)
                        segwitTransaction = True
        
                    if txin.script_type in ['p2wpkh', 'p2wsh']:
       -                if not self.get_client_electrum().supports_native_segwit():
       +                if not client_electrum.supports_native_segwit():
                            self.give_error(MSG_NEEDS_FW_UPDATE_SEGWIT)
                        segwitTransaction = True
        
       t@@ -381,14 +383,14 @@ class Ledger_KeyStore(Hardware_KeyStore):
                # - only one output and one change is authorized (for hw.1 and nano)
                # - at most one output can bypass confirmation (~change) (for all)
                if not p2shTransaction:
       -            if not self.get_client_electrum().supports_multi_output():
       +            if not client_electrum.supports_multi_output():
                        if len(tx.outputs()) > 2:
                            self.give_error("Transaction with more than 2 outputs not supported")
                    has_change = False
                    any_output_on_change_branch = is_any_tx_output_on_change_branch(tx)
                    for txout in tx.outputs():
                        if not txout.address:
       -                    if self.get_client_electrum().is_hw1():
       +                    if client_electrum.is_hw1():
                                self.give_error(_("Only address outputs are supported by {}").format(self.device))
                            # note: max_size based on https://github.com/LedgerHQ/ledger-app-btc/commit/3a78dee9c0484821df58975803e40d58fbfc2c38#diff-c61ccd96a6d8b54d48f54a3bc4dfa7e2R26
                            validate_op_return_output(txout, max_size=190)