Crate client_side_validation[][src]

Expand description

The LNP/BP client-side-validation foundation libraries implementing LNPBP specifications & standards (LNPBP-4, 7, 8, 9, 42, 81).

Defines core interfaces from LNPBP standards specifying secure and robust practices via well-formet APIs. Consists of the following main components:

  • Client-side validation
  • Cryptographic commitments and verification
  • Single-use-seals
  • Strict binary data serialization used by client-side validation

The goal of this module is to maximally reduce the probability of errors and mistakes within particular implementations of this paradigms by standardizing typical workflow processes in a form of interfaces that will be nearly impossible to use in a wrong way.

Re-exports

pub extern crate commit_verify;
pub extern crate single_use_seals;
pub extern crate strict_encoding;

Modules

commit_encode

Encoding and data preparation for commitment procedures in client-side-validation as defined by LNPBP-9 standard.

merkle

Merklization procedures for client-side-validation according to LNPBP-81 standard.

multi_commit

Multi-message commitments: implementation of LNPBP-4 standard.

tagged_hash

Bitcoin tagged hash helper types.

Structs

Slice32

Wrapper type for all slice-based 256-bit types implementing many important traits, so types based on it can simply derive their implementations.

Status

Client-side-validation status containing all reports from the validation process

Enums

Validity

Result of client-side validation operation

Traits

ClientData

Marker trait for client-side-validation data at any level of data hierarchy.

ClientSideValidate

This simple trait MUST be used by all top-level data structures implementing client-side validation paradigm. The core concept of this paradigm is that a client must have a complete and uniform set of data, which can be represented or accessed through a single structure; and MUST be able to deterministically validate this set giving an external validation function, that is able to provide validator with

SealIssue

Trait for concrete implementations of seal resolution issues reported by SealResolvers during client-side-validation process

SealResolver

Seal resolver validates seal to have closed status, or reports SealResolver::Error otherwise, if the seal does not have a determined status or there was a error accessing seal commitment medium. The reported error does not necessary implies that the seal is not closed and the final decision about seal status must be solved at upper protocol levels or by a informed user action.

ValidationFailure

Validation failures marker trait indicating that the data had not passed client-side-validation and must not be accepted by the client. This does not cover issues related to single-use-seal status, which are covered by SealIssue type

ValidationLog

Marker trait for all types of validation log entries (failures, trust issues, warnings, info messages) contained within a ValidationReport produced during client-side-validation.

ValidationReport

Trait combining different forms of client-side-validation reporting as into a single type pack

Derive Macros

StrictDecode

Derives [::strict_encoding::StrictDncode] implementation for the type.

StrictEncode

Derives ::strict_encoding::StrictEncode implementation for the type.