From fef6fc54c92e95c942b945e529f724a7301b7c37 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Thu, 14 Nov 2024 10:18:07 +0100 Subject: [PATCH] lnwatcher: do not keep watching channel because of non-existing outputs. fixes #9299 --- electrum/lnwatcher.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/electrum/lnwatcher.py b/electrum/lnwatcher.py index b250269a1..992cb1fd7 100644 --- a/electrum/lnwatcher.py +++ b/electrum/lnwatcher.py @@ -447,6 +447,10 @@ class LNWalletWatcher(LNWatcher): keep_watching = False if sweep_info_dict else not self.is_deeply_mined(closing_tx.txid()) # create and broadcast transaction for prevout, sweep_info in sweep_info_dict.items(): + prev_txid, prev_index = prevout.split(':') + if not self.adb.get_transaction(prev_txid): + # do not keep watching if prevout does not exist + continue name = sweep_info.name + ' ' + chan.get_id_for_log() spender_txid = spenders.get(prevout) spender_tx = self.adb.get_transaction(spender_txid) if spender_txid else None @@ -461,7 +465,7 @@ class LNWalletWatcher(LNWatcher): keep_watching = True await self.maybe_redeem(spenders, spender_txid+':0', e_htlc_tx, name) else: - keep_watching |= not self.is_deeply_mined(spender_tx.txid()) + keep_watching |= not self.is_deeply_mined(spender_txid) txin_idx = spender_tx.get_input_idx_that_spent_prevout(TxOutpoint.from_str(prevout)) assert txin_idx is not None spender_txin = spender_tx.inputs()[txin_idx]