Trait StarkEngine

Source
pub trait StarkEngine<SC: StarkGenericConfig> {
    // Required methods
    fn config(&self) -> &SC;
    fn new_challenger(&self) -> SC::Challenger;

    // Provided methods
    fn max_constraint_degree(&self) -> Option<usize> { ... }
    fn keygen_builder(&self) -> MultiStarkKeygenBuilder<'_, SC> { ... }
    fn prover<'a>(&'a self) -> MultiTraceStarkProver<'a, SC>
       where Self: 'a { ... }
    fn verifier(&self) -> MultiTraceStarkVerifier<'_, SC> { ... }
    fn set_up_keygen_builder(
        &self,
        keygen_builder: &mut MultiStarkKeygenBuilder<'_, SC>,
        airs: &[AirRef<SC>],
    ) -> Vec<usize> { ... }
    fn prove_then_verify(
        &self,
        mpk: &MultiStarkProvingKey<SC>,
        proof_input: ProofInput<SC>,
    ) -> Result<(), VerificationError> { ... }
    fn prove(
        &self,
        mpk: &MultiStarkProvingKey<SC>,
        proof_input: ProofInput<SC>,
    ) -> Proof<SC> { ... }
    fn verify(
        &self,
        vk: &MultiStarkVerifyingKey<SC>,
        proof: &Proof<SC>,
    ) -> Result<(), VerificationError> { ... }
    fn debug(
        &self,
        airs: &[AirRef<SC>],
        pk: &[StarkProvingKey<SC>],
        proof_inputs: &[AirProofInput<SC>],
    ) { ... }
    fn run_test_impl(
        &self,
        airs: Vec<AirRef<SC>>,
        air_proof_inputs: Vec<AirProofInput<SC>>,
    ) -> Result<VerificationData<SC>, VerificationError> { ... }
}
Expand description

A helper trait to collect the different steps in multi-trace STARK keygen and proving. Currently this trait is CPU specific.

Required Methods§

Source

fn config(&self) -> &SC

Stark config

Source

fn new_challenger(&self) -> SC::Challenger

Creates a new challenger with a deterministic state. Creating new challenger for prover and verifier separately will result in them having the same starting state.

Provided Methods§

Source

fn max_constraint_degree(&self) -> Option<usize>

During keygen, the circuit may be optimized but it will try to keep the constraint degree at most this value.

Source

fn keygen_builder(&self) -> MultiStarkKeygenBuilder<'_, SC>

Source

fn prover<'a>(&'a self) -> MultiTraceStarkProver<'a, SC>
where Self: 'a,

Source

fn verifier(&self) -> MultiTraceStarkVerifier<'_, SC>

Source

fn set_up_keygen_builder( &self, keygen_builder: &mut MultiStarkKeygenBuilder<'_, SC>, airs: &[AirRef<SC>], ) -> Vec<usize>

Add AIRs and get AIR IDs

Source

fn prove_then_verify( &self, mpk: &MultiStarkProvingKey<SC>, proof_input: ProofInput<SC>, ) -> Result<(), VerificationError>

Source

fn prove( &self, mpk: &MultiStarkProvingKey<SC>, proof_input: ProofInput<SC>, ) -> Proof<SC>

Source

fn verify( &self, vk: &MultiStarkVerifyingKey<SC>, proof: &Proof<SC>, ) -> Result<(), VerificationError>

Source

fn debug( &self, airs: &[AirRef<SC>], pk: &[StarkProvingKey<SC>], proof_inputs: &[AirProofInput<SC>], )

Source

fn run_test_impl( &self, airs: Vec<AirRef<SC>>, air_proof_inputs: Vec<AirProofInput<SC>>, ) -> Result<VerificationData<SC>, VerificationError>

Runs a single end-to-end test for a given set of chips and traces partitions. This includes proving/verifying key generation, creating a proof, and verifying the proof.

Implementors§