ITADN
lightningdevkit/rust-lightning
lightningdevkit/rust-lightning · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Rust-Lightning

Crate Documentation Safety Dance Security Audit

LDK/rust-lightning 是一个高性能且灵活的 闪电网络协议实现。

主要 crate lightning 与运行时无关。数据持久化、链交互 和网络功能可以由 LDK 的示例模块提供,您也可以提供 自己的自定义实现。 更多信息可在 About 部分中查阅。

状态

该项目实现了所有 BOLT 规范, 自 2021 年起已投入生产使用。与任何闪电网络实现一样,安全部署需要 谨慎和注重细节。

关于 rust-lightning 和 Lightning Development Kit 的沟通通过 我们的 LDK Discord 频道进行。

Crates

  1. lightning LDK 库的核心,实现了 Lightning 协议、通道状态机 以及链上逻辑。支持 no_std 并仅暴露相对较低层的接口。
  2. lightning-background-processor 用于执行 Rust Lightning 所需后台任务的实用工具。
  3. lightning-block-sync 用于从区块源获取链数据并将其输入 Rust Lightning 的实用工具。
  4. lightning-invoice 用于解析和序列化 BOLT #11 Lightning 发票的数据结构。
  5. lightning-net-tokio 使用 Tokio async 运行时实现的 rust-lightning 网络栈。对于希望 直接与 Lightning P2P 节点建立连接的 rust-lightning 客户端,这是一个实现所需网络栈的简单替代方案,尤其 适用于已经使用 Tokio 的客户端。
  6. lightning-persister 实现了管理 rust-lightning 通道数据持久化和检索的实用工具。 持久化通道数据对于避免通道资金丢失至关重要。
  7. lightning-rapid-gossip-sync 用于快速 gossip 图同步的客户端,主要面向移动客户端。

关于

LDK/rust-lightning 是一个通用库,允许你构建一个 Lightning 节点,而无需担心将 Lightning 状态机、 路由和链上惩罚代码(以及其他链交互)完全 正确地实现。请注意,LDK 本身并不是一个节点。对于基于 LDK 的 开箱即用的 Lightning 节点,请参阅 LDK-sample。然而,如果你 想要将 Lightning 与自定义功能(如你自己的链同步、 密钥管理、数据存储/备份逻辑等)集成,LDK 可能是你的最佳选择。 一些 rust-lightning 实用工具,例如 chan_utils 中的那些,也适用于 非 LN 的比特币应用,如离散对数合约(DLCs)和公告板。

如果你希望轻松地在应用程序中集成 lightning,而无需处理 所有样板代码,也请查看 LDK-node 库。

通常,rust-lightning 不提供(但 LDK 有相应实现):

  • 磁盘存储 - 你可以以任何方式存储通道状态 - 无论是 Google Drive/iCloud、本地磁盘、任何键值存储/数据库/远程 服务器,或它们的任意组合 - 我们提供了一个干净的 API,提供 可以序列化为简单二进制块的对象,并以你希望的任何方式存储。
  • 区块链数据 - 我们提供了一个简单的 block_connected/block_disconnected API,你向它提供区块头和交易信息。我们还 提供了一个 API,用于获取我们希望获知的交易信息,该 API 与 Electrum 服务器请求/neutrino 过滤等兼容。
  • UTXO 管理 - RL/LDK 拥有链上资金,只要它们可以作为 可争议的 Lightning 输出的一部分被认领 - 一旦通道关闭 且所有链上输出仅可由用户花费,我们向用户 发出通知,表明某个 UTXO 再次“属于”他们,由他们自行决定如何花费。此外,通道资金通过一个通用 API 完成, 该 API 通知用户需要出现在链上的输出,用户 随后可以为其创建交易。一旦交易创建完成,我们处理 其余部分。这是我们 API 目标的重要组成部分 - 使将 Lightning 集成到拥有自身 链上逻辑的现有链上钱包中变得更加容易 - 无需将资金移入或移出单独的

支持链上交易和独立私钥系统的 Lightning 钱包。

  • networking - 为了使用户能够在嵌入式设备上运行完整的 Lightning 节点,我们完全没有规定如何连接到其他节点!我们提供了一个使用 TCP 套接字的默认实现,但例如,如果你想在硬件钱包上运行完整的 Lightning 节点,你可以通过 USB/串口传输 Lightning 网络消息,然后从另一台机器通过 TCP 套接字发送它们。
  • private keys - 同样,我们有“默认实现”,但用户可以根据一个简单的 API,以任何他们希望的方式向 RL/LDK 提供私钥。我们甚至支持一个用于签名交易的通用 API,允许用户在内存中不保留任何私钥/仅将私钥放在硬件钱包上的情况下运行 RL/LDK。

LDK 的可定制性于 2020 年 2 月在 Advancing Bitcoin 会议上进行了展示: https://vimeo.com/showcase/8372504/video/412818125

设计目标

目标是提供一个功能完备且极其灵活的 Lightning 实现,允许用户决定如何使用它。基于此, 所有功能都应通过简单、可组合的 API 暴露。有关 rust-lightning 灵活性的更多 信息,请参阅上述的 About 部分。

出于安全原因,请勿添加新的依赖项。真的不要添加新的 非可选/非测试/非库依赖项。真的真的不要添加 带有依赖项的依赖项。请说服 Andrew 减少 rust-bitcoin 中的依赖项使用。

Rust-Lightning 与 LDK (Lightning Development Kit)

rust-lightning 指的是本仓库中的核心 lightning crate,而 LDK 包含 rust-lightning 及其所有示例模块和 crate(例如 lightning-persister crate)、语言绑定、示例节点 实现,以及围绕使用 rust-lightning 进行 Lightning 集成或构建 Lightning 节点的其他工具。

标语

"Rust-Lightning, not Rusty's Lightning!"

贡献

热烈欢迎贡献者,请参阅 CONTRIBUTING.md.

项目架构

有关 rust-lightning 高级 API 的介绍,请参阅 ARCH.md.

许可证为 Apache-2.0 或 MIT,由用户选择(即双重许可 Apache-2.0 和 MIT)。