Skip to main content

dusk_plonk/proof_system/
preprocess.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//! Methods to preprocess the constraint system for use in a proof
8
9use crate::fft::Polynomial;
10
11/// Struct that contains all selector and permutation [`Polynomials`]s
12pub(crate) struct Polynomials {
13    // selector polynomials defining arithmetic circuits
14    pub(crate) q_m: Polynomial,
15    pub(crate) q_l: Polynomial,
16    pub(crate) q_r: Polynomial,
17    pub(crate) q_o: Polynomial,
18    pub(crate) q_f: Polynomial, // for 3-input gates
19    pub(crate) q_c: Polynomial,
20
21    // additional selectors for different kinds of circuits added for
22    // efficiency of implementation
23    pub(crate) q_arith: Polynomial, // arithmetic circuits
24    pub(crate) q_range: Polynomial, // range proofs
25    pub(crate) q_logic: Polynomial, // boolean operations
26    pub(crate) q_fixed_group_add: Polynomial, // ecc circuits
27    pub(crate) q_variable_group_add: Polynomial, // ecc circuits
28
29    // copy permutation polynomials
30    pub(crate) s_sigma_1: Polynomial,
31    pub(crate) s_sigma_2: Polynomial,
32    pub(crate) s_sigma_3: Polynomial,
33    pub(crate) s_sigma_4: Polynomial, // for q_F
34}