Crate ldk_node

source ·
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§

Modules§

  • Objects for querying the network graph.
  • Objects and traits for data persistence.
  • Objects for different types of payments.

Structs§

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.

Functions§