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_processor::{
13    AdviceInputs, AdviceProvider, AsmOpInfo, AsyncHost, BaseHost, DefaultHost, ExecutionError,
14    ExecutionTrace, Kernel, Operation, Program, ProgramInfo, StackInputs, SyncHost, VmState,
15    VmStateIterator, ZERO, crypto, execute, execute_iter, utils,
16};
17pub use miden_prover::{
18    ExecutionProof, FieldExtension, HashFunction, InputError, Proof, ProvingOptions, StackOutputs,
19    Word, math, prove,
20};
21pub use miden_verifier::VerificationError;
22
23// (private) exports
24// ================================================================================================
25
26#[cfg(feature = "internal")]
27pub mod internal;
28
29/// Verifies a Miden proof.
30///
31/// See [miden_verifier::verify] for more details.
32pub fn verify(
33    program_info: ProgramInfo,
34    stack_inputs: StackInputs,
35    stack_outputs: StackOutputs,
36    proof: ExecutionProof,
37) -> Result<u32, VerificationError> {
38    let registry = miden_core_lib::CoreLibrary::default().verifier_registry();
39    let (security_level, _) = miden_verifier::verify_with_precompiles(
40        program_info,
41        stack_inputs,
42        stack_outputs,
43        proof,
44        &registry,
45    )?;
46    Ok(security_level)
47}