Trait ark_poly_commit::PolynomialCommitment[][src]

pub trait PolynomialCommitment<F: Field, P: Polynomial<F>>: Sized {
    type UniversalParams: PCUniversalParams;
    type CommitterKey: PCCommitterKey;
    type VerifierKey: PCVerifierKey;
    type PreparedVerifierKey: PCPreparedVerifierKey<Self::VerifierKey> + Clone;
    type Commitment: PCCommitment + Default;
    type PreparedCommitment: PCPreparedCommitment<Self::Commitment>;
    type Randomness: PCRandomness;
    type Proof: PCProof + Clone;
    type BatchProof: Clone + From<Vec<Self::Proof>> + Into<Vec<Self::Proof>> + CanonicalSerialize + CanonicalDeserialize;
    type Error: Error + From<Error>;
    fn setup<R: RngCore>(
        max_degree: usize,
        num_vars: Option<usize>,
        rng: &mut R
    ) -> Result<Self::UniversalParams, Self::Error>;
fn trim(
        pp: &Self::UniversalParams,
        supported_degree: usize,
        supported_hiding_bound: usize,
        enforced_degree_bounds: Option<&[usize]>
    ) -> Result<(Self::CommitterKey, Self::VerifierKey), Self::Error>;
fn commit<'a>(
        ck: &Self::CommitterKey,
        polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
        rng: Option<&mut dyn RngCore>
    ) -> Result<(Vec<LabeledCommitment<Self::Commitment>>, Vec<Self::Randomness>), Self::Error>
    where
        P: 'a
;
fn open_individual_opening_challenges<'a>(
        ck: &Self::CommitterKey,
        labeled_polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        point: &'a P::Point,
        opening_challenges: &dyn Fn(u64) -> F,
        rands: impl IntoIterator<Item = &'a Self::Randomness>,
        rng: Option<&mut dyn RngCore>
    ) -> Result<Self::Proof, Self::Error>
    where
        P: 'a,
        Self::Randomness: 'a,
        Self::Commitment: 'a
;
fn check_individual_opening_challenges<'a>(
        vk: &Self::VerifierKey,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        point: &'a P::Point,
        values: impl IntoIterator<Item = F>,
        proof: &Self::Proof,
        opening_challenges: &dyn Fn(u64) -> F,
        rng: Option<&mut dyn RngCore>
    ) -> Result<bool, Self::Error>
    where
        Self::Commitment: 'a
; fn open<'a>(
        ck: &Self::CommitterKey,
        labeled_polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        point: &'a P::Point,
        opening_challenge: F,
        rands: impl IntoIterator<Item = &'a Self::Randomness>,
        rng: Option<&mut dyn RngCore>
    ) -> Result<Self::Proof, Self::Error>
    where
        P: 'a,
        Self::Randomness: 'a,
        Self::Commitment: 'a
, { ... }
fn batch_open<'a>(
        ck: &Self::CommitterKey,
        labeled_polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        query_set: &QuerySet<P::Point>,
        opening_challenge: F,
        rands: impl IntoIterator<Item = &'a Self::Randomness>,
        rng: Option<&mut dyn RngCore>
    ) -> Result<Self::BatchProof, Self::Error>
    where
        Self::Randomness: 'a,
        Self::Commitment: 'a,
        P: 'a
, { ... }
fn check<'a>(
        vk: &Self::VerifierKey,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        point: &'a P::Point,
        values: impl IntoIterator<Item = F>,
        proof: &Self::Proof,
        opening_challenge: F,
        rng: Option<&mut dyn RngCore>
    ) -> Result<bool, Self::Error>
    where
        Self::Commitment: 'a
, { ... }
fn batch_check<'a, R: RngCore>(
        vk: &Self::VerifierKey,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        query_set: &QuerySet<P::Point>,
        evaluations: &Evaluations<P::Point, F>,
        proof: &Self::BatchProof,
        opening_challenge: F,
        rng: &mut R
    ) -> Result<bool, Self::Error>
    where
        Self::Commitment: 'a
