openvm_sdk/prover/vm/
mod.rs

1use async_trait::async_trait;
2use openvm_circuit::arch::{ContinuationVmProof, Streams};
3use openvm_stark_backend::{
4    config::{StarkGenericConfig, Val},
5    proof::Proof,
6};
7
8pub mod local;
9pub mod types;
10
11/// Prover for a specific exe in a specific continuation VM using a specific Stark config.
12pub trait ContinuationVmProver<SC: StarkGenericConfig> {
13    fn prove(&self, input: impl Into<Streams<Val<SC>>>) -> ContinuationVmProof<SC>;
14}
15
16/// Async prover for a specific exe in a specific continuation VM using a specific Stark config.
17#[async_trait]
18pub trait AsyncContinuationVmProver<SC: StarkGenericConfig> {
19    async fn prove(
20        &self,
21        input: impl Into<Streams<Val<SC>>> + Send + Sync,
22    ) -> ContinuationVmProof<SC>;
23}
24
25/// Prover for a specific exe in a specific single-segment VM using a specific Stark config.
26pub trait SingleSegmentVmProver<SC: StarkGenericConfig> {
27    fn prove(&self, input: impl Into<Streams<Val<SC>>>) -> Proof<SC>;
28}
29
30/// Async prover for a specific exe in a specific single-segment VM using a specific Stark config.
31#[async_trait]
32pub trait AsyncSingleSegmentVmProver<SC: StarkGenericConfig> {
33    async fn prove(&self, input: impl Into<Streams<Val<SC>>> + Send + Sync) -> Proof<SC>;
34}