openvm_continuations/prover/deferral/
mod.rs

1use std::sync::Arc;
2
3use derivative::Derivative;
4use openvm_stark_backend::{
5    keygen::types::{MultiStarkProvingKey, MultiStarkVerifyingKey},
6    proof::Proof,
7    StarkProtocolConfig,
8};
9use serde::{Deserialize, Serialize};
10
11use crate::CommitBytes;
12
13mod hook;
14mod inner;
15pub use hook::*;
16pub use inner::*;
17
18#[derive(Derivative, Serialize, Deserialize)]
19#[derivative(Clone(bound = ""))]
20#[serde(bound = "")]
21pub struct DeferralCircuitProverKey<SC: StarkProtocolConfig> {
22    pub base_pk: Arc<MultiStarkProvingKey<SC>>,
23    pub aux: Vec<u8>,
24}
25
26pub trait DeferralCircuitProver<SC: StarkProtocolConfig> {
27    fn get_vk(&self) -> Arc<MultiStarkVerifyingKey<SC>>;
28    fn get_pk(&self) -> Arc<DeferralCircuitProverKey<SC>>;
29
30    fn from_pk(encoded_pk: DeferralCircuitProverKey<SC>) -> Self
31    where
32        Self: Sized;
33
34    fn prove(&self, input_bytes: &[u8]) -> Proof<SC>;
35    fn get_def_idx(&self) -> usize;
36
37    fn cached_commits(&self) -> Vec<CommitBytes> {
38        vec![]
39    }
40}