-
-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
642fe16
commit b112962
Showing
1 changed file
with
12 additions
and
167 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,172 +1,17 @@ | ||
# LNP/BP Core Library | ||
# LNP Core Library | ||
|
||
![Build](https://github.com/LNP-BP/rust-lnpbp/workflows/Build/badge.svg) | ||
![Tests](https://github.com/LNP-BP/rust-lnpbp/workflows/Tests/badge.svg) | ||
![Lints](https://github.com/LNP-BP/rust-lnpbp/workflows/Lints/badge.svg) | ||
[![codecov](https://codecov.io/gh/LNP-BP/rust-lnpbp/branch/master/graph/badge.svg)](https://codecov.io/gh/LNP-BP/rust-lnpbp) | ||
![Build](https://github.com/LNP-WG/lnp-core/workflows/Build/badge.svg) | ||
![Tests](https://github.com/LNP-WG/lnp-core/workflows/Tests/badge.svg) | ||
![Lints](https://github.com/LNP-WG/lnp-core/workflows/Lints/badge.svg) | ||
[![codecov](https://codecov.io/gh/LNP-WG/lnp-core/branch/master/graph/badge.svg)](https://codecov.io/gh/LNP-WG/lnp-core) | ||
|
||
[![crates.io](https://meritbadge.herokuapp.com/lnpbp)](https://crates.io/crates/lnpbp) | ||
[![Docs](https://docs.rs/lnpbp/badge.svg)](https://docs.rs/lnpbp) | ||
[![crates.io](https://meritbadge.herokuapp.com/lnp-core)](https://crates.io/crates/lnp-core) | ||
[![Docs](https://docs.rs/lnp-core/badge.svg)](https://docs.rs/lnp-core) | ||
[![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/) | ||
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) | ||
|
||
This is LNP/BP Core Library: a rust library implementing LNP/BP specifications | ||
<https://github.com/LNP-BP/LNPBPs>. It can be used to simplify development of | ||
layer 2 & 3 solutions on top of Lightning Network and Bitcoin blockchain. | ||
|
||
The current list of the projects based on the library include: | ||
* [RGB](https://github.com/LNP-BP/rgb-node): Confidential & scalable smart | ||
contracts for Bitcoin & Lightning | ||
* [Generalized Lightning Network](https://www.youtube.com/watch?v=YmmNsWS5wiM) | ||
and it's reference implementation named | ||
[LNP node](https://github.com/LNP-BP/lnp-node) enabling: | ||
- RGB extensions | ||
- DLC extensions | ||
- [Lightspeed payments](https://github.com/LNP-BP/LNPBPs/issues/24) | ||
- Multi-peer channels | ||
- Faster lightning experiments (quicker adoption of eltoo, Taproot etc) | ||
* [LNP](https://github.com/LNP-BP/FAQ/blob/master/Presentation%20slides/LNP%20Networking%20%26%20RGB%20Integration_final.pdf): | ||
Networking protocol for privacy-keeping and censorship-resistant applications, | ||
operating in both P2P and RPC modes (currently used as a part of Lightning | ||
network, but our effort is to make it more generic and usable even outside of | ||
LN). All services, developed by LNP/BP Standards Association (see points | ||
below) are made with LNP. | ||
* [BP node](https://github.com/LNP-BP/bp-node): Indexing service for bitcoin | ||
blockchain; more efficient & universal Electrum server replacement. In | ||
perspective - validating Bitcoin network node (using libbitcoinconsus) | ||
|
||
The planned projects: | ||
* Decentralized exchange for Lightning Network | ||
* Bifrost Node: P2P LNP/BP network infrastructural node running | ||
- Decentralized exchange information workflows | ||
- Watchtowers (RGB-enabled) | ||
- DLC oracle provider | ||
- Anonymous intermediate storage for client-validated data (like RGB | ||
consignments) | ||
- Storm storage providers (see below) | ||
* [Storm](https://github.com/storm-org): Incentivised trustless storage and | ||
messaging protocol | ||
* [Prometheus](https://github.com/pandoracore/prometheus-spec): Decentralized | ||
trustless computing | ||
|
||
Potentially, with LNP/BP Core library you can simplify the development of | ||
* Discreet log contracts | ||
* Implement experimental lightning features | ||
* Do complex multi-threaded or elastic/dockerized client-service microservice | ||
architectures | ||
|
||
To learn more about the technologies enabled by the library please check: | ||
* [RGB Technology Internals](https://github.com/LNP-BP/FAQ/blob/master/Presentation%20slides/) | ||
* [Networking with LNP](https://github.com/LNP-BP/FAQ/blob/master/Presentation%20slides/LNP%20Networking%20%26%20RGB%20Integration_final.pdf) | ||
* [LNP/BP Nodes Initiative](https://github.com/LNP-BP/FAQ/blob/master/Presentation%20slides/LNP-BP%20Nodes%20Initiative.pdf) | ||
|
||
The development of the library projects is supported by LNP/BP Standards | ||
Association. | ||
|
||
## Library functionality | ||
|
||
The library provides the code for: | ||
|
||
* RGB: confidential smart contracts with client-side validation, with Lightning | ||
network support | ||
* Improvements & utilities for Bitcoin protocol | ||
* Deterministic commitments that can be embedded into for Bitcoin transactions | ||
and public keys (DBC) | ||
* Single-use seals | ||
* Client-side validation | ||
* Lightning networking protocol (LNP) | ||
* Generalized lightning network | ||
|
||
This code supports both Bitcoin blockchain and Lightning network. | ||
|
||
## Project structure | ||
|
||
The library is built as a single Rust crate with the following top-level mods: | ||
* paradigms: generic paradigms (API best practices) which are not bitcoin-specific | ||
* bp: Bitcoin protocol extensions external to [Bitcoin Core](https://github.com/bitcoin/bitcoin) | ||
functionality and existing [BIPs](http://github.com/bitcoin/bips). These may | ||
also cover those of [LNPBP standards](https://github.com/lnp-bp/lnpbps) which | ||
are not specific for other layers. | ||
* lnp: Lightning Network protocol extensions: networking, generalized lightning | ||
channels and better layerization of | ||
[BOLT specifications](https://github.com/lightningnetwork/lightning-rfc) | ||
* rgb: smart contracts for Bitcoin and Lightning network based client-side | ||
validation, deterministic bitcoin commitments and single-use seals. | ||
* standards: other LNPBPs standard implementation which does not fit into any of | ||
the categories above | ||
|
||
The library is based on other projects: | ||
* [rust-bitcoin](https://github.com/rust-bitcoin/rust-bitcoin) | ||
* [bitcoin_hashes](https://github.com/rust-bitcoin/bitcoin_hashes) | ||
* [rust-secp256k1](https://github.com/rust-bitcoin/rust-secp256k1) | ||
* [rust-secp256k1-zkp](https://github.com/ElementsProject/rust-secp256k1-zkp) | ||
for Pedersen commitments and Bulletproofs used in confidential state inside | ||
RGB protocols | ||
* [rust-miniscript](https://github.com/rust-bitcoin/rust-miniscript) | ||
|
||
## Install | ||
|
||
### Get the dependencies | ||
|
||
On Debian, run | ||
```shell script | ||
sudo apt-get install cargo libssl-dev libzmq3-dev pkg-config g++ cmake | ||
``` | ||
|
||
On Mac OS, run | ||
```shell script | ||
brew cargo pkg-config zmq | ||
``` | ||
|
||
### Clone and compile library | ||
|
||
Minimum supported rust compiler version (MSRV): 1.56.1, due to edition 2021 | ||
requirements | ||
|
||
```shell script | ||
git clone https://github.com/lnp-bp/rust-lnpbp | ||
cd rust-lnpbp | ||
cargo build --release --all-features | ||
``` | ||
|
||
The library can be found in `target/release` directory. | ||
|
||
You can run full test suite with: | ||
|
||
``` | ||
./contrib/test.sh | ||
``` | ||
|
||
Please refer to the [`cargo` documentation](https://doc.rust-lang.org/stable/cargo/) | ||
for more detailed instructions. | ||
|
||
### Use library in other projects | ||
|
||
Add these lines to your `Cargo.toml` file at the very end of the `[dependecies]` | ||
section: | ||
|
||
```toml | ||
lnpbp = "~0.2.0" | ||
lnpbp_derive = "~0.2.0" | ||
lnpbp_services = "~0.2.0" | ||
``` | ||
|
||
|
||
## Contributing | ||
|
||
Contribution guidelines can be found in a separate | ||
[CONTRIBUTING](CONTRIBUTING.md) file | ||
|
||
|
||
## More information | ||
|
||
### Policy on Altcoins/Altchains | ||
|
||
Altcoins and "blockchains" other than Bitcoin blockchain/Bitcoin protocols are | ||
not supported and not planned to be supported; pull requests targeting them will | ||
be declined. | ||
|
||
### Licensing | ||
|
||
See [LICENCE](LICENSE) file. | ||
|
||
This is LNP Core Library: a rust Lighting Network Protocol implementation | ||
written from scratch. This project is an alternative implementation comparing | ||
to LDK; its goals is to provide modular, dependency-minimized, well-written | ||
lightning implementation, which simplifies experiments with new layers and | ||
lightning applications. |