Lightning Peach node in rust
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
bincode @ c516564 customized serialization of variant, fixed Message serialization/dese… Jul 30, 2018
binformat Merge branch 'integration' of Feb 9, 2019
bitcoin-types updated dependencies, unified style, Jan 8, 2019
brontide simplified abstract cryptography Feb 18, 2019
chainntfs added chainntfs crate Nov 8, 2018
channel Merge branch 'channel' of Feb 17, 2019
channel_machine combined channel with peer structure Feb 18, 2019
common-types simplified abstract cryptography Feb 18, 2019
connection combined channel with peer structure Feb 18, 2019
data/s1_zero add lnd/bitcoind launch scripts Aug 17, 2018
hdkeychain Added hdkeychain package Aug 2, 2018
onion updated onion Feb 17, 2019
processor changed message processing api Jan 16, 2019
rpc add lightning peach grpc client and corresponding module to testenv Feb 6, 2019
shachain Merge branch 'integration' of Feb 9, 2019
src Merge branch 'integration' of Feb 9, 2019
state [LNP-986] improved path search, added channel and nodes linkage Jan 7, 2019
wallet started fee doc Aug 9, 2018
wire fixed warnings Feb 18, 2019
.gitmodules change link to submodule, HTTPS -> SSH Jul 27, 2018
Cargo.lock combined channel with peer structure Feb 18, 2019
Cargo.toml added basic channel_machine Feb 17, 2019
LICENSE add explicit LICENSE file Oct 28, 2018 added lnd to lpd migration doc; added cli interface description Jan 21, 2019
rustfmt.toml implemented Debug, minor refactoring, rustfmt Nov 3, 2018

Lightning Peach Daemon

The Lightning Peach Daemon (lpd) - is a partial implementation of a Lightning Network node in Rust.

Work is still in early stages. Currently near 20% towards usable production ready system.

The goal is to provide a full-featured implementation of Lightning with enhanced security (due to a Rust usage) which potentially can be run on many platforms including WASM.

As a reference implementation [lnd] ( was used.

Lightning Network Specification Compliance

lpd partially implements the Lightning Network specification (BOLTs). BOLT stands for: Basic of Lightning Technologies.

  • [partial] BOLT 1: Base Protocol
  • [partial] BOLT 2: Peer Protocol for Channel Management
  • [partial] BOLT 3: Bitcoin Transaction and Script Formats
  • [full] BOLT 4: Onion Routing Protocol
  • [not implemented] BOLT 5: Recommendations for On-chain Transaction Handling
  • [partial] BOLT 7: P2P Node and Channel Discovery
  • [full] BOLT 8: Encrypted and Authenticated Transport
  • [partial] BOLT 9: Assigned Feature Flags
  • [not implemented] BOLT 10: DNS Bootstrap and Assisted Node Location
  • [not implemented] BOLT 11: Invoice Protocol for Lightning Payments

See rpc/interface/*.proto for rpc interface.

The command for running the rpc server is:

cargo run --package server


cargo run --package server --release

for release configuration. Cli parameters are following:

  • --pkcs12=path/to/p12
  • --pkcs12-password=qwerty123
  • --rpclisten= ip and port to listen RPC on. Default is
  • --listen= ip and port to listen peers on. Default is
  • --db-path=path/to/database path to database directory. Default is target/db.

CLI parameters are passed through --, for example

cargo run --package server -- --db-path=tmp/somedb --listen=

We firmly believe in the share early, share often approach. The basic premise of the approach is to announce your plans before you start work, and once you have started working share your work when any progress is made. Do not wait for a one large pull request.

Communication is done using github issues. If you have an idea, issue with code or want to contribute create an issue on github.