7 个版本
0.3.0 | 2024年6月21日 |
---|---|
0.2.2 | 2024年5月21日 |
0.2.1 | 2024年1月26日 |
0.2.0 | 2023年12月13日 |
0.1.0-alpha | 2023年4月27日 |
#3 in #bdk
1,331 monthly downloads
665KB
15K SLoC
包含 (JAR 文件,62KB) gradle-wrapper.jar,(JAR 文件,62KB) gradle-wrapper.jar
LDK Node
使用 LDK 和 BDK 构建的现成 Lightning 节点库。
LDK Node 是以库形式存在的自托管 Lightning 节点。其核心目标是提供一个小巧、简单且直观的接口,使用户能够轻松设置和运行一个集成了链上钱包的 Lightning 节点。虽然极简主义是其核心,但 LDK Node 旨在足够模块化和可配置,以适用于各种用例。
入门指南
库的主要抽象是 Node
,可以通过设置和配置一个 Builder
来获取,并调用其中一个 build
方法。然后可以通过 start
、stop
、connect_open_channel
、send
等命令控制 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_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();
}
模块化
LDK Node 目前提供了一系列有明确观点的设计选择
- 链上数据由集成的 BDK 钱包处理。
- 链数据目前可能来自 Esplora 服务器,而 Electrum 和
bitcoind
RPC 的支持将很快推出。 - 钱包和通道状态可能持久化到 SQLite 数据库、文件系统或用户实现的自定义后端。
- 通过 Lightning 的点对点网络或 Rapid Gossip Sync 协议获取 Gossip 数据。
- Lightning 和链上钱包的熵可能来自原始字节或 BIP39 密码本。此外,LDK Node 提供了将熵字节生成和持久化到磁盘的手段。
语言支持
LDK 节点本身是用 Rust 编写的,因此可以将其作为库依赖项原生地添加到任何 std
Rust 程序中。然而,除了其 Rust API 之外,它还提供了基于 UniFFI 的 Swift、Kotlin 和 Python 的语言绑定。此外,还有可用的 Flutter 绑定。
MSRV
当前支持的最小 Rust 版本 (MSRV) 为 1.63.0。
依赖项
~49–67MB
~1M SLoC