, { ... }
fn open_combinations<'a>(
        ck: &Self::CommitterKey,
        linear_combinations: impl IntoIterator<Item = &'a LinearCombination<F>>,
        polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        query_set: &QuerySet<P::Point>,
        opening_challenge: F,
        rands: impl IntoIterator<Item = &'a Self::Randomness>,
        rng: Option<&mut dyn RngCore>
    ) -> Result<BatchLCProof<F, P, Self>, Self::Error>
    where
        P: 'a,
        Self::Randomness: 'a,
        Self::Commitment: 'a
, { ... }
fn check_combinations<'a, R: RngCore>(
        vk: &Self::VerifierKey,
        linear_combinations: impl IntoIterator<Item = &'a LinearCombination<F>>,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        eqn_query_set: &QuerySet<P::Point>,
        eqn_evaluations: &Evaluations<P::Point, F>,
        proof: &BatchLCProof<F, P, Self>,
        opening_challenge: F,
        rng: &mut R
    ) -> Result<bool, Self::Error>
    where
        Self::Commitment: 'a
, { ... }
fn batch_check_individual_opening_challenges<'a, R: RngCore>(
        vk: &Self::VerifierKey,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        query_set: &QuerySet<P::Point>,
        evaluations: &Evaluations<P::Point, F>,
        proof: &Self::BatchProof,
        opening_challenges: &dyn Fn(u64) -> F,
        rng: &mut R
    ) -> Result<bool, Self::Error>
    where
        Self::Commitment: 'a
, { ... }
fn open_combinations_individual_opening_challenges<'a>(
        ck: &Self::CommitterKey,
        linear_combinations: impl IntoIterator<Item = &'a LinearCombination<F>>,
        polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        query_set: &QuerySet<P::Point>,
        opening_challenges: &dyn Fn(u64) -> F,
        rands: impl IntoIterator<Item = &'a Self::Randomness>,
        rng: Option<&mut dyn RngCore>
    ) -> Result<BatchLCProof<F, P, Self>, Self::Error>
    where
        Self::Randomness: 'a,
        Self::Commitment: 'a,
        P: 'a
, { ... }
fn check_combinations_individual_opening_challenges<'a, R: RngCore>(
        vk: &Self::VerifierKey,
        linear_combinations: impl IntoIterator<Item = &'a LinearCombination<F>>,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        eqn_query_set: &QuerySet<P::Point>,
        eqn_evaluations: &Evaluations<P::Point, F>,
        proof: &BatchLCProof<F, P, Self>,
        opening_challenges: &dyn Fn(u64) -> F,
        rng: &mut R
    ) -> Result<bool, Self::Error>
    where
        Self::Commitment: 'a
, { ... }
fn batch_open_individual_opening_challenges<'a>(
        ck: &Self::CommitterKey,
        labeled_polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        query_set: &QuerySet<P::Point>,
        opening_challenges: &dyn Fn(u64) -> F,
        rands: impl IntoIterator<Item = &'a Self::Randomness>,
        rng: Option<&mut dyn RngCore>
    ) -> Result<Self::BatchProof, Self::Error>
    where
        P: 'a,
        Self::Randomness: 'a,
        Self::Commitment: 'a
, { ... } }

Describes the interface for a polynomial commitment scheme that allows a sender to commit to multiple polynomials and later provide a succinct proof of evaluation for the corresponding commitments at a query set Q, while enforcing per-polynomial degree bounds.

Associated Types

type UniversalParams: PCUniversalParams[src]

The universal parameters for the commitment scheme. These are “trimmed” down to Self::CommitterKey and Self::VerifierKey by Self::trim.

type CommitterKey: PCCommitterKey[src]

The committer key for the scheme; used to commit to a polynomial and then open the commitment to produce an evaluation proof.

