From 5fad4bff8fef62d49e3be837591c1fc69f087439 Mon Sep 17 00:00:00 2001 From: SomberNight Date: Tue, 15 Jul 2025 22:35:21 +0000 Subject: [PATCH] verifier: fix off-by-one for max_checkpoint if a wallet had a tx mined in the max_checkpoint block, in certain cases we would leave it forever in the "unverified" state and remain stuck in "synchronizing..." --- electrum/lnverifier.py | 4 ++-- electrum/verifier.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/electrum/lnverifier.py b/electrum/lnverifier.py index 71d6606aa..dad87e647 100644 --- a/electrum/lnverifier.py +++ b/electrum/lnverifier.py @@ -101,8 +101,8 @@ class LNChannelVerifier(NetworkJobOnDefaultServer): continue header = blockchain.read_header(block_height) if header is None: - if block_height < constants.net.max_checkpoint(): - await self.taskgroup.spawn(self.network.request_chunk(block_height, can_return_early=True)) + if block_height <= constants.net.max_checkpoint(): + await self.taskgroup.spawn(self.interface.request_chunk(block_height, can_return_early=True)) continue self.started_verifying_channel.add(short_channel_id) await self.taskgroup.spawn(self.verify_channel(block_height, short_channel_id)) diff --git a/electrum/verifier.py b/electrum/verifier.py index f5f96ce3d..2e4de8f3b 100644 --- a/electrum/verifier.py +++ b/electrum/verifier.py @@ -86,7 +86,7 @@ class SPV(NetworkJobOnDefaultServer): # if it's in the checkpoint region, we still might not have the header header = self.blockchain.read_header(tx_height) if header is None: - if tx_height < constants.net.max_checkpoint(): + if tx_height <= constants.net.max_checkpoint(): # FIXME these requests are not counted (self._requests_sent += 1) await self.taskgroup.spawn(self.interface.request_chunk(tx_height, can_return_early=True)) continue