#lnp-bp #lightning #networking #internet2 #proc-macro

macro lightning_encoding_derive

Derive macros for lightning network peer protocol encodings

10 releases (5 breaking)

Uses new Rust 2021

0.8.0 Jun 30, 2022
0.6.0 May 5, 2022
0.6.0-rc.1 Mar 13, 2022
0.5.3 Dec 6, 2021
0.4.0 Mar 8, 2021

#240 in Encoding

Download history 241/week @ 2022-04-24 454/week @ 2022-05-01 435/week @ 2022-05-08 413/week @ 2022-05-15 1247/week @ 2022-05-22 652/week @ 2022-05-29 2275/week @ 2022-06-05 2453/week @ 2022-06-12 4510/week @ 2022-06-19 1811/week @ 2022-06-26 2158/week @ 2022-07-03 2027/week @ 2022-07-10 1463/week @ 2022-07-17 1344/week @ 2022-07-24 414/week @ 2022-07-31 678/week @ 2022-08-07

4,042 downloads per month
Used in lightning_encoding

Apache-2.0

10KB

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.

Dependencies

~0.6–1MB
~23K SLoC