blitzar/
lib.rs

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// Copyright 2023-present Space and Time Labs, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Refuse to compile if documentation is missing.
#![deny(missing_docs)]

//! <p align="center">
//!   <picture>
//!     <source media="(prefers-color-scheme: dark)" width="200px" srcset="https://raw.githubusercontent.com/spaceandtimelabs/blitzar-rs/assets/logo_dark_background.png">
//!     <source media="(prefers-color-scheme: light)" width="200px" srcset="https://raw.githubusercontent.com/spaceandtimelabs/blitzar-rs/assets/logo_light_background.png">
//!     <img alt="Blitzar" width="200px" src="https://raw.githubusercontent.com/spaceandtimelabs/blitzar-rs/assets/logo_light_background.png">
//!   </picture>
//! </p>
//! <p align="center">
//!   <a href="https://crates.io/crates/blitzar">
//!     <img alt="crates.io version" src="https://img.shields.io/crates/v/blitzar.svg">
//!   </a>
//!   <a href="https://www.rust-lang.org/">
//!     <img alt="Rust" src="https://img.shields.io/badge/rust-1.80-blue">
//!  </a>
//!  <a href="https://developer.nvidia.com/cuda-downloads">
//!     <img alt="CUDA" src="https://img.shields.io/badge/CUDA-12.6.1-green?style=flat&logo=nvidia">
//!  </a>
//!   <a href="https://github.com/spaceandtimelabs/blitzar-rs">
//!     <img alt="Build states" src="https://github.com/spaceandtimelabs/blitzar-rs/actions/workflows/release.yml/badge.svg">
//!   </a>
//! </p>
//!
//! High-Level Rust wrapper for the `blitzar-sys` crate.
//! For the Rust sys-crate and the C++ repo, check
//! [here](https://github.com/spaceandtimelabs/blitzar).
//!
//! ## Considerations:
//!
//! 1. The current library only supports `x86_64` architectures and only the Linux operating system.
//! 2. The library was tested in the `ubuntu22.04` Linux environment.
//! 3. Consider using `docker` or a virtual machine.
//! 4. You must have the latest Rust environment installed in your Linux machine. Download [here](https://www.rust-lang.org/tools/install).
//!

//! ## Use
//!
//! Add the following two lines to your `Cargo.toml` file:
//! ```text
//! [dependencies]
//! blitzar = <version_number>
//! ```
//!
//! Import the necessary modules to your rust code:
//! ```text
//! extern crate blitzar;
//!
//! use blitzar::sequence::*;
//! use blitzar::compute::*;
//! ```

//!## Examples
//!
//!All the examples are located in the `examples/` directory. Each one has its own `.rs` file. To run some example, use the following command:
//!
//!```text
//! cargo run --features <cpu|gpu> --example <example_name>
//!```
//!
//! ## Tests
//! ```text
//!  cargo test
//! ```
//! ## Benchmarks
//! Benchmarks are run using [criterion.rs](https://github.com/bheisler/criterion.rs):
//! ```text
//!  cargo bench --features gpu
//! ```

//------------------------------------------------------------------------
// blitzar public modules
//------------------------------------------------------------------------

// Wrappers for data table
pub mod sequence;

// Responsible for all computations (commitments and generator computation)
pub mod compute;

// Responsible for all proof primitives
pub mod proof;