type VerifierKey: PCVerifierKey[src]

The verifier key for the scheme; used to check an evaluation proof.

type PreparedVerifierKey: PCPreparedVerifierKey<Self::VerifierKey> + Clone[src]

The prepared verifier key for the scheme; used to check an evaluation proof.

type Commitment: PCCommitment + Default[src]

The commitment to a polynomial.

type PreparedCommitment: PCPreparedCommitment<Self::Commitment>[src]

The prepared commitment to a polynomial.

type Randomness: PCRandomness[src]

The commitment randomness.

type Proof: PCProof + Clone[src]

The evaluation proof for a single point.

type BatchProof: Clone + From<Vec<Self::Proof>> + Into<Vec<Self::Proof>> + CanonicalSerialize + CanonicalDeserialize[src]

The evaluation proof for a query set.

type Error: Error + From<Error>[src]

The error type for the scheme.

Loading content...

Required methods

fn setup<R: RngCore>(
    max_degree: usize,
    num_vars: Option<usize>,
    rng: &mut R
) -> Result<Self::UniversalParams, Self::Error>
[src]

Constructs public parameters when given as input the maximum degree degree for the polynomial commitment scheme. num_vars specifies the number of variables for multivariate setup

fn trim(
    pp: &Self::UniversalParams,
    supported_degree: usize,
    supported_hiding_bound: usize,
    enforced_degree_bounds: Option<&[usize]>
) -> Result<(Self::CommitterKey, Self::VerifierKey), Self::Error>
[src]

Specializes the public parameters for polynomials up to the given supported_degree and for enforcing degree bounds in the range 1..=supported_degree.

fn commit<'a>(
    ck: &Self::CommitterKey,
    polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
    rng: Option<&mut dyn RngCore>
) -> Result<(Vec<LabeledCommitment<Self::Commitment>>, Vec<Self::Randomness>), Self::Error> where
    P: 'a, 
[src]

Outputs a commitments to polynomials. If polynomials[i].is_hiding(), then the i-th commitment is hiding up to polynomials.hiding_bound() queries. rng should not be None if polynomials[i].is_hiding() == true for any i.

If for some i, polynomials[i].is_hiding() == false, then the corresponding randomness is Self::Randomness::empty().

If for some i, polynomials[i].degree_bound().is_some(), then that polynomial will have the corresponding degree bound enforced.

fn open_individual_opening_challenges<'a>(
    ck: &Self::CommitterKey,
    labeled_polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    point: &'a P::Point,
    opening_challenges: &dyn Fn(u64) -> F,
    rands: impl IntoIterator<Item = &'a Self::Randomness>,
    rng: Option<&mut dyn RngCore>
) -> Result<Self::Proof, Self::Error> where
    P: 'a,
    Self::Randomness: 'a,
    Self::Commitment: 'a, 
[src]

open but with individual challenges

fn check_individual_opening_challenges<'a>(
    vk: &Self::VerifierKey,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    point: &'a P::Point,
    values: impl IntoIterator<Item = F>,
    proof: &Self::Proof,
    opening_challenges: &dyn Fn(u64) -> F,
    rng: Option<&mut dyn RngCore>
) -> Result<bool, Self::Error> where
    Self::Commitment: 'a, 
[src]

check but with individual challenges

Loading content...

Provided methods

fn open<'a>(
    ck: &Self::CommitterKey,
    labeled_polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    point: &'a P::Point,
    opening_challenge: F,
    rands: impl IntoIterator<Item = &'a Self::Randomness>,
    rng: Option<&mut dyn RngCore>
) -> Result<Self::Proof, Self::Error> where
    P: 'a,
    Self::Randomness: 'a,
    Self::Commitment: 'a, 
[src]

On input a list of labeled polynomials and a query point, open outputs a proof of evaluation of the polynomials at the query point.

