Skip to main content

WhirProver

Trait WhirProver 

Source
pub trait WhirProver<SC: StarkProtocolConfig, PB: ProverBackend, PD, TS> {
    type Error;

    // Required method
    fn prove_whir(
        &self,
        transcript: &mut TS,
        common_main_pcs_data: PB::PcsData,
        pre_cached_pcs_data_per_commit: Vec<Arc<PB::PcsData>>,
        u_cube: &[PB::Challenge],
    ) -> Result<WhirProof<SC>, Self::Error>;
}

Required Associated Types§

Required Methods§

Source

fn prove_whir( &self, transcript: &mut TS, common_main_pcs_data: PB::PcsData, pre_cached_pcs_data_per_commit: Vec<Arc<PB::PcsData>>, u_cube: &[PB::Challenge], ) -> Result<WhirProof<SC>, Self::Error>

Prove the WHIR protocol for a collection of MLE polynomials \hat{q}_j, each in n variables, at a single vector u \in \Fext^n.

This means applying WHIR with weight polynomial \hat{w}(Z, \vec X) = Z * mobius_eq_poly(u)(\vec X), where mobius_eq_poly(u) is the Möbius-adjusted equality polynomial for eval-to-coeff RS encoding.

The matrices in common_main_pcs_data and pre_cached_pcs_data_per_commit must all have the same height.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<SC, TS> WhirProver<SC, CpuColMajorBackend<SC>, ReferenceDevice<SC>, TS> for ReferenceDevice<SC>
where SC: StarkProtocolConfig, SC::F: TwoAdicField + Ord, SC::EF: TwoAdicField + ExtensionField<SC::F> + Ord, TS: FiatShamirTranscript<SC>,