1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#![warn(missing_docs)]

//! This crate is part of the `bitcoin-spv` project.
//!
//! This work is produced and copyrighted by Summa, and released under
//! the terms of the LGPLv3 license.
//!
//! It contains a collection of Rust functions and structs for working with
//! Bitcoin data structures. Basically, these tools help you parse, inspect,
//! and authenticate Bitcoin transactions.
//!
//! *It is extremely easy to write insecure code using these libraries. We do
//! not recommend a specific security model. Any SPV verification involves
//! complex security assumptions. Please seek external review for your design
//! before building with these libraries.*

/// `btcspv` provides basic Bitcoin transaction and header parsing, as well as
/// utility functions like merkle verification and difficulty adjustment
/// calculation.
pub mod btcspv;

/// `validatespv` provides higher-levels of abstraction for evaluating
/// SPV proofs, transactions, and headers.
pub mod validatespv;

/// `types` exposes useful structs for headers and SPV proofs, and provides
/// (de)serialization for these structs. It implements a standard JSON format
/// that is compatible with all other `bitcoin-spv` implementations.
pub mod types;

/// `utils` contains utility functions for working with bytestrings, including
/// hex encoding and decoding.
pub mod utils;

/// `wasm` contains versions of `btcspv` and `validatespv` that can be
/// compiled and used in any standard wasm environment.
pub mod wasm;