fn batch_open<'a>(
    ck: &Self::CommitterKey,
    labeled_polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    query_set: &QuerySet<P::Point>,
    opening_challenge: F,
    rands: impl IntoIterator<Item = &'a Self::Randomness>,
    rng: Option<&mut dyn RngCore>
) -> Result<Self::BatchProof, Self::Error> where
    Self::Randomness: 'a,
    Self::Commitment: 'a,
    P: 'a, 
[src]

On input a list of labeled polynomials and a query set, open outputs a proof of evaluation of the polynomials at the points in the query set.

fn check<'a>(
    vk: &Self::VerifierKey,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    point: &'a P::Point,
    values: impl IntoIterator<Item = F>,
    proof: &Self::Proof,
    opening_challenge: F,
    rng: Option<&mut dyn RngCore>
) -> Result<bool, Self::Error> where
    Self::Commitment: 'a, 
[src]

Verifies that values are the evaluations at point of the polynomials committed inside commitments.

fn batch_check<'a, R: RngCore>(
    vk: &Self::VerifierKey,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    query_set: &QuerySet<P::Point>,
    evaluations: &Evaluations<P::Point, F>,
    proof: &Self::BatchProof,
    opening_challenge: F,
    rng: &mut R
) -> Result<bool, Self::Error> where
    Self::Commitment: 'a, 
[src]

Checks that values are the true evaluations at query_set of the polynomials committed in labeled_commitments.

fn open_combinations<'a>(
    ck: &Self::CommitterKey,
    linear_combinations: impl IntoIterator<Item = &'a LinearCombination<F>>,
    polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    query_set: &QuerySet<P::Point>,
    opening_challenge: F,
    rands: impl IntoIterator<Item = &'a Self::Randomness>,
    rng: Option<&mut dyn RngCore>
) -> Result<BatchLCProof<F, P, Self>, Self::Error> where
    P: 'a,
    Self::Randomness: 'a,
    Self::Commitment: 'a, 
[src]

On input a list of polynomials, linear combinations of those polynomials, and a query set, open_combination outputs a proof of evaluation of the combinations at the points in the query set.

fn check_combinations<'a, R: RngCore>(
    vk: &Self::VerifierKey,
    linear_combinations: impl IntoIterator<Item = &'a LinearCombination<F>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    eqn_query_set: &QuerySet<P::Point>,
    eqn_evaluations: &Evaluations<P::Point, F>,
    proof: &BatchLCProof<F, P, Self>,
    opening_challenge: F,
    rng: &mut R
) -> Result<bool, Self::Error> where
    Self::Commitment: 'a, 
[src]

Checks that evaluations are the true evaluations at query_set of the linear combinations of polynomials committed in commitments.

fn batch_check_individual_opening_challenges<'a, R: RngCore>(
    vk: &Self::VerifierKey,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    query_set: &QuerySet<P::Point>,
    evaluations: &Evaluations<P::Point, F>,
    proof: &Self::BatchProof,
    opening_challenges: &dyn Fn(u64) -> F,
    rng: &mut R
) -> Result<bool, Self::Error> where
    Self::Commitment: 'a, 
[src]

batch_check but with individual challenges

fn open_combinations_individual_opening_challenges<'a>(
    ck: &Self::CommitterKey,
    linear_combinations: impl IntoIterator<Item = &'a LinearCombination<F>>,
    polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    query_set: &QuerySet<P::Point>,
    opening_challenges: &dyn Fn(u64) -> F,
    rands: impl IntoIterator<Item = &'a Self::Randomness>,
    rng: Option<&mut dyn RngCore>
) -> Result<BatchLCProof<F, P, Self>, Self::Error> where
    Self::Randomness: 'a,
    Self::Commitment: 'a,
    P: 'a, 
[src]

open_combinations but with individual challenges

