Skip to content

Commit 81d11f7

Browse files
authored
Merge pull request #4596 from tnull/2026-05-esplora-merkle-root-validation
Validate Esplora merkle proof against the block header's merkle root
2 parents 4cbd074 + b64efcd commit 81d11f7

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

lightning-transaction-sync/src/esplora.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,8 +361,13 @@ impl<L: Logger> EsploraSyncClient<L> {
361361

362362
let mut matches = Vec::new();
363363
let mut indexes = Vec::new();
364-
let _ = merkle_block.txn.extract_matches(&mut matches, &mut indexes);
365-
if indexes.len() != 1 || matches.len() != 1 || matches[0] != txid {
364+
let computed_merkle_root =
365+
merkle_block.txn.extract_matches(&mut matches, &mut indexes).ok();
366+
if computed_merkle_root != Some(block_header.merkle_root)
367+
|| indexes.len() != 1
368+
|| matches.len() != 1
369+
|| matches[0] != txid
370+
{
366371
log_error!(self.logger, "Retrieved Merkle block for txid {} doesn't match expectations. This should not happen. Please verify server integrity.", txid);
367372
return Err(InternalError::Failed);
368373
}

0 commit comments

Comments
 (0)