Expand description
§LDK Node
A ready-to-go Lightning node library built using LDK and BDK.
LDK Node is a non-custodial Lightning node in library form. Its central goal is to provide a small, simple, and straightforward interface that enables users to easily set up and run a Lightning node with an integrated on-chain wallet. While minimalism is at its core, LDK Node aims to be sufficiently modular and configurable to be useful for a variety of use cases.
§Getting Started
The primary abstraction of the library is the Node
, which can be retrieved by setting up
and configuring a Builder
to your liking and calling build
. Node
can then be
controlled via commands such as start
, stop
, connect_open_channel
,
send
, etc.:
use ldk_node::Builder;
use ldk_node::lightning_invoice::Bolt11Invoice;
use ldk_node::lightning::ln::msgs::SocketAddress;
use ldk_node::bitcoin::Network;
use ldk_node::bitcoin::secp256k1::PublicKey;
use std::str::FromStr;
fn main() {
let mut builder = Builder::new();
builder.set_network(Network::Testnet);
builder.set_esplora_server("https://blockstream.info/testnet/api".to_string());
builder.set_gossip_source_rgs("https://rapidsync.lightningdevkit.org/testnet/snapshot".to_string());
let node = builder.build().unwrap();
node.start().unwrap();
let funding_address = node.onchain_payment().new_address();
// .. fund address ..
let node_id = PublicKey::from_str("NODE_ID").unwrap();
let node_addr = SocketAddress::from_str("IP_ADDR:PORT").unwrap();
node.connect_open_channel(node_id, node_addr, 10000, None, None, false).unwrap();
let event = node.wait_next_event();
println!("EVENT: {:?}", event);
node.event_handled();
let invoice = Bolt11Invoice::from_str("INVOICE_STR").unwrap();
node.bolt11_payment().send(&invoice).unwrap();
node.stop().unwrap();
}
Re-exports§
pub use bip39;
pub use bitcoin;
pub use lightning;
pub use lightning_invoice;
Modules§
- Objects for querying the network graph.
- Objects and traits for data persistence.
- Objects for different types of payments.
Structs§
- Configuration options pertaining to ‘Anchor’ channels, i.e., channels for which the
option_anchors_zero_fee_htlc_tx
channel type is negotiated. - Details of the known available balances returned by
Node::list_balances
. - BuilderNon-
uniffi
A builder for anNode
instance, allowing to set some configuration and module choices from the getgo. - Options which apply on a per-channel basis.
- Details of a channel as returned by
Node::list_channels
. - Represents the configuration of an
Node
instance. - The main interface object of LDK Node, wrapping the necessary LDK and BDK functionalities.
- Represents the status of the
Node
. - Details of a known Lightning peer as returned by
Node::list_peers
. - A local, potentially user-provided, identifier of a channel.
Enums§
- An error encountered during building a
Node
. - An event emitted by
Node
, which should be handled by the user. - Details about the status of a known Lightning balance.
- An enum representing the available verbosity levels of the logger.
- An error that possibly needs to be handled by the user.
- Details about the status of a known balance currently being swept to our on-chain wallet.