Trait CommitmentEvaluationProof

Source
pub trait CommitmentEvaluationProof {
    type Scalar: Scalar + Serialize + for<'a> Deserialize<'a>;
    type Commitment: for<'a> Commitment<Scalar = Self::Scalar, PublicSetup<'a> = Self::ProverPublicSetup<'a>> + Serialize + for<'a> Deserialize<'a>;
    type Error;
    type ProverPublicSetup<'a>: Copy;
    type VerifierPublicSetup<'a>: Copy;

    // Required methods
    fn new(
        transcript: &mut impl Transcript,
        a: &[Self::Scalar],
        b_point: &[Self::Scalar],
        generators_offset: u64,
        setup: &Self::ProverPublicSetup<'_>,
    ) -> Self;
    fn verify_batched_proof(
        &self,
        transcript: &mut impl Transcript,
        commit_batch: &[Self::Commitment],
        batching_factors: &[Self::Scalar],
        evaluations: &[Self::Scalar],
        b_point: &[Self::Scalar],
        generators_offset: u64,
        table_length: usize,
        setup: &Self::VerifierPublicSetup<'_>,
    ) -> Result<(), Self::Error>;

    // Provided method
    fn verify_proof(
        &self,
        transcript: &mut impl Transcript,
        a_commit: &Self::Commitment,
        product: &Self::Scalar,
        b_point: &[Self::Scalar],
        generators_offset: u64,
        table_length: usize,
        setup: &Self::VerifierPublicSetup<'_>,
    ) -> Result<(), Self::Error> { ... }
}
Expand description

A trait for using commitment schemes generically. Specifically, this trait is for the evaluation proof of a commitment scheme.

Required Associated Types§

Source

type Scalar: Scalar + Serialize + for<'a> Deserialize<'a>

The associated scalar that the commitment is for.

Source

type Commitment: for<'a> Commitment<Scalar = Self::Scalar, PublicSetup<'a> = Self::ProverPublicSetup<'a>> + Serialize + for<'a> Deserialize<'a>

The associated commitment type.

Source

type Error

The error type for the proof.

Source

type ProverPublicSetup<'a>: Copy

The public setup parameters required by the prover. This is simply precomputed data that is required by the prover to create a proof.

Source

type VerifierPublicSetup<'a>: Copy

The public setup parameters required by the verifier. This is simply precomputed data that is required by the verifier to verify a proof.

Required Methods§

Source

fn new( transcript: &mut impl Transcript, a: &[Self::Scalar], b_point: &[Self::Scalar], generators_offset: u64, setup: &Self::ProverPublicSetup<'_>, ) -> Self

Create a new proof.

Note: b_point must have length nu, where 2^nu is at least the length of a. b_point are the values for the variables that are being evaluated. The resulting evaluation is the inner product of a and b, where b is the expanded vector form of b_point.

Source

fn verify_batched_proof( &self, transcript: &mut impl Transcript, commit_batch: &[Self::Commitment], batching_factors: &[Self::Scalar], evaluations: &[Self::Scalar], b_point: &[Self::Scalar], generators_offset: u64, table_length: usize, setup: &Self::VerifierPublicSetup<'_>, ) -> Result<(), Self::Error>

Verify a batch proof. This can be more efficient than verifying individual proofs for some schemes.

Provided Methods§

Source

fn verify_proof( &self, transcript: &mut impl Transcript, a_commit: &Self::Commitment, product: &Self::Scalar, b_point: &[Self::Scalar], generators_offset: u64, table_length: usize, setup: &Self::VerifierPublicSetup<'_>, ) -> Result<(), Self::Error>

Verify a proof.

Note: b_point must have length nu, where 2^nu is at least the length of a. b_point are the values for the variables that are being evaluated. The resulting evaluation is the inner product of a and b, where b is the expanded vector form of b_point.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§