Skip to content

Commit

Permalink
Publish necessary properties for external use of KZG commitment (priv…
Browse files Browse the repository at this point in the history
…acy-scaling-explorations#232)

* Publish properties of `ProverQuery` and `VerifierQuery` to external

* Add method to create new instance of `ProverQuery` and `VerifierQuery`

* Limit the accessibilities of `VerifierQuery` and `ProverQuery`'s fields

* Add derive copy in `ProverQuery` and `VerifierQuery`
  • Loading branch information
chiro-hiro authored Nov 24, 2023
1 parent 324c886 commit 6fc6d7c
Showing 1 changed file with 37 additions and 14 deletions.
51 changes: 37 additions & 14 deletions halo2_proofs/src/poly/query.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,30 @@ pub trait Query<F>: Sized + Clone + Send + Sync {
}

/// A polynomial query at a point
#[derive(Debug, Clone)]
#[derive(Debug, Clone, Copy)]
pub struct ProverQuery<'com, C: CurveAffine> {
/// point at which polynomial is queried
/// Point at which polynomial is queried
pub(crate) point: C::Scalar,
/// coefficients of polynomial
/// Coefficients of polynomial
pub(crate) poly: &'com Polynomial<C::Scalar, Coeff>,
/// blinding factor of polynomial
/// Blinding factor of polynomial
pub(crate) blind: Blind<C::Scalar>,
}

impl<'com, C> ProverQuery<'com, C>
where
C: CurveAffine,
{
/// Create a new prover query based on a polynomial
pub fn new(
point: C::Scalar,
poly: &'com Polynomial<C::Scalar, Coeff>,
blind: Blind<C::Scalar>,
) -> Self {
ProverQuery { point, poly, blind }
}
}

#[doc(hidden)]
#[derive(Copy, Clone)]
pub struct PolynomialPointer<'com, C: CurveAffine> {
Expand Down Expand Up @@ -79,22 +93,31 @@ impl<'com, C: CurveAffine, M: MSM<C>> VerifierQuery<'com, C, M> {
}

/// A polynomial query at a point
#[derive(Debug)]
#[derive(Debug, Clone, Copy)]
pub struct VerifierQuery<'com, C: CurveAffine, M: MSM<C>> {
/// point at which polynomial is queried
/// Point at which polynomial is queried
pub(crate) point: C::Scalar,
/// commitment to polynomial
/// Commitment to polynomial
pub(crate) commitment: CommitmentReference<'com, C, M>,
/// evaluation of polynomial at query point
/// Evaluation of polynomial at query point
pub(crate) eval: C::Scalar,
}

impl<'com, C: CurveAffine, M: MSM<C>> Clone for VerifierQuery<'com, C, M> {
fn clone(&self) -> Self {
Self {
point: self.point,
commitment: self.commitment,
eval: self.eval,
impl<'com, C, M> VerifierQuery<'com, C, M>
where
C: CurveAffine,
M: MSM<C>,
{
/// Create a new verifier query based on a commitment
pub fn new(
point: C::Scalar,
commitment: CommitmentReference<'com, C, M>,
eval: C::Scalar,
) -> Self {
VerifierQuery {
point,
commitment,
eval,
}
}
}
Expand Down

0 comments on commit 6fc6d7c

Please sign in to comment.