pub struct CdkLdkNode { /* private fields */ }Expand description
CDK Lightning backend using LDK Node
Provides Lightning Network functionality for CDK with support for Cashu operations. Handles payment creation, processing, and event management using the Lightning Development Kit.
Implementations§
Source§impl CdkLdkNode
impl CdkLdkNode
Sourcepub fn new(
network: Network,
chain_source: ChainSource,
gossip_source: GossipSource,
storage_dir_path: String,
fee_reserve: FeeReserve,
listening_address: Vec<SocketAddress>,
runtime: Option<Arc<Runtime>>,
) -> Result<Self, Error>
pub fn new( network: Network, chain_source: ChainSource, gossip_source: GossipSource, storage_dir_path: String, fee_reserve: FeeReserve, listening_address: Vec<SocketAddress>, runtime: Option<Arc<Runtime>>, ) -> Result<Self, Error>
Create a new CDK LDK Node instance
§Arguments
network- Bitcoin network (mainnet, testnet, regtest, signet)chain_source- Source of blockchain data (Esplora or Bitcoin RPC)gossip_source- Source of Lightning network gossip datastorage_dir_path- Directory path for node data storagefee_reserve- Fee reserve configuration for paymentslistening_address- Socket addresses for peer connectionsruntime- Optional Tokio runtime to use for starting the node
§Returns
A new CdkLdkNode instance ready to be started
§Errors
Returns an error if the LDK node builder fails to create the node
Sourcepub fn set_web_addr(&mut self, addr: Option<SocketAddr>)
pub fn set_web_addr(&mut self, addr: Option<SocketAddr>)
Set the web server address for the LDK node management interface
§Arguments
addr- Socket address for the web server. If None, no web server will be started.
Sourcepub fn default_web_addr() -> SocketAddr
pub fn default_web_addr() -> SocketAddr
Get a default web server address using an unused port
Returns a SocketAddr with localhost and port 0, which will cause the system to automatically assign an available port
Sourcepub fn start_ldk_node(&self) -> Result<(), Error>
pub fn start_ldk_node(&self) -> Result<(), Error>
Start the CDK LDK Node
Starts the underlying LDK node and begins event processing. Sets up event handlers to listen for Lightning events like payment received.
§Returns
Returns Ok(()) on successful start, error otherwise
§Errors
Returns an error if the LDK node fails to start or event handling setup fails
Sourcepub fn start_web_server(&self, web_addr: SocketAddr) -> Result<(), Error>
pub fn start_web_server(&self, web_addr: SocketAddr) -> Result<(), Error>
Start the web server for the LDK node management interface
Starts a web server that provides a user interface for managing the LDK node. The web interface allows users to view balances, manage channels, create invoices, and send payments.
§Arguments
web_addr- The socket address to bind the web server to
§Returns
Returns Ok(()) on successful start, error otherwise
§Errors
Returns an error if the web server fails to start
Sourcepub fn stop_ldk_node(&self) -> Result<(), Error>
pub fn stop_ldk_node(&self) -> Result<(), Error>
Stop the CDK LDK Node
Gracefully stops the node by cancelling all active tasks and event handlers. This includes:
- Cancelling the event handler task
- Cancelling any active wait_invoice streams
- Stopping the underlying LDK node
§Returns
Returns Ok(()) on successful shutdown, error otherwise
§Errors
Returns an error if the underlying LDK node fails to stop
Sourcepub fn handle_events(&self) -> Result<(), Error>
pub fn handle_events(&self) -> Result<(), Error>
Set up event handling for the node
Trait Implementations§
Source§impl Clone for CdkLdkNode
impl Clone for CdkLdkNode
Source§fn clone(&self) -> CdkLdkNode
fn clone(&self) -> CdkLdkNode
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Drop for CdkLdkNode
impl Drop for CdkLdkNode
Source§impl MintPayment for CdkLdkNode
Mint payment trait
impl MintPayment for CdkLdkNode
Mint payment trait
Source§fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Start the payment processor Starts the LDK node and begins event processing
Source§fn stop<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn stop<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Stop the payment processor Gracefully stops the LDK node and cancels all background tasks
Source§fn get_settings<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Value, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_settings<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Value, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Base Settings
Source§fn create_incoming_payment_request<'life0, 'life1, 'async_trait>(
&'life0 self,
unit: &'life1 CurrencyUnit,
options: IncomingPaymentOptions,
) -> Pin<Box<dyn Future<Output = Result<CreateIncomingPaymentResponse, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_incoming_payment_request<'life0, 'life1, 'async_trait>(
&'life0 self,
unit: &'life1 CurrencyUnit,
options: IncomingPaymentOptions,
) -> Pin<Box<dyn Future<Output = Result<CreateIncomingPaymentResponse, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create a new invoice
Source§fn get_payment_quote<'life0, 'life1, 'async_trait>(
&'life0 self,
unit: &'life1 CurrencyUnit,
options: OutgoingPaymentOptions,
) -> Pin<Box<dyn Future<Output = Result<PaymentQuoteResponse, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_payment_quote<'life0, 'life1, 'async_trait>(
&'life0 self,
unit: &'life1 CurrencyUnit,
options: OutgoingPaymentOptions,
) -> Pin<Box<dyn Future<Output = Result<PaymentQuoteResponse, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get payment quote Used to get fee and amount required for a payment request
Source§fn make_payment<'life0, 'life1, 'async_trait>(
&'life0 self,
unit: &'life1 CurrencyUnit,
options: OutgoingPaymentOptions,
) -> Pin<Box<dyn Future<Output = Result<MakePaymentResponse, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn make_payment<'life0, 'life1, 'async_trait>(
&'life0 self,
unit: &'life1 CurrencyUnit,
options: OutgoingPaymentOptions,
) -> Pin<Box<dyn Future<Output = Result<MakePaymentResponse, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Pay request
Source§fn wait_any_incoming_payment<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = WaitPaymentResponse> + Send>>, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn wait_any_incoming_payment<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = WaitPaymentResponse> + Send>>, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Listen for invoices to be paid to the mint Returns a stream of request_lookup_id once invoices are paid
Source§fn is_wait_invoice_active(&self) -> bool
fn is_wait_invoice_active(&self) -> bool
Is wait invoice active
Source§fn cancel_wait_invoice(&self)
fn cancel_wait_invoice(&self)
Cancel wait invoice
Source§fn check_incoming_payment_status<'life0, 'life1, 'async_trait>(
&'life0 self,
payment_identifier: &'life1 PaymentIdentifier,
) -> Pin<Box<dyn Future<Output = Result<Vec<WaitPaymentResponse>, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn check_incoming_payment_status<'life0, 'life1, 'async_trait>(
&'life0 self,
payment_identifier: &'life1 PaymentIdentifier,
) -> Pin<Box<dyn Future<Output = Result<Vec<WaitPaymentResponse>, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Check the status of an incoming payment
Source§fn check_outgoing_payment<'life0, 'life1, 'async_trait>(
&'life0 self,
request_lookup_id: &'life1 PaymentIdentifier,
) -> Pin<Box<dyn Future<Output = Result<MakePaymentResponse, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn check_outgoing_payment<'life0, 'life1, 'async_trait>(
&'life0 self,
request_lookup_id: &'life1 PaymentIdentifier,
) -> Pin<Box<dyn Future<Output = Result<MakePaymentResponse, Self::Err>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Check the status of an outgoing payment
Auto Trait Implementations§
impl Freeze for CdkLdkNode
impl !RefUnwindSafe for CdkLdkNode
impl Send for CdkLdkNode
impl Sync for CdkLdkNode
impl Unpin for CdkLdkNode
impl !UnwindSafe for CdkLdkNode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more