X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=rust-lightning;a=blobdiff_plain;f=README.md;h=7dec713f637e23c5eb316c1ba56b7d6e93a9e724;hp=24a76c2276dab03433a68f3d689c634d167c425f;hb=HEAD;hpb=24fd566567320b4d78fa868cce873bd733e30ce5 diff --git a/README.md b/README.md index 24a76c22..7dec713f 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,26 @@ +[![Safety Dance](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/) + Rust-Lightning, not Rusty's Lightning! +===== + +Documentation can be found at [docs.rs](https://docs.rs/lightning/) + +The project implements all of the BOLT specifications in the 1.0 spec except +for [channel queries](https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#query-messages). 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. -Currently somewhere near 5% towards usable, published to see if there is any -real interest from folks in either contributing to or using a lightning rust -library. +Communications for Rust-Lightning and Lightning Development Kit happens through +[LDK slack](http://lightningdevkit.org/). + +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 @@ -20,39 +38,14 @@ 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. -Assorted random TODOs: - - * Create a general timer interface - this should be passed around in reference - form to most objects to allow them to register functions which are called on - a timer. By default we should provide an implementation of this which uses - some newfangled rusty promise-y library, but should generally ensure a - client can simply integrate this into whatever existing timer interface - they use. (This is partially complete, but the events stuff needs to also - exist in Channel, which has a few inline TODOs to set up timers). - - * Figure out how to expose when-to-connect and who-to-connect-to. - - * Implement when-to-connect and who-to-connect-to based on route/node rumoring - and channelmanager state (and some concept of available value in wallet). - - * Some kind of serialization format for on-disk storage of things like - channels, channelmonitors, routing db, etc. - - * BOLT 10/network bootstrapping implementation. - - * Some kind of DoS thing including ban tracking and putting that info in - HandleError (and also rename HandleError) to be propagated up...and then - handled. - - * All the random TODOs and unimplemented!()s across the codebase. +Contributing +------------ - * Type-ify our somewhat random usage of Uint256/[u8; 32]. Use Sha256dHash - where appropriate, create our own types for everything else. +Contributors are warmly welcome, see [CONTRIBUTING.md](CONTRIBUTING.md). - * Some kind of logging subsystem/API. +Project Architecture +--------------------- -Notes on coding style: - * Use tabs. If you want to align lines, use spaces. Any desired alignment - should display fine at any tab-length display setting. +For a Rust-Lightning high-level API introduction, see [ARCH.md](ARCH.md). License is Apache-2.0.