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    BaseHost, DefaultHost, ExecutionError, ExecutionOptions, ExecutionOutput, FastProcessor,
17    FutureMaybeSend, Host, Kernel, Program, ProgramInfo, StackInputs, SyncHost, TraceBuildInputs,
18    TraceGenerationContext, ZERO, advice, crypto, execute, field, operation::Operation, serde,
19    trace, trace::ExecutionTrace, utils,
20};
21pub use miden_prover::{InputError, ProvingOptions, StackOutputs, TraceProvingInputs, Word, prove};
22#[cfg(not(target_arch = "wasm32"))]
23pub use miden_prover::{prove_from_trace_sync, prove_sync};
24pub use miden_verifier::VerificationError;
25
26// (private) exports
27// ================================================================================================
28
29#[cfg(feature = "internal")]
30pub mod internal;
31
32/// Verifies a Miden proof.
33///
34/// See [miden_verifier::verify] for more details.
35pub fn verify(
36    program_info: ProgramInfo,
37    stack_inputs: StackInputs,
38    stack_outputs: StackOutputs,
39    proof: ExecutionProof,
40) -> Result<u32, VerificationError> {
41    let registry = miden_core_lib::CoreLibrary::default().verifier_registry();
42    let (security_level, _) = miden_verifier::verify_with_precompiles(
43        program_info,
44        stack_inputs,
45        stack_outputs,
46        proof,
47        &registry,
48    )?;
49    Ok(security_level)
50}