From 7889fa25fd93d585727971c9a987605de9223632 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 12 Feb 2020 23:55:22 -0500 Subject: [PATCH] Expose ChannelMonitor::block_[dis]connected as pub These are essentially required to make rescan-at-reload doable as individual ChannelMonitors may be synced to different chain states and thus need to have blocks replayed separately. --- lightning/src/ln/channelmonitor.rs | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/lightning/src/ln/channelmonitor.rs b/lightning/src/ln/channelmonitor.rs index ff0b6e9eb..9e42749ce 100644 --- a/lightning/src/ln/channelmonitor.rs +++ b/lightning/src/ln/channelmonitor.rs @@ -1797,12 +1797,17 @@ impl ChannelMonitor { Vec::new() } - /// Called by SimpleManyChannelMonitor::block_connected, which implements - /// ChainListener::block_connected. - /// Eventually this should be pub and, roughly, implement ChainListener, however this requires - /// &mut self, as well as returns new spendable outputs and outpoints to watch for spending of - /// on-chain. - fn block_connected(&mut self, txn_matched: &[&Transaction], height: u32, block_hash: &BlockHash, broadcaster: B, fee_estimator: F, logger: L)-> Vec<(Txid, Vec)> + /// Called when a new block has been connected to the best chain by ::block_connected, and should thus generally not be called during normal + /// operation. It is exposed both for users who wish to use ChannelMonitors directly and to + /// simplify rescans that occur at load-time. + /// + /// This is very similar to ChainListener::block_connected itself, but requires an &mut self, + /// and an explicit reference to a transaction broadcaster and fee estimator. + /// + /// Returns a list of new (txid, outputs) pairs which spends of must be watched for. Note that + /// after this call these are also available via get_outputs_to_watch(). + pub fn block_connected(&mut self, txn_matched: &[&Transaction], height: u32, block_hash: &BlockHash, broadcaster: B, fee_estimator: F, logger: L)-> Vec<(Txid, Vec)> where B::Target: BroadcasterInterface, F::Target: FeeEstimator, L::Target: Logger, @@ -1901,7 +1906,14 @@ impl ChannelMonitor { watch_outputs } - fn block_disconnected(&mut self, height: u32, block_hash: &BlockHash, broadcaster: B, fee_estimator: F, logger: L) + /// Called when a block has been disconnected from the best chain by ::block_disconnected, and should thus generally not be called during + /// normal operation. It is exposed both for users who wish to use ChannelMonitors directly and + /// to simplify rescans that occur at load-time. + /// + /// This is very similar to ChainListener::block_disconnected itself, but requires an &mut self, + /// and an explicit reference to a transaction broadcaster and fee estimator. + pub fn block_disconnected(&mut self, height: u32, block_hash: &BlockHash, broadcaster: B, fee_estimator: F, logger: L) where B::Target: BroadcasterInterface, F::Target: FeeEstimator, L::Target: Logger, -- 2.39.5