Precompute deltaomega vector.

This commit is contained in:
Sean Bowe 2020-09-03 14:31:57 -06:00
parent 36d37002fe
commit 6b9ea1dbeb
No known key found for this signature in database
GPG key ID: 95684257D8F8B031
3 changed files with 3 additions and 28 deletions

View file

@ -29,6 +29,7 @@ use domain::EvaluationDomain;
#[derive(Debug)]
pub struct SRS<C: CurveAffine> {
domain: EvaluationDomain<C::Scalar>,
deltaomega: Vec<Vec<C::Scalar>>,
fixed_commitments: Vec<C>,
fixed_polys: Vec<Vec<C::Scalar>>,
fixed_cosets: Vec<Vec<C::Scalar>>,

View file

@ -126,33 +126,6 @@ impl<C: CurveAffine> Proof<C> {
// Sample x_1 challenge
let x_1: C::Scalar = get_challenge_scalar(Challenge(transcript.squeeze().get_lower_128()));
// TODO: maybe put this in SRS?
// Compute [omega^0, omega^1, ..., omega^{params.n - 1}]
let mut omega_powers = Vec::with_capacity(params.n as usize);
{
let mut cur = C::Scalar::one();
for _ in 0..params.n {
omega_powers.push(cur);
cur *= &srs.domain.get_omega();
}
}
// Compute [omega_powers * \delta^0, omega_powers * \delta^1, ..., omega_powers * \delta^m]
let mut deltaomega = Vec::with_capacity(largest_permutation_length);
{
let mut cur = C::Scalar::one();
for _ in 0..largest_permutation_length {
let mut omega_powers = omega_powers.clone();
for o in &mut omega_powers {
*o *= &cur;
}
deltaomega.push(omega_powers);
cur *= &C::Scalar::DELTA;
}
}
// Compute permutation product polynomial commitment
let mut permutation_product_commitments = vec![];
let mut permutation_product_blinds = vec![];
@ -194,7 +167,7 @@ impl<C: CurveAffine> Proof<C> {
for ((wire, modified_advice), deltaomega) in wires
.iter()
.zip(modified_advice.iter_mut())
.zip(deltaomega.iter())
.zip(srs.deltaomega.iter())
{
// For each row i, we compute
// p_j(\omega^i) + \delta^j \omega^i \beta + \gamma

View file

@ -208,6 +208,7 @@ impl<C: CurveAffine> SRS<C> {
Ok(SRS {
domain,
deltaomega,
fixed_commitments,
fixed_polys,
fixed_cosets,