Class Watch


  • public class Watch
    extends Object
    The `Watch` trait defines behavior for watching on-chain activity pertaining to channels as blocks are connected and disconnected. Each channel is associated with a [`ChannelMonitor`]. Implementations of this trait are responsible for maintaining a set of monitors such that they can be updated accordingly as channel state changes and HTLCs are resolved. See method documentation for specific requirements. Implementations **must** ensure that updates are successfully applied and persisted upon method completion. If an update fails with a [`PermanentFailure`], then it must immediately shut down without taking any further action such as persisting the current state. If an implementation maintains multiple instances of a channel's monitor (e.g., by storing backup copies), then it must ensure that updates are applied across all instances. Otherwise, it could result in a revoked transaction being broadcast, allowing the counterparty to claim all funds in the channel. See [`ChannelMonitorUpdateErr`] for more details about how to handle multiple instances. [`ChannelMonitor`]: channelmonitor::ChannelMonitor [`ChannelMonitorUpdateErr`]: channelmonitor::ChannelMonitorUpdateErr [`PermanentFailure`]: channelmonitor::ChannelMonitorUpdateErr::PermanentFailure
    • Method Detail

      • watch_channel

        public Result_NoneChannelMonitorUpdateErrZ watch_channel​(OutPoint funding_txo,
                                                                 ChannelMonitor monitor)
        Watches a channel identified by `funding_txo` using `monitor`. Implementations are responsible for watching the chain for the funding transaction along with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means calling [`block_connected`] and [`block_disconnected`] on the monitor. [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch [`block_connected`]: channelmonitor::ChannelMonitor::block_connected [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
      • update_channel

        public Result_NoneChannelMonitorUpdateErrZ update_channel​(OutPoint funding_txo,
                                                                  ChannelMonitorUpdate update)
        Updates a channel identified by `funding_txo` by applying `update` to its monitor. Implementations must call [`update_monitor`] with the given update. See [`ChannelMonitorUpdateErr`] for invariants around returning an error. [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor [`ChannelMonitorUpdateErr`]: channelmonitor::ChannelMonitorUpdateErr
      • release_pending_monitor_events

        public MonitorEvent[] release_pending_monitor_events()
        Returns any monitor events since the last call. Subsequent calls must only return new events.