fn check_combinations_individual_opening_challenges<'a, R: RngCore>(
    vk: &Self::VerifierKey,
    linear_combinations: impl IntoIterator<Item = &'a LinearCombination<F>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    eqn_query_set: &QuerySet<P::Point>,
    eqn_evaluations: &Evaluations<P::Point, F>,
    proof: &BatchLCProof<F, P, Self>,
    opening_challenges: &dyn Fn(u64) -> F,
    rng: &mut R
) -> Result<bool, Self::Error> where
    Self::Commitment: 'a, 
[src]

check_combinations with individual challenges

fn batch_open_individual_opening_challenges<'a>(
    ck: &Self::CommitterKey,
    labeled_polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<F, P>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    query_set: &QuerySet<P::Point>,
    opening_challenges: &dyn Fn(u64) -> F,
    rands: impl IntoIterator<Item = &'a Self::Randomness>,
    rng: Option<&mut dyn RngCore>
) -> Result<Self::BatchProof, Self::Error> where
    P: 'a,
    Self::Randomness: 'a,
    Self::Commitment: 'a, 
[src]

batch_open with individual challenges

Loading content...

Implementors

impl<E, P> PolynomialCommitment<<E as PairingEngine>::Fr, P> for MarlinKZG10<E, P> where
    E: PairingEngine,
    P: UVPolynomial<E::Fr, Point = E::Fr>,
    &'a P: Div<&'b P, Output = P>, 
[src]

type UniversalParams = UniversalParams<E>

type CommitterKey = CommitterKey<E>

type VerifierKey = VerifierKey<E>

type PreparedVerifierKey = PreparedVerifierKey<E>

type Commitment = Commitment<E>

type PreparedCommitment = PreparedCommitment<E>

type Randomness = Randomness<E::Fr, P>

type Proof = Proof<E>

type BatchProof = Vec<Self::Proof>

type Error = Error

fn setup<R: RngCore>(
    max_degree: usize,
    _num_vars: Option<usize>,
    rng: &mut R
) -> Result<Self::UniversalParams, Self::Error>
[src]

Constructs public parameters when given as input the maximum degree max_degree for the polynomial commitment scheme.

fn commit<'a>(
    ck: &Self::CommitterKey,
    polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<E::Fr, P>>,
    rng: Option<&mut dyn RngCore>
) -> Result<(Vec<LabeledCommitment<Self::Commitment>>, Vec<Self::Randomness>), Self::Error> where
    P: 'a, 
[src]

Outputs a commitment to polynomial.

fn open_individual_opening_challenges<'a>(
    ck: &Self::CommitterKey,
    labeled_polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<E::Fr, P>>,
    _commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    point: &'a P::Point,
    opening_challenges: &dyn Fn(u64) -> E::Fr,
    rands: impl IntoIterator<Item = &'a Self::Randomness>,
    _rng: Option<&mut dyn RngCore>
) -> Result<Self::Proof, Self::Error> where
    P: 'a,
    Self::Randomness: 'a,
    Self::Commitment: 'a, 
[src]

On input a polynomial p and a point point, outputs a proof for the same.

fn check_individual_opening_challenges<'a>(
    vk: &Self::VerifierKey,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    point: &'a P::Point,
    values: impl IntoIterator<Item = E::Fr>,
    proof: &Self::Proof,
    opening_challenges: &dyn Fn(u64) -> E::Fr,
    _rng: Option<&mut dyn RngCore>
) -> Result<bool, Self::Error> where
    Self::Commitment: 'a, 
[src]

Verifies that value is the evaluation at x of the polynomial committed inside comm.

fn check_combinations_individual_opening_challenges<'a, R: RngCore>(
    vk: &Self::VerifierKey,
    lc_s: impl IntoIterator<Item = &'a LinearCombination<E::Fr>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    query_set: &QuerySet<P::Point>,
    evaluations: &Evaluations<E::Fr, P::Point>,
    proof: &BatchLCProof<E::Fr, P, Self>,
    opening_challenges: &dyn Fn(u64) -> E::Fr,
    rng: &mut R
) -> Result<bool, Self::Error> where
    Self::Commitment: 'a, 
