#consensus #bitcoin #lnp-bp #binary-encoding #rgb #data-structures

confined_encoding

Confined encoding: deterministic binary serialization for client-side validation

5 releases

0.9.0-alpha.5 Dec 7, 2022
0.9.0-alpha.4 Nov 26, 2022
0.9.0-alpha.3 Nov 25, 2022
0.9.0-alpha.2 Nov 17, 2022
0.9.0-alpha.1 Nov 16, 2022

#26 in #lnp-bp


Used in confined_encoding_test

Apache-2.0

72KB
1.5K SLoC

Confined encoding library

Build Tests Lints codecov

Docs unsafe forbidden Apache-2 licensed

Deterministic binary serialization for consenus-critical applications in client-side-validation.

This library is based on strict encoding standard, defined by LNPBP-7. Strict encoding is a binary conservative encoding extensively used in client-side-validation for deterministic portable (platform-independent) serialization of data with a known internal data structure. Strict encoding is a schema-less encoding.

Client-side-validation is a paradigm for distributed computing, based on top of proof-of-publication/commitment medium layer, which may be a bitcoin blockchain or other type of distributed consensus system.

The development of the library is supported by LNP/BP Standards Association.

The library is designed after Peter Todd ideas for client-side-validated data serialization by Dr Maxim Orlovsky, who shaped the ideas into the standards and implemented them as a part of this library.

Documentation

Detailed developer & API documentation for the library can be accessed at https://docs.rs/confined_encoding/

To learn about the technologies enabled by the library please check slides from our tech presentations and LNP/BP tech talks videos

Usage

To use the library, you just need to reference a latest version, in [dependencies] section of your project Cargo.toml.

confined_encoding = "2.0"

If you are using other client-side-validation libraries, consider importing just a single client_side_validation library which re-exports all of them, including the current one.

Library defines two main traits, ConfinedEncode and ConfinedDecode, which should be implemented on each type that requires to be represented for client-side-validation.

Library exports derivation macros #[derive(ConfinedEncode, ConfinedDecode)], which are a part of confined_encoding_derive sub-crate and controlled by a default feature derive.

Contributing

Contribution guidelines can be found in CONTRIBUTING

Licensing

The libraries are distributed on the terms of Apache 2.0 opensource license. See LICENCE file for the license details.

Dependencies

~9.5MB
~144K SLoC