1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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<Vec<u8>> {
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<Journal> {
let receipt: Receipt = bincode::deserialize(receipt)?;
receipt.verify(image_id())?;
Ok(receipt.journal.decode()?)
}