pub struct LockedChannelMonitor<'a, ChannelSigner: WriteableEcdsaChannelSigner> { /* private fields */ }
Expand description

A read-only reference to a current ChannelMonitor.

Note that this holds a mutex in ChainMonitor and may block other events until it is released.

Methods from Deref<Target = ChannelMonitor<ChannelSigner>>§

source

pub fn update_monitor<B: Deref, F: Deref, L: Deref>( &self, updates: &ChannelMonitorUpdate, broadcaster: &B, fee_estimator: F, logger: &L ) -> Result<(), ()>where B::Target: BroadcasterInterface, F::Target: FeeEstimator, L::Target: Logger,

Updates a ChannelMonitor on the basis of some new information provided by the Channel itself.

panics if the given update is not the next update by update_id.

source

pub fn get_latest_update_id(&self) -> u64

Gets the update_id from the latest ChannelMonitorUpdate which was applied to this ChannelMonitor.

source

pub fn get_funding_txo(&self) -> (OutPoint, Script)

Gets the funding transaction outpoint of the channel this ChannelMonitor is monitoring for.

source

pub fn get_outputs_to_watch(&self) -> Vec<(Txid, Vec<(u32, Script)>)>

Gets a list of txids, with their output scripts (in the order they appear in the transaction), which we must learn about spends of via block_connected().

source

pub fn load_outputs_to_watch<F: Deref>(&self, filter: &F)where F::Target: Filter,

Loads the funding txo and outputs to watch into the given chain::Filter by repeatedly calling chain::Filter::register_output and chain::Filter::register_tx until all outputs have been registered.

source

pub fn get_and_clear_pending_monitor_events(&self) -> Vec<MonitorEvent>

Get the list of HTLCs who’s status has been updated on chain. This should be called by ChannelManager via chain::Watch::release_pending_monitor_events.

source

pub fn get_and_clear_pending_events(&self) -> Vec<Event>

Gets the list of pending events which were generated by previous actions, clearing the list in the process.

This is called by the EventsProvider::process_pending_events implementation for ChainMonitor.

source

pub fn get_counterparty_node_id(&self) -> Option<PublicKey>

Gets the node_id of the counterparty for this channel.

Will be None for channels constructed on LDK versions prior to 0.0.110 and always Some otherwise.

source

pub fn get_latest_holder_commitment_txn<L: Deref>( &self, logger: &L ) -> Vec<Transaction>where L::Target: Logger,

Used by ChannelManager deserialization to broadcast the latest holder state if its copy of the Channel was out-of-date.

You may also use this to broadcast the latest local commitment transaction, either because a monitor update failed with ChannelMonitorUpdateStatus::PermanentFailure or because we’ve fallen behind (i.e. we’ve received proof that our counterparty side knows a revocation secret we gave them that they shouldn’t know).

Broadcasting these transactions in the second case is UNSAFE, as they allow counterparty side to punish you. Nevertheless you may want to broadcast them if counterparty doesn’t close channel with their commitment transaction after a substantial amount of time. Best may be to contact the other node operator out-of-band to coordinate other options available to you. In any-case, the choice is up to you.

source

