From 4a88d52457c00e5b707785130d635c7e0faaad42 Mon Sep 17 00:00:00 2001 From: Sean Bowe Date: Thu, 3 Sep 2020 14:21:13 -0600 Subject: [PATCH] Use the correct permutation values from the SRS. --- src/plonk.rs | 1 + src/plonk/prover.rs | 2 +- src/plonk/srs.rs | 11 ++++++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/plonk.rs b/src/plonk.rs index 86b173d..1372157 100644 --- a/src/plonk.rs +++ b/src/plonk.rs @@ -33,6 +33,7 @@ pub struct SRS { fixed_polys: Vec>, fixed_cosets: Vec>, permutation_commitments: Vec>, + permutations: Vec>>, permutation_polys: Vec>>, permutation_cosets: Vec>>, meta: MetaCircuit, diff --git a/src/plonk/prover.rs b/src/plonk/prover.rs index 3f033de..e2c15e4 100644 --- a/src/plonk/prover.rs +++ b/src/plonk/prover.rs @@ -158,7 +158,7 @@ impl Proof { let mut permutation_product_blinds = vec![]; // Iterate over each permutation - for (wires, permutations) in srs.meta.permutations.iter().zip(srs.permutation_polys) { + for (wires, permutations) in srs.meta.permutations.iter().zip(srs.permutations.iter()) { // Goal is to compute the fraction // // (p_j(\omega^i) + \delta^j \omega^i \beta + \gamma) / diff --git a/src/plonk/srs.rs b/src/plonk/srs.rs index 739a70f..43b2199 100644 --- a/src/plonk/srs.rs +++ b/src/plonk/srs.rs @@ -146,10 +146,12 @@ impl SRS { // Compute permutation polynomials, convert to coset form and // pre-compute commitments for the SRS. let mut permutation_commitments = vec![]; + let mut permutations = vec![]; let mut permutation_polys = vec![]; let mut permutation_cosets = vec![]; for (permutation_index, permutation) in meta.permutations.iter().enumerate() { let mut commitments = vec![]; + let mut inner_permutations = vec![]; let mut polys = vec![]; let mut cosets = vec![]; for (i, _) in permutation.iter().enumerate() { @@ -172,11 +174,13 @@ impl SRS { .to_affine(), ); // Store permutation polynomial and precompute its coset evaluation - polys.push(permutation_poly.clone()); - let permutation_poly = domain.obtain_poly(permutation_poly); - cosets.push(domain.obtain_coset(permutation_poly, Rotation::default())); + inner_permutations.push(permutation_poly.clone()); + let poly = domain.obtain_poly(permutation_poly); + polys.push(poly.clone()); + cosets.push(domain.obtain_coset(poly, Rotation::default())); } permutation_commitments.push(commitments); + permutations.push(inner_permutations); permutation_polys.push(polys); permutation_cosets.push(cosets); } @@ -208,6 +212,7 @@ impl SRS { fixed_polys, fixed_cosets, permutation_commitments, + permutations, permutation_polys, permutation_cosets, meta,