Class ChannelMonitorUpdate


  • public class ChannelMonitorUpdate
    extends Object
    An update generated by the underlying channel itself which contains some new information the [`ChannelMonitor`] should be made aware of. Because this represents only a small number of updates to the underlying state, it is generally much smaller than a full [`ChannelMonitor`]. However, for large single commitment transaction updates (e.g. ones during which there are hundreds of HTLCs pending on the commitment transaction), a single update may reach upwards of 1 MiB in serialized size.
    • Method Detail

      • get_update_id

        public long get_update_id()
        The sequence number of this update. Updates *must* be replayed in-order according to this sequence number (and updates may panic if they are not). The update_id values are strictly increasing and increase by one for each new update, with two exceptions specified below. This sequence number is also used to track up to which points updates which returned [`ChannelMonitorUpdateStatus::InProgress`] have been applied to all copies of a given ChannelMonitor when ChannelManager::channel_monitor_updated is called. The only instances we allow where update_id values are not strictly increasing have a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. This update ID is used for updates that will force close the channel by broadcasting the latest commitment transaction or special post-force-close updates, like providing preimages necessary to claim outputs on the broadcast commitment transaction. See its docs for more details. [`ChannelMonitorUpdateStatus::InProgress`]: super::ChannelMonitorUpdateStatus::InProgress
      • set_update_id

        public void set_update_id​(long val)
        The sequence number of this update. Updates *must* be replayed in-order according to this sequence number (and updates may panic if they are not). The update_id values are strictly increasing and increase by one for each new update, with two exceptions specified below. This sequence number is also used to track up to which points updates which returned [`ChannelMonitorUpdateStatus::InProgress`] have been applied to all copies of a given ChannelMonitor when ChannelManager::channel_monitor_updated is called. The only instances we allow where update_id values are not strictly increasing have a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. This update ID is used for updates that will force close the channel by broadcasting the latest commitment transaction or special post-force-close updates, like providing preimages necessary to claim outputs on the broadcast commitment transaction. See its docs for more details. [`ChannelMonitorUpdateStatus::InProgress`]: super::ChannelMonitorUpdateStatus::InProgress
      • eq

        public boolean eq​(ChannelMonitorUpdate b)
        Checks if two ChannelMonitorUpdates contain equal inner contents. This ignores pointers and is_owned flags and looks at the values in fields. Two objects with NULL inner values will be considered "equal" here.
      • write

        public byte[] write()
        Serialize the ChannelMonitorUpdate object into a byte array which can be read by ChannelMonitorUpdate_read