[src]

Checks that values are the true evaluations at query_set of the polynomials committed in labeled_commitments.

fn batch_open_individual_opening_challenges<'a>(
    ck: &CommitterKey<E>,
    labeled_polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<E::Fr, P>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Commitment<E>>>,
    query_set: &QuerySet<P::Point>,
    opening_challenges: &dyn Fn(u64) -> E::Fr,
    rands: impl IntoIterator<Item = &'a Self::Randomness>,
    rng: Option<&mut dyn RngCore>
) -> Result<Vec<Proof<E>>, Error> where
    P: 'a,
    Self::Randomness: 'a,
    Self::Commitment: 'a, 
[src]

On input a list of labeled polynomials and a query set, open outputs a proof of evaluation of the polynomials at the points in the query set.

impl<E, P> PolynomialCommitment<<E as PairingEngine>::Fr, P> for MarlinPST13<E, P> where
    E: PairingEngine,
    P: MVPolynomial<E::Fr> + Sync,
    P::Point: Index<usize, Output = E::Fr>, 
[src]

type UniversalParams = UniversalParams<E, P>

type CommitterKey = CommitterKey<E, P>

type VerifierKey = VerifierKey<E>

type PreparedVerifierKey = PreparedVerifierKey<E>

type Commitment = Commitment<E>

type PreparedCommitment = PreparedCommitment<E>

type Randomness = Randomness<E, P>

type Proof = Proof<E>

type BatchProof = Vec<Self::Proof>

type Error = Error

fn setup<R: RngCore>(
    max_degree: usize,
    num_vars: Option<usize>,
    rng: &mut R
) -> Result<UniversalParams<E, P>, Error>
[src]

Constructs public parameters when given as input the maximum degree max_degree and number of variables num_vars for the polynomial commitment scheme.

fn trim(
    pp: &Self::UniversalParams,
    supported_degree: usize,
    _supported_hiding_bound: usize,
    _enforced_degree_bounds: Option<&[usize]>
) -> Result<(Self::CommitterKey, Self::VerifierKey), Self::Error>
[src]

Specializes the public parameters for polynomials up to the given supported_degree

TODO: Add the ability to trim the number of variables TODO: Update for support_hiding_bound

fn commit<'a>(
    ck: &Self::CommitterKey,
    polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<E::Fr, P>>,
    rng: Option<&mut dyn RngCore>
) -> Result<(Vec<LabeledCommitment<Self::Commitment>>, Vec<Self::Randomness>), Self::Error> where
    P: 'a, 
[src]

Outputs a commitments to polynomials.

fn open_individual_opening_challenges<'a>(
    ck: &Self::CommitterKey,
    labeled_polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<E::Fr, P>>,
    _commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    point: &P::Point,
    opening_challenges: &dyn Fn(u64) -> E::Fr,
    rands: impl IntoIterator<Item = &'a Self::Randomness>,
    _rng: Option<&mut dyn RngCore>
) -> Result<Self::Proof, Self::Error> where
    P: 'a,
    Self::Randomness: 'a,
    Self::Commitment: 'a, 
[src]

On input a polynomial p and a point point, outputs a proof for the same.

fn check_individual_opening_challenges<'a>(
    vk: &Self::VerifierKey,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    point: &'a P::Point,
    values: impl IntoIterator<Item = E::Fr>,
    proof: &Self::Proof,
    opening_challenges: &dyn Fn(u64) -> E::Fr,
    _rng: Option<&mut dyn RngCore>
) -> Result<bool, Self::Error> where
    Self::Commitment: 'a, 
[src]

Verifies that value is the evaluation at x of the polynomial committed inside comm.

