#lightning #ldk #bitcoin #bdk #setup

已删除 fedimint-ldk-node

使用 LDK 构建的现成节点实现

1 个不稳定版本

0.1.0 2023年11月25日

#7#ldk

MIT/Apache

365KB
8K SLoC

Rust 5.5K SLoC // 0.0% comments Swift 2K SLoC // 0.1% comments Kotlin 476 SLoC // 0.1% comments Batch 142 SLoC Shell 92 SLoC // 0.1% comments Python 60 SLoC

包含 (JAR 文件,62KB) gradle-wrapper.jar,(JAR 文件,62KB) gradle-wrapper.jar

LDK 节点

Crate Documentation

使用 LDKBDK 构建的现成 Lightning 节点库。

LDK 节点是库形式的自托管 Lightning 节点。其核心目标是提供一个小巧、简单、直观的接口,使用户能够轻松设置和运行带有集成链上钱包的 Lightning 节点。虽然简约是其核心,但 LDK 节点旨在足够模块化和可配置,以便适用于各种用例。

入门指南

库的主要抽象是 Node,可以通过设置和配置一个 Builder 来获取,并调用其中一个 build 方法。然后可以通过 startstopconnect_open_channelsend_payment 等命令来控制 Node

use ldk_node::{Builder, NetAddress};
use ldk_node::lightning_invoice::Invoice;
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.new_onchain_address();

	// .. fund address ..

	let node_id = PublicKey::from_str("NODE_ID").unwrap();
	let node_addr = NetAddress::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 = Invoice::from_str("INVOICE_STR").unwrap();
	node.send_payment(&invoice).unwrap();

	node.stop().unwrap();
}

模块化

LDK 节点目前提供了一系列明确的设计选择

  • 链上数据由集成的 BDK 钱包处理。
  • 链数据目前可能来自 Esplora 服务器,而 Electrum 和 bitcoind RPC 的支持将很快推出。
  • 钱包和频道状态可以持久化到 SQLite 数据库、文件系统或用户实现的自定义后端。
  • 通过 Lightning 的点对点网络或 Rapid Gossip Sync 协议获取八卦数据。
  • Lightning 和链上钱包的熵可以来自原始字节或 BIP39 密码。此外,LDK 节点还提供了生成和将熵字节持久化到磁盘的方法。

语言支持

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

MSRV

目前支持的最小Rust版本(MSRV)为1.60.0。

依赖项

~48–65MB
~1M SLoC