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: Confidential & scalable smart contracts for Bitcoin & Lightning * Generalized Lightning Network and it's reference implementation named LNP node enabling: - RGB extensions - DLC extensions - Lightspeed payments - Multi-peer channels - Faster lightning experiments (quicker adoption of eltoo, Taproot etc) * LNP: 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: 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: Incentivised trustless storage and messaging protocol * Prometheus: 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 * Networking with LNP * LNP/BP Nodes Initiative
The development of the library projects is supported by LNP/BP Standards Association.
The library provides the code for:
This code supports both Bitcoin blockchain and Lightning network.
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 functionality and existing BIPs. These may also cover those of LNPBP standards which are not specific for other layers. * lnp: Lightning Network protocol extensions: networking, generalized lightning channels and better layerization of BOLT specifications * 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 * bitcoin_hashes * rust-secp256k1 * rust-secp256k1-zkp for Pedersen commitments and Bulletproofs used in confidential state inside RGB protocols * rust-miniscript
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
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
for more detailed instructions.
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"
Contribution guidelines can be found in a separate CONTRIBUTING file
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.
See LICENCE file.