A highly modular Bitcoin Lightning library written in Rust. It's rust-lightning, not Rusty's Lightning!
Find a file
bmancini55 e0bb63bc60 Remove should_request_full_sync from RoutingMessageHandler
This method was used to set the initial_routing_sync flag when sending
an outbound Init message to a peer. Since we are now relying on
gossip_queries instead of initial_routing_sync, synchronization can be
fully encapsulate into RoutingMessageHandler via sync_routing_table.

This commit removes should_request_full_sync from the trait
RoutingMessageHandler. The implementation is still used in
NetGraphMsgHandler and has been converted into a private method instead
of a trait function.
2020-12-14 12:52:59 -05:00
.github/workflows [bindings] Use the same SipHash keys to make C++ header stable 2020-10-21 14:54:51 -04:00
c-bindings-gen [bindings] Update eq/clone trait fns to take object, not this_arg 2020-11-23 11:08:34 -05:00
ci Check each commit at least builds in CI 2020-09-15 19:24:08 -04:00
fuzz Add genesis block hash to NetworkGraph 2020-12-09 15:02:32 -05:00
lightning Remove should_request_full_sync from RoutingMessageHandler 2020-12-14 12:52:59 -05:00
lightning-c-bindings Merge pull request #759 from TheBlueMatt/2020-11-0.0.12 2020-11-24 14:14:16 -08:00
lightning-net-tokio Remove should_request_full_sync from RoutingMessageHandler 2020-12-14 12:52:59 -05:00
lightning-persister Bump version to 0.0.12 2020-11-24 16:35:20 -05:00
.editorconfig Mandate new line at end of file in editorconfig. 2020-04-11 11:33:07 -07:00
.gitignore Add a few more things to gitignore for bindings 2020-09-13 20:58:50 -04:00
ARCH.md Fix architecture diagram arrow directions 2020-09-30 22:41:23 -07:00
Cargo.toml Add a sample module FilesystemPersister. 2020-10-16 13:41:36 -04:00
CONTRIBUTING.md Add a Getting Started 2020-11-09 15:53:36 -05:00
genbindings.sh Use CARGO_PROFILE_RELEASE_LTO to fix bindings build on new cargo 2020-11-23 11:12:49 -05:00
LICENSE-APACHE Relicense as dual Apache-2.0 + MIT 2020-08-10 21:12:44 -04:00
LICENSE-MIT Relicense as dual Apache-2.0 + MIT 2020-08-10 21:12:44 -04:00
LICENSE.md Relicense as dual Apache-2.0 + MIT 2020-08-10 21:12:44 -04:00
README.md Fix capitalization Gleb suggested 2020-10-02 11:16:22 -04:00

Rust-Lightning

Crate Documentation Safety Dance

Rust-Lightning is a Bitcoin Lightning library written in Rust. The main crate, lightning, does not handle networking, persistence, or any other I/O. Thus, it is runtime-agnostic, but users must implement basic networking logic, chain interactions, and disk storage.

The lightning-net-tokio crate implements Lightning networking using the Tokio async runtime.

Status

The project implements all of the BOLT specifications in the 1.0 spec except for channel queries. The implementation has pretty good test coverage that is expected to continue to improve. There are a number of internal refactorings being done now that will make the code base more welcoming to new contributors. It is also anticipated that as developers begin using the API, the lessons from that will result in changes to the API, so any developer using this API at this stage should be prepared to embrace that. The current state is sufficient for a developer or project to experiment with it. Recent increased contribution rate to the project is expected to lead to a high quality, stable, production-worthy implementation in 2020.

Communications for Rust-Lightning and Lightning Development Kit happens through LDK slack.

Design Goal

The goal is to provide a full-featured but also incredibly flexible lightning implementation, allowing the user to decide how they wish to use it. With that in mind, everything should be exposed via simple, composable APIs. The user should be able to decide whether they wish to use their own threading/execution models, allowing usage inside of existing library architectures, or allow us to handle that for them. Same goes with network connections - if the user wishes to use their own networking stack, they should be able to do so! This all means that we should provide simple external interfaces which allow the user to drive all execution, while implementing sample execution drivers that create a full-featured lightning daemon by default.

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.

Tagline

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

Contributing

Contributors are warmly welcome, see CONTRIBUTING.md.

Project Architecture

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).