A highly modular Bitcoin Lightning library written in Rust. It's rust-lightning, not Rusty's Lightning!
Find a file
Matt Corallo 0f6b0004c4 Fix two bugs which access the wrong peer's htlc_minimum_msat value
* Channel::get_counterparty_htlc_minimum_msat() returned
   holder_htlc_minimum_msat, which was obviously incorrect.
 * ChannelManager::get_channel_update set htlc_minimum_msat to
   Channel::get_holder_htlc_minimum_msat(), but the spec explicitly
   states we "MUST set htlc_minimum_msat to the minimum HTLC value
   (in millisatoshi) that the channel peer will accept." This makes
   sense because the reason we're rejecting the HTLC is because our
   counterparty's HTLC minimum value is too small for us to send to
   them, our own HTLC minimum value plays no role. Further, our
   router already expects this - looking at the same directional
   channel info as it does fees.

Finally, we add a test in the existing onion router test cases
which fails if either of the above is incorrect (the second issue
discovered in the process of writing the test).
2020-09-16 11:12:51 -04:00
.github/workflows Check each commit at least builds in CI 2020-09-15 19:24:08 -04:00
c-bindings-gen Add tool to read a Rust crate and generate C-compatible wrappers 2020-09-10 21:58:44 -04:00
ci Check each commit at least builds in CI 2020-09-15 19:24:08 -04:00
fuzz Merge pull request #684 from bmancini55/gossip_queries 2020-09-14 13:45:12 -07:00
lightning Fix two bugs which access the wrong peer's htlc_minimum_msat value 2020-09-16 11:12:51 -04:00
lightning-c-bindings Update bindings after merge of #633, #679, #683. 2020-09-16 11:12:51 -04:00
lightning-net-tokio Update to latest upstream rust-bitcoin 2020-09-10 16:20:01 -04: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
.travis.yml Bump MSRV to 1.30.0 2020-08-19 15:39:03 -04:00
ARCH.md Improve routing-related documentation 2020-05-12 09:27:12 -04:00
Cargo.toml Remove the bindings crate from the root namespace to let it break 2020-09-13 20:58:50 -04:00
CONTRIBUTING.md Add developer guideline notes for C/C++ bindings generation 2020-09-11 19:33:29 -04:00
genbindings.sh Rename lightning C/C++ bindings library to libldk 2020-09-13 20:58:50 -04: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 Relicense as dual Apache-2.0 + MIT 2020-08-10 21:12:44 -04:00

Safety Dance

Rust-Lightning, not Rusty's Lightning!

Documentation can be found at docs.rs

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.

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