LDK 节点

Crate Documentation Maven Central Android Maven Central JVM Security Audit

一个使用 LDKBDK 构建的开箱即用的闪电网络节点库。

LDK 节点是一个以库形式存在的自托管闪电网络节点。它的核心目标是提供一个小型、简单和直接的接口,使用户能够轻松设置和运行带有集成链上钱包的闪电网络节点。虽然极简主义是其核心,但 LDK 节点旨在具有足够的模块化和可配置性,以适用于各种用例。

入门指南

该库的主要抽象是 Node,可以通过设置和配置 Builder 并调用 build 方法之一来检索它。然后可以通过诸如 startstopopen_channelsend 等命令来控制 Node

use ldk_node::Builder;
use ldk_node::lightning_invoice::Bolt11Invoice;
use ldk_node::lightning::ln::msgs::SocketAddress;
use ldk_node::bitcoin::secp256k1::PublicKey;
use ldk_node::bitcoin::Network;
use std::str::FromStr;

fn main() {
	let mut builder = Builder::new();
	builder.set_network(Network::Testnet);
	builder.set_chain_source_esplora("https://blockstream.info/testnet/api".to_string(), None);
	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.open_channel(node_id, node_addr, 10000, None, None).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, None).unwrap();

	node.stop().unwrap();
}

模块化

LDK 节点目前采用了一套相当有倾向性的设计选择

语言支持

LDK 节点本身是用 Rust 编写的,因此可以作为库依赖项原生添加到任何 std Rust 程序中。然而,除了 Rust API 之外,它还基于 UniFFI 提供了 SwiftKotlinPython 的语言绑定。此外,Flutter 绑定 也可用。

MSRV

最低支持 Rust 版本 (MSRV) 目前是 1.75.0。