fullcodec_plonk/lib.rs
1// This Source Code Form is subject to the terms of the Mozilla Public
2// License, v. 2.0. If a copy of the MPL was not distributed with this
3// file, You can obtain one at http://mozilla.org/MPL/2.0/.
4//
5// Copyright (c) DUSK NETWORK. All rights reserved.
6
7#![doc = include_str!("../README.md")]
8#![doc(
9 html_logo_url = "https://lh3.googleusercontent.com/SmwswGxtgIANTbDrCOn5EKcRBnVdHjmYsHYxLq2HZNXWCQ9-fZyaea-bNgdX9eR0XGSqiMFi=w128-h128-e365"
10)]
11#![doc(html_favicon_url = "https://dusk.network/lib/img/favicon-16x16.png")]
12//!<a href="https://codecov.io/gh/dusk-network/plonk">
13//! <img src="https://codecov.io/gh/dusk-network/plonk/branch/master/graph/badge.svg" />
14//!</a>
15//! <a href="https://travis-ci.com/dusk-network/plonk">
16//! <img src="https://travis-ci.com/dusk-network/plonk.svg?branch=master" />
17//! </a>
18//! <a href="https://github.com/dusk-network/plonk">
19//! <img alt="GitHub issues" src="https://img.shields.io/github/issues-raw/dusk-network/plonk?style=plastic">
20//! </a>
21//! <a href="https://github.com/dusk-network/plonk/blob/master/LICENSE">
22//! <img alt="GitHub" src="https://img.shields.io/github/license/dusk-network/plonk?color=%230E55EF">
23//! </a>
24//!
25//!
26//! Permutations over Lagrange-bases for Oecumenical Noninteractive
27//! arguments of Knowledge (PLONK) is a zero knowledge proof system.
28//!
29//! This protocol was created by:
30//! - Ariel Gabizon (Protocol Labs),
31//! - Zachary J. Williamson (Aztec Protocol)
32//! - Oana Ciobotaru
33//!
34//! This crate contains a pure-rust implementation done by the [DuskNetwork
35//! team](dusk.network) of this algorithm using as a reference implementation
36//! this one done by the creators of the protocol:
37//!
38//! <https://github.com/AztecProtocol/barretenberg/blob/master/barretenberg/src/aztec/plonk/>
39//!
40//! If you want to see library usage examples, please check:
41//! <https://github.com/dusk-network/plonk/tree/v0.1.0/examples>
42
43// Bitshift/Bitwise ops are allowed to gain performance.
44#![allow(clippy::suspicious_arithmetic_impl)]
45// Some structs do not have AddAssign or MulAssign impl.
46#![allow(clippy::suspicious_op_assign_impl)]
47// Witness have always the same names in respect to wires.
48#![allow(clippy::many_single_char_names)]
49// Bool expr are usually easier to read with match statements.
50#![allow(clippy::match_bool)]
51// We have quite some functions that require quite some args by it's nature.
52// It can be refactored but for now, we avoid these warns.
53#![allow(clippy::too_many_arguments)]
54#![deny(rustdoc::broken_intra_doc_links)]
55#![deny(missing_docs)]
56#![cfg_attr(not(feature = "std"), no_std)]
57
58mod bit_iterator;
59mod permutation;
60mod util;
61
62pub mod circuit;
63pub mod constraint_system;
64pub mod plonkup;
65
66mod fft;
67mod transcript;
68
69pub mod commitment_scheme;
70pub mod error;
71pub mod prelude;
72pub mod proof_system;
73
74#[doc = include_str!("../docs/notes-intro.md")]
75pub mod notes {
76 #[doc = include_str!("../docs/notes-commitments.md")]
77 pub mod commitment_schemes {}
78 #[doc = include_str!("../docs/notes-snark.md")]
79 pub mod snark_construction {}
80 #[doc = include_str!("../docs/notes-prove-verify.md")]
81 pub mod prove_verify {}
82 #[doc = include_str!("../docs/notes-KZG10.md")]
83 pub mod kzg10_docs {}
84}