From cbe4415870679c2da0c8e97195fce7c0ca3d6019 Mon Sep 17 00:00:00 2001 From: therealyingtong Date: Wed, 7 Oct 2020 21:57:54 +0800 Subject: [PATCH] Introduce Query and CommitmentData structs for multiopen --- src/poly/multiopen.rs | 24 ++++++++++++++++++++++++ src/poly/multiopen/prover.rs | 8 ++++++++ src/poly/multiopen/verifier.rs | 7 +++++++ 3 files changed, 39 insertions(+) diff --git a/src/poly/multiopen.rs b/src/poly/multiopen.rs index 5850fcaf..91a1a961 100644 --- a/src/poly/multiopen.rs +++ b/src/poly/multiopen.rs @@ -21,3 +21,27 @@ pub struct Proof { /// Commitment proof pub opening: commitment::Proof, } + +/// A polynomial query at a point +#[derive(Debug, Clone)] +pub struct ProverQuery<'a, C: CurveAffine> { + /// point at which polynomial is queried + pub point: C::Scalar, + /// coefficients of polynomial + pub poly: &'a Polynomial, + /// blinding factor of polynomial + pub blind: commitment::Blind, + /// evaluation of polynomial at query point + pub eval: C::Scalar, +} + +/// A polynomial query at a point +#[derive(Debug, Clone)] +pub struct VerifierQuery<'a, C: CurveAffine> { + /// point at which polynomial is queried + pub point: C::Scalar, + /// commitment to polynomial + pub commitment: &'a C, + /// evaluation of polynomial at query point + pub eval: C::Scalar, +} diff --git a/src/poly/multiopen/prover.rs b/src/poly/multiopen/prover.rs index 48390b0c..7a5b33d2 100644 --- a/src/poly/multiopen/prover.rs +++ b/src/poly/multiopen/prover.rs @@ -13,6 +13,14 @@ use crate::arithmetic::{ use crate::plonk::hash_point; use crate::transcript::Hasher; +#[derive(Debug, Clone)] +struct CommitmentData { + set_index: usize, + blind: Blind, + point_indices: Vec, + evals: Vec, +} + impl Proof { /// Create a multi-opening proof pub fn create, HScalar: Hasher>( diff --git a/src/poly/multiopen/verifier.rs b/src/poly/multiopen/verifier.rs index ea6f9a6a..5f78363d 100644 --- a/src/poly/multiopen/verifier.rs +++ b/src/poly/multiopen/verifier.rs @@ -4,6 +4,13 @@ use crate::arithmetic::{get_challenge_scalar, Challenge, CurveAffine, Field}; use crate::plonk::hash_point; use crate::transcript::Hasher; +#[derive(Debug, Clone)] +struct CommitmentData { + set_index: usize, + point_indices: Vec, + evals: Vec, +} + impl<'a, C: CurveAffine> Proof { /// Verify a multi-opening proof pub fn verify, HScalar: Hasher>(