pub trait Arithmetization<F: FftField>: Circuit<F> {
Show 14 methods
// Required methods
fn srs_size(&self) -> Result<usize, CircuitError>;
fn eval_domain_size(&self) -> Result<usize, CircuitError>;
fn compute_selector_polynomials(
&self,
) -> Result<Vec<DensePolynomial<F>>, CircuitError>;
fn compute_extended_permutation_polynomials(
&self,
) -> Result<Vec<DensePolynomial<F>>, CircuitError>;
fn compute_prod_permutation_polynomial(
&self,
beta: &F,
gamma: &F,
) -> Result<DensePolynomial<F>, CircuitError>;
fn compute_wire_polynomials(
&self,
) -> Result<Vec<DensePolynomial<F>>, CircuitError>;
fn compute_pub_input_polynomial(
&self,
) -> Result<DensePolynomial<F>, CircuitError>;
// Provided methods
fn compute_range_table_polynomial(
&self,
) -> Result<DensePolynomial<F>, CircuitError> { ... }
fn compute_key_table_polynomial(
&self,
) -> Result<DensePolynomial<F>, CircuitError> { ... }
fn compute_table_dom_sep_polynomial(
&self,
) -> Result<DensePolynomial<F>, CircuitError> { ... }
fn compute_q_dom_sep_polynomial(
&self,
) -> Result<DensePolynomial<F>, CircuitError> { ... }
fn compute_merged_lookup_table(
&self,
_tau: F,
) -> Result<Vec<F>, CircuitError> { ... }
fn compute_lookup_sorted_vec_polynomials(
&self,
_tau: F,
_lookup_table: &[F],
) -> Result<(Vec<F>, DensePolynomial<F>, DensePolynomial<F>), CircuitError> { ... }
fn compute_lookup_prod_polynomial(
&self,
_tau: &F,
_beta: &F,
_gamma: &F,
_lookup_table: &[F],
_sorted_vec: &[F],
) -> Result<DensePolynomial<F>, CircuitError> { ... }
}
Expand description
An interface that transforms Plonk circuits to polynomial used by Plonk-based SNARKs.
Required Methods§
Sourcefn srs_size(&self) -> Result<usize, CircuitError>
fn srs_size(&self) -> Result<usize, CircuitError>
The required SRS size for the circuit.
Sourcefn eval_domain_size(&self) -> Result<usize, CircuitError>
fn eval_domain_size(&self) -> Result<usize, CircuitError>
Get the size of the evaluation domain for arithmetization (after circuit has been finalized).
Sourcefn compute_selector_polynomials(
&self,
) -> Result<Vec<DensePolynomial<F>>, CircuitError>
fn compute_selector_polynomials( &self, ) -> Result<Vec<DensePolynomial<F>>, CircuitError>
Compute and return selector polynomials. Return an error if the circuit has not been finalized yet.
Sourcefn compute_extended_permutation_polynomials(
&self,
) -> Result<Vec<DensePolynomial<F>>, CircuitError>
fn compute_extended_permutation_polynomials( &self, ) -> Result<Vec<DensePolynomial<F>>, CircuitError>
Compute and return extended permutation polynomials. Return an error if the circuit has not been finalized yet.
Sourcefn compute_prod_permutation_polynomial(
&self,
beta: &F,
gamma: &F,
) -> Result<DensePolynomial<F>, CircuitError>
fn compute_prod_permutation_polynomial( &self, beta: &F, gamma: &F, ) -> Result<DensePolynomial<F>, CircuitError>
Compute and return the product polynomial for permutation arguments. Return an error if the circuit has not been finalized yet.
Sourcefn compute_wire_polynomials(
&self,
) -> Result<Vec<DensePolynomial<F>>, CircuitError>
fn compute_wire_polynomials( &self, ) -> Result<Vec<DensePolynomial<F>>, CircuitError>
Compute and return the list of wiring witness polynomials. Return an error if the circuit has not been finalized yet.
Sourcefn compute_pub_input_polynomial(
&self,
) -> Result<DensePolynomial<F>, CircuitError>
fn compute_pub_input_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError>
Compute and return the public input polynomial. Return an error if the circuit has not been finalized yet. The IO gates of the circuit are guaranteed to be in the front.
Provided Methods§
Sourcefn compute_range_table_polynomial(
&self,
) -> Result<DensePolynomial<F>, CircuitError>
fn compute_range_table_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError>
Plookup-related methods Return default errors if the constraint system does not support lookup gates.
Compute and return the polynomial that interpolates the range table elements. Return an error if the circuit does not support lookup or has not been finalized yet.
Sourcefn compute_key_table_polynomial(
&self,
) -> Result<DensePolynomial<F>, CircuitError>
fn compute_key_table_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError>
Compute and return the polynomial that interpolates the key table elements. Return an error if the circuit does not support lookup or has not been finalized yet.
Sourcefn compute_table_dom_sep_polynomial(
&self,
) -> Result<DensePolynomial<F>, CircuitError>
fn compute_table_dom_sep_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError>
Compute and return the polynomial that interpolates the table domain separation ids. Return an error if the circuit does not support lookup or has not been finalized.
Sourcefn compute_q_dom_sep_polynomial(
&self,
) -> Result<DensePolynomial<F>, CircuitError>
fn compute_q_dom_sep_polynomial( &self, ) -> Result<DensePolynomial<F>, CircuitError>
Compute and return the polynomial that interpolates the lookup domain sepration selectors for the lookup gates. Return an error if the circuit does not support lookup or has not been finalized.
Sourcefn compute_merged_lookup_table(&self, _tau: F) -> Result<Vec<F>, CircuitError>
fn compute_merged_lookup_table(&self, _tau: F) -> Result<Vec<F>, CircuitError>
Compute and return the combined lookup table vector given random
challenge tau
.
Sourcefn compute_lookup_sorted_vec_polynomials(
&self,
_tau: F,
_lookup_table: &[F],
) -> Result<(Vec<F>, DensePolynomial<F>, DensePolynomial<F>), CircuitError>
fn compute_lookup_sorted_vec_polynomials( &self, _tau: F, _lookup_table: &[F], ) -> Result<(Vec<F>, DensePolynomial<F>, DensePolynomial<F>), CircuitError>
Compute the sorted concatenation of the (merged) lookup table and the witness values to be checked in lookup gates. Return the sorted vector and 2 polynomials that interpolate the vector. Return an error if the circuit does not support lookup or has not been finalized yet.
Sourcefn compute_lookup_prod_polynomial(
&self,
_tau: &F,
_beta: &F,
_gamma: &F,
_lookup_table: &[F],
_sorted_vec: &[F],
) -> Result<DensePolynomial<F>, CircuitError>
fn compute_lookup_prod_polynomial( &self, _tau: &F, _beta: &F, _gamma: &F, _lookup_table: &[F], _sorted_vec: &[F], ) -> Result<DensePolynomial<F>, CircuitError>
Compute and return the product polynomial for Plookup arguments.
beta
and gamma
are random challenges, sorted_vec
is the sorted
concatenation of the lookup table and the lookup witnesses.
Return an error if the circuit does not support lookup or
has not been finalized yet.