Crate lightning

source ·
Expand description

Rust-Lightning, not Rusty’s Lightning!

A full-featured but also flexible lightning implementation, in library form. This allows the user (you) to decide how they wish to use it instead of being a fully self-contained daemon. This means there is no built-in threading/execution environment and it’s up to the user to figure out how best to make networking happen/timers fire/things get written to disk/keys get generated/etc. This makes it a good candidate for tight integration into an existing wallet instead of having a rather-separate lightning appendage to a wallet.

default features are:

  • std - enables functionalities which require std, including std::io trait implementations and things which utilize time
  • grind_signatures - enables generation of low-r bitcoin signatures, which saves 1 byte per signature in 50% of the cases (see bitcoin PR #13666)

Available features are:

  • std
  • grind_signatures
  • no-std - exposes write trait implementations from the core2 crate (at least one of no-std or std are required)
  • Skip logging of messages at levels below the given log level:
    • max_level_off
    • max_level_error
    • max_level_warn
    • max_level_info
    • max_level_debug
    • max_level_trace


  • Creating blinded paths and related utilities live here.
  • Structs and traits which allow other parts of rust-lightning to interact with the blockchain.
  • Events are returned from various bits in the library which indicate some action must be taken by the client.
  • iostd
    Re-export of either core2::io or std::io, depending on the std feature flag. Traits, helpers, and type definitions for core I/O functionality.
  • Implementations of various parts of the Lightning protocol are in this module.
  • Implementation of Lightning Offers (BOLT 12).
  • Onion Messages: sending, receiving, forwarding, and ancillary utilities live here
  • Structs and impls for receiving messages about the network and storing the topology live here.
  • Provides keys to LDK and defines some useful objects describing spendable on-chain outputs.
  • Some utility modules live here. See individual sub-modules for more info.