Skip to content

Commit 855c61a

Browse files
Merge #1145: fix(electrum): fixed chain sync issue
1010efd fix(electrum): fixed chain sync issue (Wei Chen) Pull request description: ### Description This may or may not fix #1125. Fixed what appeared to be a logic error in `construct_update_tip` in `electrum_ext.rs` that caused the local chain tip to always be a block behind the newest confirmed block. ### Checklists #### All Submissions: * [x] I've signed all my commits * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md) * [x] I ran `cargo fmt` and `cargo clippy` before committing #### Bugfixes: * [ ] This pull request breaks the existing API * [x] I've added tests to reproduce the issue which are now passing * [x] I'm linking the issue being fixed by this PR ACKs for top commit: danielabrozzoni: ACK 1010efd - although I've been able to reproduce the issue in #1125, I'm convinced that this PR fixes at least a bug, as demonstrated in #1171 (yet to be reviewed and merged). Tree-SHA512: 92790e9072d17be74d2cd24bec3503e1ad5d97f728ee81490eeb09ac3f8d4a3a7e8d9628e943bc801246d5bfd345152c11d5dbe25246f5a57b3118727d3ae315
2 parents 0a7b60f + 1010efd commit 855c61a

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

crates/electrum/src/electrum_ext.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ use std::{
1111
str::FromStr,
1212
};
1313

14-
/// We assume that a block of this depth and deeper cannot be reorged.
15-
const ASSUME_FINAL_DEPTH: u32 = 8;
14+
/// We include a chain suffix of a certain length for the purpose of robustness.
15+
const CHAIN_SUFFIX_LENGTH: u32 = 8;
1616

1717
/// Represents updates fetched from an Electrum server, but excludes full transactions.
1818
///
@@ -302,12 +302,12 @@ fn construct_update_tip(
302302
}
303303
}
304304

305-
// Atomically fetch the latest `ASSUME_FINAL_DEPTH` count of blocks from Electrum. We use this
305+
// Atomically fetch the latest `CHAIN_SUFFIX_LENGTH` count of blocks from Electrum. We use this
306306
// to construct our checkpoint update.
307307
let mut new_blocks = {
308-
let start_height = new_tip_height.saturating_sub(ASSUME_FINAL_DEPTH);
308+
let start_height = new_tip_height.saturating_sub(CHAIN_SUFFIX_LENGTH - 1);
309309
let hashes = client
310-
.block_headers(start_height as _, ASSUME_FINAL_DEPTH as _)?
310+
.block_headers(start_height as _, CHAIN_SUFFIX_LENGTH as _)?
311311
.headers
312312
.into_iter()
313313
.map(|h| h.block_hash());

0 commit comments

Comments
 (0)