diff --git a/chainntnfs/txnotifier.go b/chainntnfs/txnotifier.go index 3594535a..d7eeed56 100644 --- a/chainntnfs/txnotifier.go +++ b/chainntnfs/txnotifier.go @@ -1371,11 +1371,11 @@ func (n *TxNotifier) NotifyHeight(height uint32) error { } // DisconnectTip handles the tip of the current chain being disconnected during -// a chain reorganization. If any watched transactions or spending transactions -// for registered outpoints were included in this block, internal structures are -// updated to ensure confirmation/spend notifications are consumed (if not -// already), and reorg notifications are dispatched instead. Confirmation/spend -// notifications will be dispatched again upon block inclusion. +// a chain reorganization. If any watched requests were included in this block, +// internal structures are updated to ensure confirmation/spend notifications +// are consumed (if not already), and reorg notifications are dispatched +// instead. Confirmation/spend notifications will be dispatched again upon block +// inclusion. func (n *TxNotifier) DisconnectTip(blockHeight uint32) error { select { case <-n.quit: @@ -1395,19 +1395,19 @@ func (n *TxNotifier) DisconnectTip(blockHeight uint32) error { n.reorgDepth++ // With the block disconnected, we'll update the confirm and spend hints - // for our transactions and outpoints to reflect the new height, except - // for those that have confirmed/spent at previous heights. + // for our notification requests to reflect the new height, except for + // those that have confirmed/spent at previous heights. n.updateHints(blockHeight) - // We'll go through all of our watched transactions and attempt to drain - // their notification channels to ensure sending notifications to the - // clients is always non-blocking. - for initialHeight, txHashes := range n.txsByInitialHeight { + // We'll go through all of our watched confirmation requests and attempt + // to drain their notification channels to ensure sending notifications + // to the clients is always non-blocking. + for initialHeight, txHashes := range n.confsByInitialHeight { for txHash := range txHashes { - // If the transaction has been reorged out of the chain, - // we'll make sure to remove the cached confirmation - // details to prevent notifying clients with old - // information. + // If the transaction/output script has been reorged out + // of the chain, we'll make sure to remove the cached + // confirmation details to prevent notifying clients + // with old information. confSet := n.confNotifications[txHash] if initialHeight == blockHeight { confSet.details = nil @@ -1424,10 +1424,11 @@ func (n *TxNotifier) DisconnectTip(blockHeight uint32) error { default: } - // Then, we'll check if the current transaction - // was included in the block currently being - // disconnected. If it was, we'll need to - // dispatch a reorg notification to the client. + // Then, we'll check if the current + // transaction/output script was included in the + // block currently being disconnected. If it + // was, we'll need to dispatch a reorg + // notification to the client. if initialHeight == blockHeight { err := n.dispatchConfReorg( ntfn, blockHeight, @@ -1440,15 +1441,15 @@ func (n *TxNotifier) DisconnectTip(blockHeight uint32) error { } } - // We'll also go through our watched outpoints and attempt to drain + // We'll also go through our watched spend requests and attempt to drain // their dispatched notifications to ensure dispatching notifications to - // clients later on is always non-blocking. We're only interested in - // outpoints whose spending transaction was included at the height being + // clients later on is always non-blocking. We're only interested in + // requests whose spending transaction was included at the height being // disconnected. - for op := range n.opsBySpendHeight[blockHeight] { + for op := range n.spendsByHeight[blockHeight] { // Since the spending transaction is being reorged out of the // chain, we'll need to clear out the spending details of the - // outpoint. + // request. spendSet := n.spendNotifications[op] spendSet.details = nil @@ -1462,12 +1463,12 @@ func (n *TxNotifier) DisconnectTip(blockHeight uint32) error { } } - // Finally, we can remove the transactions that were confirmed and the - // outpoints that were spent at the height being disconnected. We'll - // still continue to track them until they have been confirmed/spent and - // are no longer under the risk of being reorged out of the chain again. - delete(n.txsByInitialHeight, blockHeight) - delete(n.opsBySpendHeight, blockHeight) + // Finally, we can remove the requests that were confirmed and/or spent + // at the height being disconnected. We'll still continue to track them + // until they have been confirmed/spent and are no longer under the risk + // of being reorged out of the chain again. + delete(n.confsByInitialHeight, blockHeight) + delete(n.spendsByHeight, blockHeight) return nil } @@ -1568,10 +1569,10 @@ func (n *TxNotifier) unspentOutPoints() []wire.OutPoint { func (n *TxNotifier) dispatchConfReorg(ntfn *ConfNtfn, heightDisconnected uint32) error { - // If the transaction's confirmation notification has yet to be - // dispatched, we'll need to clear its entry within the - // ntfnsByConfirmHeight index to prevent from notifying the client once - // the notifier reaches the confirmation height. + // If the request's confirmation notification has yet to be dispatched, + // we'll need to clear its entry within the ntfnsByConfirmHeight index + // to prevent from notifying the client once the notifier reaches the + // confirmation height. if !ntfn.dispatched { confHeight := heightDisconnected + ntfn.NumConfirmations - 1 ntfnSet, exists := n.ntfnsByConfirmHeight[confHeight]