sum check
Closed this issue · 4 comments
zhenfeizhang commented
sum check
zhenfeizhang commented
/// 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
chancharles92 commented
Cool, is it because we didn't push univariate commitments to transcript but the evaluations to transcripts?
zhenfeizhang commented
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
zhenfeizhang commented
closed -- already implemented.