openvm_continuations/prover/deferral/
mod.rs1use 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}