pub fn prove<const FULL_ROUNDS: usize, G, EFqSponge, EFrSponge, RNG>(
domain: EvaluationDomains<G::ScalarField>,
srs: &SRS<G>,
inputs: ProofInputs<FULL_ROUNDS, G>,
constraints: &[E<G::ScalarField>],
rng: &mut RNG,
) -> Result<Proof<FULL_ROUNDS, G>, ProverError>Expand description
Make a PlonKish proof for the given circuit. As inputs, we get the execution
trace consisting of evaluations of polynomials over a certain domain
domain.
The proof is made of the following steps:
- For each column, we create a commitment and absorb it in the sponge.
- We compute the quotient polynomial.
- We evaluate each polynomial (columns + quotient) to two challenges ζ and ζω.
- We make a batch opening proof using the IPA PCS.
The final proof consists of the opening proof, the commitments and the evaluations at ζ and ζω.