fn check_combinations_individual_opening_challenges<'a, R: RngCore>(
    vk: &Self::VerifierKey,
    lc_s: impl IntoIterator<Item = &'a LinearCombination<E::Fr>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    query_set: &QuerySet<P::Point>,
    evaluations: &Evaluations<P::Point, E::Fr>,
    proof: &BatchLCProof<E::Fr, P, Self>,
    opening_challenges: &dyn Fn(u64) -> E::Fr,
    rng: &mut R
) -> Result<bool, Self::Error> where
    Self::Commitment: 'a, 
[src]

Checks that values are the true evaluations at query_set of the polynomials committed in labeled_commitments.

impl<E, P> PolynomialCommitment<<E as PairingEngine>::Fr, P> for SonicKZG10<E, P> where
    E: PairingEngine,
    P: UVPolynomial<E::Fr, Point = E::Fr>,
    &'a P: Div<&'b P, Output = P>, 
[src]

type UniversalParams = UniversalParams<E>

type CommitterKey = CommitterKey<E>

type VerifierKey = VerifierKey<E>

type PreparedVerifierKey = PreparedVerifierKey<E>

type Commitment = Commitment<E>

type PreparedCommitment = PreparedCommitment<E>

type Randomness = Randomness<E::Fr, P>

type Proof = Proof<E>

type BatchProof = Vec<Self::Proof>

type Error = Error

fn commit<'a>(
    ck: &Self::CommitterKey,
    polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<E::Fr, P>>,
    rng: Option<&mut dyn RngCore>
) -> Result<(Vec<LabeledCommitment<Self::Commitment>>, Vec<Self::Randomness>), Self::Error> where
    P: 'a, 
[src]

Outputs a commitment to polynomial.

fn check_combinations_individual_opening_challenges<'a, R: RngCore>(
    vk: &Self::VerifierKey,
    lc_s: impl IntoIterator<Item = &'a LinearCombination<E::Fr>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    query_set: &QuerySet<P::Point>,
    evaluations: &Evaluations<E::Fr, P::Point>,
    proof: &BatchLCProof<E::Fr, P, Self>,
    opening_challenges: &dyn Fn(u64) -> E::Fr,
    rng: &mut R
) -> Result<bool, Self::Error> where
    Self::Commitment: 'a, 
[src]

Checks that values are the true evaluations at query_set of the polynomials committed in labeled_commitments.

impl<G, D, P> PolynomialCommitment<<G as AffineCurve>::ScalarField, P> for InnerProductArgPC<G, D, P> where
    G: AffineCurve,
    D: Digest,
    P: UVPolynomial<G::ScalarField, Point = G::ScalarField>, 
[src]

type UniversalParams = UniversalParams<G>

type CommitterKey = CommitterKey<G>

type VerifierKey = VerifierKey<G>

type PreparedVerifierKey = PreparedVerifierKey<G>

type Commitment = Commitment<G>

type PreparedCommitment = PreparedCommitment<G>

type Randomness = Randomness<G>

type Proof = Proof<G>

type BatchProof = Vec<Self::Proof>

type Error = Error

fn commit<'a>(
    ck: &Self::CommitterKey,
    polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<G::ScalarField, P>>,
    rng: Option<&mut dyn RngCore>
) -> Result<(Vec<LabeledCommitment<Self::Commitment>>, Vec<Self::Randomness>), Self::Error> where
    P: 'a, 
[src]

Outputs a commitment to polynomial.

fn check_combinations_individual_opening_challenges<'a, R: RngCore>(
    vk: &Self::VerifierKey,
    lc_s: impl IntoIterator<Item = &'a LinearCombination<G::ScalarField>>,
    commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
    query_set: &QuerySet<G::ScalarField>,
    evaluations: &Evaluations<G::ScalarField, P::Point>,
    proof: &BatchLCProof<G::ScalarField, P, Self>,
    opening_challenges: &dyn Fn(u64) -> G::ScalarField,
    rng: &mut R
) -> Result<bool, Self::Error> where
    Self::Commitment: 'a, 
[src]

Checks that values are the true evaluations at query_set of the polynomials committed in labeled_commitments.

Loading content...