pub fn block_connected<B: Deref, F: Deref, L: Deref>( &self, header: &BlockHeader, txdata: &TransactionData<'_>, height: u32, broadcaster: B, fee_estimator: F, logger: L ) -> Vec<TransactionOutputs>where B::Target: BroadcasterInterface, F::Target: FeeEstimator, L::Target: Logger,

Processes transactions in a newly connected block, which may result in any of the following:

  • update the monitor’s state against resolved HTLCs
  • punish the counterparty in the case of seeing a revoked commitment transaction
  • force close the channel and claim/timeout incoming/outgoing HTLCs if near expiration
  • detect settled outputs for later spending
  • schedule and bump any in-flight claims

Returns any new outputs to watch from txdata; after called, these are also included in get_outputs_to_watch.

source

pub fn block_disconnected<B: Deref, F: Deref, L: Deref>( &self, header: &BlockHeader, height: u32, broadcaster: B, fee_estimator: F, logger: L )where B::Target: BroadcasterInterface, F::Target: FeeEstimator, L::Target: Logger,

Determines if the disconnected block contained any transactions of interest and updates appropriately.

source

pub fn transactions_confirmed<B: Deref, F: Deref, L: Deref>( &self, header: &BlockHeader, txdata: &TransactionData<'_>, height: u32, broadcaster: B, fee_estimator: F, logger: L ) -> Vec<TransactionOutputs>where B::Target: BroadcasterInterface, F::Target: FeeEstimator, L::Target: Logger,

Processes transactions confirmed in a block with the given header and height, returning new outputs to watch. See block_connected for details.

Used instead of block_connected by clients that are notified of transactions rather than blocks. See chain::Confirm for calling expectations.

source

pub fn transaction_unconfirmed<B: Deref, F: Deref, L: Deref>( &self, txid: &Txid, broadcaster: B, fee_estimator: F, logger: L )where B::Target: BroadcasterInterface, F::Target: FeeEstimator, L::Target: Logger,

Processes a transaction that was reorganized out of the chain.

Used instead of block_disconnected by clients that are notified of transactions rather than blocks. See chain::Confirm for calling expectations.

source

pub fn best_block_updated<B: Deref, F: Deref, L: Deref>( &self, header: &BlockHeader, height: u32, broadcaster: B, fee_estimator: F, logger: L ) -> Vec<TransactionOutputs>where B::Target: BroadcasterInterface, F::Target: FeeEstimator, L::Target: Logger,

Updates the monitor with the current best chain tip, returning new outputs to watch. See block_connected for details.

Used instead of block_connected by clients that are notified of transactions rather than blocks. See chain::Confirm for calling expectations.

source

pub fn get_relevant_txids(&self) -> Vec<(Txid, Option<BlockHash>)>

Returns the set of txids that should be monitored for re-organization out of the chain.

source

pub fn current_best_block(&self) -> BestBlock

Gets the latest best block which was connected either via the chain::Listen or chain::Confirm interfaces.

source

pub fn rebroadcast_pending_claims<B: Deref, F: Deref, L: Deref>( &self, broadcaster: B, fee_estimator: F, logger: L )where B::Target: BroadcasterInterface, F::Target: FeeEstimator, L::Target: Logger,

Triggers rebroadcasts/fee-bumps of pending claims from a force-closed channel. This is crucial in preventing certain classes of pinning attacks, detecting substantial mempool feerate changes between blocks, and ensuring reliability if broadcasting fails. We recommend invoking this every 30 seconds, or lower if running in an environment with spotty connections, like on mobile.

source

pub fn get_claimable_balances(&self) -> Vec<Balance>

Gets the balances in this channel which are either claimable by us if we were to force-close the channel now or which are claimable on-chain (possibly awaiting confirmation).

Any balances in the channel which are available on-chain (excluding on-chain fees) are included here until an Event::SpendableOutputs event has been generated for the balance, or until our counterparty has claimed the balance and accrued several confirmations on the claim transaction.

Note that for ChannelMonitors which track a channel which went on-chain with versions of LDK prior to 0.0.111, balances may not be fully captured if our counterparty broadcasted a revoked state.

See Balance for additional details on the types of claimable balances which may be returned here and their meanings.

Trait Implementations§

source§

impl<ChannelSigner: WriteableEcdsaChannelSigner> Deref for LockedChannelMonitor<'_, ChannelSigner>

§

type Target = ChannelMonitor<ChannelSigner>

The resulting type after dereferencing.
source§

fn deref(&self) -> &ChannelMonitor<ChannelSigner>

Dereferences the value.

Auto Trait Implementations§

§

impl<'a, ChannelSigner> RefUnwindSafe for LockedChannelMonitor<'a, ChannelSigner>

§

impl<'a, ChannelSigner> !Send for LockedChannelMonitor<'a, ChannelSigner>

§

impl<'a, ChannelSigner> Sync for LockedChannelMonitor<'a, ChannelSigner>where ChannelSigner: Send,

§

impl<'a, ChannelSigner> Unpin for LockedChannelMonitor<'a, ChannelSigner>

§

impl<'a, ChannelSigner> UnwindSafe for LockedChannelMonitor<'a, ChannelSigner>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.