Skip to main content

Prover

Trait Prover 

Source
pub trait Prover {
    type ProvingKeyView<'a>
       where Self: 'a;
    type ProvingContext<'a>
       where Self: 'a;
    type Proof;
    type Error;

    // Required method
    fn prove<'a>(
        &'a mut self,
        pk: Self::ProvingKeyView<'a>,
        ctx: Self::ProvingContext<'a>,
    ) -> Result<Self::Proof, Self::Error>;
}
Expand description

Trait for STARK/SNARK proving at the highest abstraction level.

Required Associated Types§

Source

type ProvingKeyView<'a> where Self: 'a

Source

type ProvingContext<'a> where Self: 'a

Source

type Proof

Source

type Error

Required Methods§

Source

fn prove<'a>( &'a mut self, pk: Self::ProvingKeyView<'a>, ctx: Self::ProvingContext<'a>, ) -> Result<Self::Proof, Self::Error>

The prover should own the challenger, whose state mutates during proving.

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementors§

Source§

impl<SC, PB, PD, TS> Prover for Coordinator<SC, PB, PD, TS>
where SC: StarkProtocolConfig, PB: ProverBackend<Val = SC::F, Challenge = SC::EF, Commitment = SC::Digest>, PD: ProverDevice<PB, TS>, PD::Artifacts: Into<PD::OpeningPoints>, PD::PartialProof: Into<(GkrProof<SC>, BatchConstraintProof<SC>)>, PD::OpeningProof: Into<(StackingProof<SC>, WhirProof<SC>)>, TS: FiatShamirTranscript<SC>,

Source§

type Proof = Proof<SC>

Source§

type Error = <PD as ProverDevice<PB, TS>>::Error

Source§

type ProvingKeyView<'a> = &'a DeviceMultiStarkProvingKey<PB> where Self: 'a

Source§

type ProvingContext<'a> = ProvingContext<PB> where Self: 'a