openvm_circuit::arch::vm

Function verify_segments

Source
pub fn verify_segments<SC, E>(
    engine: &E,
    vk: &MultiStarkVerifyingKey<SC>,
    proofs: &[Proof<SC>],
) -> Result<VerifiedExecutionPayload<Val<SC>>, VmVerificationError>
where SC: StarkGenericConfig, E: StarkEngine<SC>, Val<SC>: PrimeField32, Com<SC>: AsRef<[Val<SC>; 8]>,
Expand description

Verify segment proofs with boundary condition checks for continuation between segments.

Assumption:

  • vk is a valid verifying key of a VM circuit.

Returns:

  • The commitment to the VmCommittedExe extracted from proofs. It is the responsibility of the caller to check that the returned commitment matches the VM executable that the VM was supposed to execute.
  • The Merkle root of the final memory state.

§Note

This function does not extract or verify any user public values from the final memory state. This verification requires an additional Merkle proof with respect to the Merkle root of the final memory state.