Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# 0.1.9 - Jan 26, 2026 - "Electrum Confirmations"

## Bug Fixes
* The presence of unconfirmed transactions no longer causes
`ElectrumSyncClient` to spuriously fail to sync (#4341).

# 0.1.8 - Dec 2, 2025 - "Async Update Completion"

## Bug Fixes
Expand Down
13 changes: 13 additions & 0 deletions ci/ci-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,18 @@ function PIN_RELEASE_DEPS {
# Starting with version 1.39.0, the `tokio` crate has an MSRV of rustc 1.70.0
[ "$RUSTC_MINOR_VERSION" -lt 70 ] && cargo update -p tokio --precise "1.38.1" --verbose

# Starting with version 1.0.104, the `proc-macro2` crate has an MSRV of rustc 1.68
[ "$RUSTC_MINOR_VERSION" -lt 68 ] && cargo update -p proc-macro2 --precise "1.0.103" --verbose

# Starting with version 1.0.146, the `serde_json` crate has an MSRV of rustc 1.68
[ "$RUSTC_MINOR_VERSION" -lt 68 ] && cargo update -p serde_json --precise "1.0.145" --verbose

# Starting with version 1.0.16, the `itoa` crate has an MSRV of rustc 1.68
[ "$RUSTC_MINOR_VERSION" -lt 68 ] && cargo update -p itoa --precise "1.0.15" --verbose

# Starting with version 1.0.21, the `ryu` crate has an MSRV of rustc 1.68
[ "$RUSTC_MINOR_VERSION" -lt 68 ] && cargo update -p ryu --precise "1.0.20" --verbose

return 0 # Don't fail the script if our rustc is higher than the last check
}

Expand Down Expand Up @@ -62,6 +74,7 @@ pushd lightning-tests
[ "$RUSTC_MINOR_VERSION" -lt 68 ] && cargo update -p syn --precise "2.0.106" --verbose
[ "$RUSTC_MINOR_VERSION" -lt 68 ] && cargo update -p quote --precise "1.0.41" --verbose
[ "$RUSTC_MINOR_VERSION" -lt 65 ] && cargo update -p regex --precise "1.9.6" --verbose
[ "$RUSTC_MINOR_VERSION" -lt 68 ] && cargo update -p proc-macro2 --precise "1.0.103" --verbose
cargo test
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
popd
Expand Down
3 changes: 3 additions & 0 deletions ci/ci-tx-sync-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ PIN_RELEASE_DEPS # pin the release dependencies
# Starting with version 1.2.0, the `idna_adapter` crate has an MSRV of rustc 1.81.0.
[ "$RUSTC_MINOR_VERSION" -lt 81 ] && cargo update -p idna_adapter --precise "1.1.0" --verbose

# Starting with version 2.12.1, the `indexmap` crate has an MSRV of rustc 1.82.
[ "$RUSTC_MINOR_VERSION" -lt 82 ] && cargo update -p indexmap --precise "2.11.4" --verbose

export RUST_BACKTRACE=1

echo -e "\n\nChecking Transaction Sync Clients with features."
Expand Down
2 changes: 1 addition & 1 deletion lightning-transaction-sync/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "lightning-transaction-sync"
version = "0.1.0"
version = "0.1.9"
authors = ["Elias Rohrer"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/lightningdevkit/rust-lightning"
Expand Down
14 changes: 13 additions & 1 deletion lightning-transaction-sync/src/electrum.rs
Original file line number Diff line number Diff line change
Expand Up @@ -336,17 +336,29 @@ where
script_history.iter().filter(|h| h.tx_hash == **txid);
if let Some(history) = filtered_history.next() {
let prob_conf_height = history.height as u32;
if prob_conf_height <= 0 {
// Skip if it's a an unconfirmed entry.
continue;
}
let confirmed_tx = self.get_confirmed_tx(tx, prob_conf_height)?;
confirmed_txs.push(confirmed_tx);
}
debug_assert!(filtered_history.next().is_none());
if filtered_history.next().is_some() {
log_error!(
self.logger,
"Failed due to server returning multiple history entries for Tx {}.",
txid
);
return Err(InternalError::Failed);
}
}

for (watched_output, script_history) in
sync_state.watched_outputs.values().zip(output_results)
{
for possible_output_spend in script_history {
if possible_output_spend.height <= 0 {
// Skip if it's a an unconfirmed entry.
continue;
}

Expand Down
Loading