Merge pull request #9921 from yyforyongyu/fix-notification

Use spent height as the rescan start height in `RegisterSpendNtfn`
This commit is contained in:
Yong authored and GitHub committed 2025-06-16 20:50:53 +08:00
commit a5c4a7c547
3 files changed
+25 -4

No files matched your search

+10 -2
View File
@@ -833,8 +833,16 @@ func (b *BitcoindNotifier) RegisterSpendNtfn(outpoint *wire.OutPoint,
return nil, err
}
if uint32(blockHeight) > ntfn.HistoricalDispatch.StartHeight {
ntfn.HistoricalDispatch.StartHeight = uint32(blockHeight)
spentHeight := uint32(blockHeight)
chainntnfs.Log.Debugf("Outpoint(%v) has spent at height %v",
outpoint, spentHeight)
// Since the tx has already been spent at spentHeight, the
// heightHint specified by the caller is no longer relevant. We
// now update the starting height to be the spent height to make
// sure we won't miss it in the rescan.
if spentHeight != ntfn.HistoricalDispatch.StartHeight {
ntfn.HistoricalDispatch.StartHeight = spentHeight
}
}
+12 -2
View File
@@ -933,15 +933,25 @@ func (b *BtcdNotifier) RegisterSpendNtfn(outpoint *wire.OutPoint,
"block %v: %v", blockHash, err)
}
if uint32(blockHeader.Height) > ntfn.HistoricalDispatch.StartHeight {
spentHeight := uint32(blockHeader.Height)
chainntnfs.Log.Debugf("Outpoint(%v) has spent at height %v",
outpoint, spentHeight)
// Since the tx has already been spent at spentHeight, the
// heightHint specified by the caller is no longer relevant. We
// now update the starting height to be the spent height to make
// sure we won't miss it in the rescan.
if spentHeight != ntfn.HistoricalDispatch.StartHeight {
startHash, err = b.chainConn.GetBlockHash(
int64(blockHeader.Height),
int64(spentHeight),
)
if err != nil {
return nil, fmt.Errorf("unable to get block "+
"hash for height %d: %v",
blockHeader.Height, err)
}
ntfn.HistoricalDispatch.StartHeight = spentHeight
}
}
@@ -23,6 +23,9 @@
- [Use](https://github.com/lightningnetwork/lnd/pull/9889) `BigSizeT` instead of
`uint16` for the htlc index that's used in the revocation log.
- [Fixed](https://github.com/lightningnetwork/lnd/pull/9921) a case where the
spending notification of an output may be missed if wrong height hint is used.
# New Features
## Functional Enhancements