A fork of rust-lightning with support for advanced and experimental features such as custom scripts and advanced LSP tooling.
The primary crate, lightning
, is runtime-agnostic. Data persistence, chain interactions,
and networking can be provided by LDK's sample modules, or you may provide your
own custom implementations.
More information is available in the About
section.
The project implements all of the BOLT specifications, and has been in production use since 2021. As with any Lightning implementation, care and attention to detail is important for safe deployment.
- lightning
The core of the LDK library, implements the Lightning protocol, channel state machine,
and on-chain logic. Supports
no-std
and exposes only relatively low-level interfaces. - lightning-background-processor Utilities to perform required background tasks for Rust Lightning.
- lightning-block-sync Utilities to fetch the chain data from a block source and feed them into Rust Lightning.
- lightning-invoice Data structures to parse and serialize BOLT #11 Lightning invoices.
- lightning-net-tokio
Implementation of the
rust-lightning
network stack using the Tokioasync
runtime. Forrust-lightning
clients which wish to make direct connections to Lightning P2P nodes, this is a simple alternative to implementing the required network stack, especially for those already using Tokio. - lightning-persister
Implements utilities to manage
rust-lightning
channel data persistence and retrieval. Persisting channel data is crucial to avoiding loss of channel funds. - lightning-rapid-gossip-sync Client for rapid gossip graph syncing, aimed primarily at mobile clients.
The goal is to provide a fully-featured and incredibly flexible Lightning
implementation, allowing users to decide how they wish to use it. With that
in mind, everything should be exposed via simple, composable APIs. More
information about rust-lightning
's flexibility is provided in the About
section above.
For security reasons, do not add new dependencies. Really do not add new
non-optional/non-test/non-library dependencies. Really really do not add
dependencies with dependencies. Do convince Andrew to cut down dependency usage
in rust-bitcoin
.
rust-lightning
refers to the core lightning
crate within this repo, whereas
LDK encompasses rust-lightning
and all of its sample modules and crates (e.g.
the lightning-persister
crate), language bindings, sample node
implementation(s), and other tools built around using rust-lightning
for
Lightning integration or building a Lightning node.
"Rust-Lightning, not Rusty's Lightning!"
Contributors are warmly welcome, see CONTRIBUTING.md.
For a rust-lightning
high-level API introduction, see ARCH.md.
License is either Apache-2.0 or MIT, at the option of the user (ie dual-license Apache-2.0 and MIT).