Skip to content

Rust implementation of lightning network encoding as defined by BOLTs

License

Notifications You must be signed in to change notification settings

LNP-WG/lightning_encoding

Repository files navigation

LNP/BP Core Library

Build Tests Lints codecov

crates.io Docs unsafe forbidden MIT licensed

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:

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 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:

Install

Get the dependencies

On Debian, run

sudo apt-get install cargo libssl-dev libzmq3-dev pkg-config g++ cmake

On Mac OS, run

brew cargo pkg-config zmq

Clone and compile library

Minimum supported rust compiler version (MSRV): 1.56.1, due to edition 2021 requirements

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.

Use library in other projects

Add these lines to your Cargo.toml file at the very end of the [dependecies] section:

lnpbp = "~0.2.0"
lnpbp_derive = "~0.2.0"
lnpbp_services = "~0.2.0"

Contributing

Contribution guidelines can be found in a separate CONTRIBUTING 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 file.

About

Rust implementation of lightning network encoding as defined by BOLTs

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages