Skip to main content

miden_vm/
lib.rs

1#![cfg_attr(not(feature = "std"), no_std)]
2#![doc = include_str!("../README.md")]
3
4// EXPORTS
5// ================================================================================================
6
7pub use miden_assembly::{
8    self as assembly, Assembler,
9    ast::{Module, ModuleKind},
10    diagnostics,
11};
12pub use miden_core::proof::{ExecutionProof, HashFunction};
13#[cfg(not(target_arch = "wasm32"))]
14pub use miden_processor::execute_sync;
15pub use miden_processor::{
16    DefaultHost, ExecutionError, ExecutionOptions, Host, Kernel, Program, ProgramInfo, StackInputs,
17    ZERO, advice, crypto, execute, field, operation::Operation, serde, trace::ExecutionTrace,
18    utils,
19};
20#[cfg(not(target_arch = "wasm32"))]
21pub use miden_prover::prove_sync;
22pub use miden_prover::{InputError, ProvingOptions, StackOutputs, Word, prove};
23pub use miden_verifier::VerificationError;
24
25// (private) exports
26// ================================================================================================
27
28#[cfg(feature = "internal")]
29pub mod internal;
30
31/// Verifies a Miden proof.
32///
33/// See [miden_verifier::verify] for more details.
34pub fn verify(
35    program_info: ProgramInfo,
36    stack_inputs: StackInputs,
37    stack_outputs: StackOutputs,
38    proof: ExecutionProof,
39) -> Result<u32, VerificationError> {
40    let registry = miden_core_lib::CoreLibrary::default().verifier_registry();
41    let (security_level, _) = miden_verifier::verify_with_precompiles(
42        program_info,
43        stack_inputs,
44        stack_outputs,
45        proof,
46        &registry,
47    )?;
48    Ok(security_level)
49}