commit ee63e84bcfbc8d5861521367ca0b44c3aa411871
parent 6b8c447eb90a0a37f7271681e98f319c8178592a
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:
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/electrum/plugins/ledger/ledger.py b/electrum/plugins/ledger/ledger.py
@@ -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():
@@ -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
@@ -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)