Struct lightning::ln::channelmanager::ChannelManager [−][src]
pub struct ChannelManager { /* fields omitted */ }
Manager which keeps track of a number of channels and sends messages to the appropriate channel, also tracking HTLC preimages and forwarding onion packets appropriately. Implements ChannelMessageHandler, handling the multi-channel parts and passing things through to individual Channels.
Methods
impl ChannelManager
[src]
impl ChannelManager
pub fn new(
our_network_key: SecretKey,
fee_proportional_millionths: u32,
announce_channels_publicly: bool,
network: Network,
feeest: Arc<FeeEstimator>,
monitor: Arc<ManyChannelMonitor>,
chain_monitor: Arc<ChainWatchInterface>,
tx_broadcaster: Arc<BroadcasterInterface>,
logger: Arc<Logger>
) -> Result<Arc<ChannelManager>, Error>
[src]
pub fn new(
our_network_key: SecretKey,
fee_proportional_millionths: u32,
announce_channels_publicly: bool,
network: Network,
feeest: Arc<FeeEstimator>,
monitor: Arc<ManyChannelMonitor>,
chain_monitor: Arc<ChainWatchInterface>,
tx_broadcaster: Arc<BroadcasterInterface>,
logger: Arc<Logger>
) -> Result<Arc<ChannelManager>, Error>
Constructs a new ChannelManager to hold several channels and route between them. This is
the main "logic hub" for all channel-related actions, and implements ChannelMessageHandler.
fee_proportional_millionths is an optional fee to charge any payments routed through us.
Non-proportional fees are fixed according to our risk using the provided fee estimator.
panics if channel_value_satoshis is >= MAX_FUNDING_SATOSHIS
!
pub fn create_channel(
&self,
their_network_key: PublicKey,
channel_value_satoshis: u64,
push_msat: u64,
user_id: u64
) -> Result<(), APIError>
[src]
pub fn create_channel(
&self,
their_network_key: PublicKey,
channel_value_satoshis: u64,
push_msat: u64,
user_id: u64
) -> Result<(), APIError>
Creates a new outbound channel to the given remote node and with the given value. user_id will be provided back as user_channel_id in FundingGenerationReady and FundingBroadcastSafe events to allow tracking of which events correspond with which create_channel call. Note that user_channel_id defaults to 0 for inbound channels, so you may wish to avoid using 0 for user_id here. If successful, will generate a SendOpenChannel event, so you should probably poll PeerManager::process_events afterwards. Raises APIError::APIMisuseError when channel_value_satoshis > 2**24 or push_msat being greater than channel_value_satoshis * 1k
pub fn list_channels(&self) -> Vec<ChannelDetails>
[src]
pub fn list_channels(&self) -> Vec<ChannelDetails>
Gets the list of open channels, in random order. See ChannelDetail field documentation for more information.
pub fn list_usable_channels(&self) -> Vec<ChannelDetails>
[src]
pub fn list_usable_channels(&self) -> Vec<ChannelDetails>
Gets the list of usable channels, in random order. Useful as an argument to Router::get_route to ensure non-announced channels are used.
pub fn close_channel(&self, channel_id: &[u8; 32]) -> Result<(), HandleError>
[src]
pub fn close_channel(&self, channel_id: &[u8; 32]) -> Result<(), HandleError>
Begins the process of closing a channel. After this call (plus some timeout), no new HTLCs will be accepted on the given channel, and after additional timeout/the closing of all pending HTLCs, the channel will be closed on chain. May generate a SendShutdown event on success, which should be relayed.
pub fn force_close_channel(&self, channel_id: &[u8; 32])
[src]
pub fn force_close_channel(&self, channel_id: &[u8; 32])
Force closes a channel, immediately broadcasting the latest local commitment transaction to the chain and rejecting new HTLCs on the given channel.
pub fn force_close_all_channels(&self)
[src]
pub fn force_close_all_channels(&self)
Force close all channels, immediately broadcasting the latest local commitment transaction for each to the chain and rejecting new HTLCs on each.
pub fn send_payment(
&self,
route: Route,
payment_hash: [u8; 32]
) -> Result<(), APIError>
[src]
pub fn send_payment(
&self,
route: Route,
payment_hash: [u8; 32]
) -> Result<(), APIError>
Sends a payment along a given route. Value parameters are provided via the last hop in route, see documentation for RouteHop fields for more info. Note that if the payment_hash already exists elsewhere (eg you're sending a duplicative payment), we don't do anything to stop you! We always try to ensure that if the provided next hop knows the preimage to payment_hash they can claim an additional amount as specified in the last hop in the route! Thus, you should probably do your own payment_preimage tracking (which you should already be doing as they represent "proof of payment") and prevent double-sends yourself. See-also docs on Channel::send_htlc_and_commit. May generate a SendHTLCs event on success, which should be relayed. Raises APIError::RoutError when invalid route or forward parameter (cltv_delta, fee, node public key) is specified
pub fn funding_transaction_generated(
&self,
temporary_channel_id: &[u8; 32],
funding_txo: OutPoint
)
[src]
pub fn funding_transaction_generated(
&self,
temporary_channel_id: &[u8; 32],
funding_txo: OutPoint
)
Call this upon creation of a funding transaction for the given channel. Panics if a funding transaction has already been provided for this channel. May panic if the funding_txo is duplicative with some other channel (note that this should be trivially prevented by using unique funding transaction keys per-channel).
pub fn process_pending_htlc_forwards(&self)
[src]
pub fn process_pending_htlc_forwards(&self)
Processes HTLCs which are pending waiting on random forward delay. Should only really ever be called in response to an PendingHTLCsForwardable event. Will likely generate further events.
pub fn fail_htlc_backwards(&self, payment_hash: &[u8; 32]) -> bool
[src]
pub fn fail_htlc_backwards(&self, payment_hash: &[u8; 32]) -> bool
Indicates that the preimage for payment_hash is unknown after a PaymentReceived event.
pub fn claim_funds(&self, payment_preimage: [u8; 32]) -> bool
[src]
pub fn claim_funds(&self, payment_preimage: [u8; 32]) -> bool
Provides a payment preimage in response to a PaymentReceived event, returning true and generating message events for the net layer to claim the payment, if possible. Thus, you should probably kick the net layer to go send messages if this returns true! May panic if called except in response to a PaymentReceived event.
pub fn get_our_node_id(&self) -> PublicKey
[src]
pub fn get_our_node_id(&self) -> PublicKey
Gets the node_id held by this ChannelManager
pub fn test_restore_channel_monitor(&self)
[src]
pub fn test_restore_channel_monitor(&self)
Used to restore channels to normal operation after a ChannelMonitorUpdateErr::TemporaryFailure was returned from a channel monitor update operation.
Trait Implementations
impl EventsProvider for ChannelManager
[src]
impl EventsProvider for ChannelManager
fn get_and_clear_pending_events(&self) -> Vec<Event>
[src]
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. Read more
impl ChainListener for ChannelManager
[src]
impl ChainListener for ChannelManager
fn block_connected(
&self,
header: &BlockHeader,
height: u32,
txn_matched: &[&Transaction],
indexes_of_txn_matched: &[u32]
)
[src]
fn block_connected(
&self,
header: &BlockHeader,
height: u32,
txn_matched: &[&Transaction],
indexes_of_txn_matched: &[u32]
)
Notifies a listener that a block was connected. Note that if a new transaction/outpoint is watched during a block_connected call, the block must be re-scanned with the new transaction/outpoints and block_connected should be called again with the same header and (at least) the new transactions. Note that if non-new transaction/outpoints may be registered during a call, a second call must not happen. This also means those counting confirmations using block_connected callbacks should watch for duplicate headers and not count them towards confirmations! Read more
fn block_disconnected(&self, header: &BlockHeader)
[src]
fn block_disconnected(&self, header: &BlockHeader)
We force-close the channel without letting our counterparty participate in the shutdown
impl ChannelMessageHandler for ChannelManager
[src]
impl ChannelMessageHandler for ChannelManager
fn handle_open_channel(
&self,
their_node_id: &PublicKey,
msg: &OpenChannel
) -> Result<AcceptChannel, HandleError>
[src]
fn handle_open_channel(
&self,
their_node_id: &PublicKey,
msg: &OpenChannel
) -> Result<AcceptChannel, HandleError>
Handle an incoming open_channel message from the given peer.
fn handle_accept_channel(
&self,
their_node_id: &PublicKey,
msg: &AcceptChannel
) -> Result<(), HandleError>
[src]
fn handle_accept_channel(
&self,
their_node_id: &PublicKey,
msg: &AcceptChannel
) -> Result<(), HandleError>
Handle an incoming accept_channel message from the given peer.
fn handle_funding_created(
&self,
their_node_id: &PublicKey,
msg: &FundingCreated
) -> Result<FundingSigned, HandleError>
[src]
fn handle_funding_created(
&self,
their_node_id: &PublicKey,
msg: &FundingCreated
) -> Result<FundingSigned, HandleError>
Handle an incoming funding_created message from the given peer.
fn handle_funding_signed(
&self,
their_node_id: &PublicKey,
msg: &FundingSigned
) -> Result<(), HandleError>
[src]
fn handle_funding_signed(
&self,
their_node_id: &PublicKey,
msg: &FundingSigned
) -> Result<(), HandleError>
Handle an incoming funding_signed message from the given peer.
fn handle_funding_locked(
&self,
their_node_id: &PublicKey,
msg: &FundingLocked
) -> Result<Option<AnnouncementSignatures>, HandleError>
[src]
fn handle_funding_locked(
&self,
their_node_id: &PublicKey,
msg: &FundingLocked
) -> Result<Option<AnnouncementSignatures>, HandleError>
Handle an incoming funding_locked message from the given peer.
fn handle_shutdown(
&self,
their_node_id: &PublicKey,
msg: &Shutdown
) -> Result<(Option<Shutdown>, Option<ClosingSigned>), HandleError>
[src]
fn handle_shutdown(
&self,
their_node_id: &PublicKey,
msg: &Shutdown
) -> Result<(Option<Shutdown>, Option<ClosingSigned>), HandleError>
Handle an incoming shutdown message from the given peer.
fn handle_closing_signed(
&self,
their_node_id: &PublicKey,
msg: &ClosingSigned
) -> Result<Option<ClosingSigned>, HandleError>
[src]
fn handle_closing_signed(
&self,
their_node_id: &PublicKey,
msg: &ClosingSigned
) -> Result<Option<ClosingSigned>, HandleError>
Handle an incoming closing_signed message from the given peer.
fn handle_update_add_htlc(
&self,
their_node_id: &PublicKey,
msg: &UpdateAddHTLC
) -> Result<(), HandleError>
[src]
fn handle_update_add_htlc(
&self,
their_node_id: &PublicKey,
msg: &UpdateAddHTLC
) -> Result<(), HandleError>
Handle an incoming update_add_htlc message from the given peer.
fn handle_update_fulfill_htlc(
&self,
their_node_id: &PublicKey,
msg: &UpdateFulfillHTLC
) -> Result<(), HandleError>
[src]
fn handle_update_fulfill_htlc(
&self,
their_node_id: &PublicKey,
msg: &UpdateFulfillHTLC
) -> Result<(), HandleError>
Handle an incoming update_fulfill_htlc message from the given peer.
fn handle_update_fail_htlc(
&self,
their_node_id: &PublicKey,
msg: &UpdateFailHTLC
) -> Result<Option<HTLCFailChannelUpdate>, HandleError>
[src]
fn handle_update_fail_htlc(
&self,
their_node_id: &PublicKey,
msg: &UpdateFailHTLC
) -> Result<Option<HTLCFailChannelUpdate>, HandleError>
Handle an incoming update_fail_htlc message from the given peer.
fn handle_update_fail_malformed_htlc(
&self,
their_node_id: &PublicKey,
msg: &UpdateFailMalformedHTLC
) -> Result<(), HandleError>
[src]
fn handle_update_fail_malformed_htlc(
&self,
their_node_id: &PublicKey,
msg: &UpdateFailMalformedHTLC
) -> Result<(), HandleError>
Handle an incoming update_fail_malformed_htlc message from the given peer.
fn handle_commitment_signed(
&self,
their_node_id: &PublicKey,
msg: &CommitmentSigned
) -> Result<(RevokeAndACK, Option<CommitmentSigned>), HandleError>
[src]
fn handle_commitment_signed(
&self,
their_node_id: &PublicKey,
msg: &CommitmentSigned
) -> Result<(RevokeAndACK, Option<CommitmentSigned>), HandleError>
Handle an incoming commitment_signed message from the given peer.
fn handle_revoke_and_ack(
&self,
their_node_id: &PublicKey,
msg: &RevokeAndACK
) -> Result<Option<CommitmentUpdate>, HandleError>
[src]
fn handle_revoke_and_ack(
&self,
their_node_id: &PublicKey,
msg: &RevokeAndACK
) -> Result<Option<CommitmentUpdate>, HandleError>
Handle an incoming revoke_and_ack message from the given peer.
fn handle_update_fee(
&self,
their_node_id: &PublicKey,
msg: &UpdateFee
) -> Result<(), HandleError>
[src]
fn handle_update_fee(
&self,
their_node_id: &PublicKey,
msg: &UpdateFee
) -> Result<(), HandleError>
Handle an incoming update_fee message from the given peer.
fn handle_announcement_signatures(
&self,
their_node_id: &PublicKey,
msg: &AnnouncementSignatures
) -> Result<(), HandleError>
[src]
fn handle_announcement_signatures(
&self,
their_node_id: &PublicKey,
msg: &AnnouncementSignatures
) -> Result<(), HandleError>
Handle an incoming announcement_signatures message from the given peer.
fn handle_channel_reestablish(
&self,
their_node_id: &PublicKey,
msg: &ChannelReestablish
) -> Result<(Option<FundingLocked>, Option<RevokeAndACK>, Option<CommitmentUpdate>), HandleError>
[src]
fn handle_channel_reestablish(
&self,
their_node_id: &PublicKey,
msg: &ChannelReestablish
) -> Result<(Option<FundingLocked>, Option<RevokeAndACK>, Option<CommitmentUpdate>), HandleError>
Handle an incoming channel_reestablish message from the given peer.
fn peer_disconnected(
&self,
their_node_id: &PublicKey,
no_connection_possible: bool
)
[src]
fn peer_disconnected(
&self,
their_node_id: &PublicKey,
no_connection_possible: bool
)
Indicates a connection to the peer failed/an existing connection was lost. If no connection is believed to be possible in the future (eg they're sending us messages we don't understand or indicate they require unknown feature bits), no_connection_possible is set and any outstanding channels should be failed. Read more
fn peer_connected(&self, their_node_id: &PublicKey) -> Vec<ChannelReestablish>
[src]
fn peer_connected(&self, their_node_id: &PublicKey) -> Vec<ChannelReestablish>
Handle a peer reconnecting, possibly generating channel_reestablish message(s).
fn handle_error(&self, their_node_id: &PublicKey, msg: &ErrorMessage)
[src]
fn handle_error(&self, their_node_id: &PublicKey, msg: &ErrorMessage)
Handle an incoming error message from the given peer.
Auto Trait Implementations
impl Send for ChannelManager
impl Send for ChannelManager
impl Sync for ChannelManager
impl Sync for ChannelManager