include!(concat!(env!("OUT_DIR"), "/methods.rs")); use risc0_zkvm::Receipt; pub use zkwid_zkvm_core::{Journal, ProveInput}; pub fn image_id() -> [u32; 8] { ZKWID_GUEST_ID } #[cfg(feature = "prove")] pub fn prove(input: &ProveInput) -> anyhow::Result> { use risc0_zkvm::{ExecutorEnv, ProverOpts, default_prover}; let mut builder = ExecutorEnv::builder(); builder.write(input)?; #[cfg(feature = "cuda")] builder.segment_limit_po2(18); let env = builder.build()?; let info = default_prover().prove_with_opts(env, ZKWID_GUEST_ELF, &ProverOpts::succinct())?; Ok(bincode::serialize(&info.receipt)?) } pub fn verify(receipt: &[u8]) -> anyhow::Result { let receipt: Receipt = bincode::deserialize(receipt)?; receipt.verify(image_id())?; Ok(receipt.journal.decode()?) }