EspressoSystems/hyperplonk

sum check

Closed this issue · 4 comments

sum check
/// Trait for doing sum check protocols.
pub trait SumCheck<F: PrimeField> {
    type MLE;
    type VirtualPolynomial;
    type VPAuxInfo;
    type MultilinearExtension;

    type SumCheckProof;
    type Transcript;
    type SumCheckSubClaim;

    /// Extract sum from the proof
    fn extract_sum(proof: &Self::SumCheckProof) -> F;

    /// Initialize the system with a transcript
    ///
    /// This function is optional -- in the case where a SumCheck is
    /// an building block for a more complex protocol, the transcript
    /// may be initialized by this complex protocol, and passed to the
    /// SumCheck prover/verifier.
    fn init_transcript() -> Self::Transcript;

    /// Generate proof of the sum of polynomial over {0,1}^`num_vars`
    ///
    /// The polynomial is represented in the form of a VirtualPolynomial.
    fn prove(
        poly: &Self::VirtualPolynomial,
        transcript: &mut Self::Transcript,
    ) -> Result<Self::SumCheckProof, PolyIOPErrors>;

    /// Verify the claimed sum using the proof
    fn verify(
        sum: F,
        proof: &Self::SumCheckProof,
        aux_info: &Self::VPAuxInfo,
        transcript: &mut Self::Transcript,
    ) -> Result<Self::SumCheckSubClaim, PolyIOPErrors>;
}

the current SumCheck API is already non-interactive. @chancharles92

Cool, is it because we didn't push univariate commitments to transcript but the evaluations to transcripts?

Cool, is it because we didn't push univariate commitments to transcript but the evaluations to transcripts?

Yeah the transcript absorbs the whole prover_msgs which is a vector of eluations

closed -- already implemented.