From 9e13246be845b4810f625a4986c03ec9d4b3c676 Mon Sep 17 00:00:00 2001 From: SomberNight Date: Tue, 9 May 2023 16:17:04 +0000 Subject: [PATCH] ledger: fix Ledger_Client_Legacy.sign_transaction() fix signing txs when using old "bitcoin app" (pre-2.1) on the ledger device ``` 33.36 | W | transaction | heyheyhey. cp1. include_sigs=True force_legacy=False use_segwit_ser=True 33.36 | W | transaction | heyheyhey. cp2. branch1 33.37 | E | plugins.ledger.ledger | Traceback (most recent call last): File "...\electrum\electrum\plugins\ledger\ledger.py", line 669, in sign_transaction rawTx = tx.serialize_to_network() File "...\electrum\electrum\transaction.py", line 945, in serialize_to_network witness = ''.join(self.serialize_witness(x, estimate_size=estimate_size) for x in inputs) File "...\electrum\electrum\transaction.py", line 945, in witness = ''.join(self.serialize_witness(x, estimate_size=estimate_size) for x in inputs) File "...\electrum\electrum\transaction.py", line 839, in serialize_witness sol = desc.satisfy(allow_dummy=estimate_size, sigdata=txin.part_sigs) File "...\electrum\electrum\descriptor.py", line 378, in satisfy sol = self._satisfy_inner(sigdata=sigdata, allow_dummy=allow_dummy) File "...\electrum\electrum\descriptor.py", line 574, in _satisfy_inner raise MissingSolutionPiece(f"no sig for {pubkey.hex()}") electrum.descriptor.MissingSolutionPiece: no sig for 033e92e55923ea25809790f292ee9bd410355ee02492472d9a1ff1b364874d0679 33.38 | I | plugins.ledger.ledger | no sig for 033e92e55923ea25809790f292ee9bd410355ee02492472d9a1ff1b364874d0679 ``` fixes https://github.com/spesmilo/electrum/issues/8365 regression from https://github.com/spesmilo/electrum/pull/8230 --- electrum/plugins/ledger/ledger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrum/plugins/ledger/ledger.py b/electrum/plugins/ledger/ledger.py index 9c09599b0..950297229 100644 --- a/electrum/plugins/ledger/ledger.py +++ b/electrum/plugins/ledger/ledger.py @@ -666,7 +666,7 @@ class Ledger_Client_Legacy(Ledger_Client): # Sign all inputs firstTransaction = True inputIndex = 0 - rawTx = tx.serialize_to_network() + rawTx = tx.serialize_to_network(include_sigs=False) if self.is_hw1(): self.dongleObject.enableAlternate2fa(False) if segwitTransaction: