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_payment, etc.:
use ldk_node::Builder;
use ldk_node::lightning_invoice::Invoice;
use ldk_node::bitcoin::secp256k1::PublicKey;
use std::str::FromStr;
fn main() {
let node = Builder::new()
.set_network("testnet")
.set_esplora_server_url("https://blockstream.info/testnet/api".to_string())
.build();
node.start().unwrap();
let _funding_address = node.new_funding_address();
// .. fund address ..
node.sync_wallets().unwrap();
let node_id = PublicKey::from_str("NODE_ID").unwrap();
let node_addr = "IP_ADDR:PORT".parse().unwrap();
node.connect_open_channel(node_id, node_addr, 10000, None, false).unwrap();
let invoice = Invoice::from_str("INVOICE_STR").unwrap();
node.send_payment(&invoice).unwrap();
node.stop().unwrap();
}Re-exports
pub use bip39;pub use bitcoin;pub use lightning;pub use lightning_invoice;
Structs
- A builder for an
Nodeinstance, allowing to set some configuration and module choices from the getgo. - Represents the configuration of an
Nodeinstance. - The main interface object of LDK Node, wrapping the necessary LDK and BDK functionalities.
- Represents a payment.
Enums
- An error that possibly needs to be handled by the user.
- An event emitted by
Node, which should be handled by the user. - Represents the direction of a payment.
- Represents the current status of a payment.