PVM MASM verifier - #3467
Open
Al-Kindi-0 wants to merge 9 commits into
Open
Conversation
Al-Kindi-0
force-pushed
the
al/pvm-masm-verifier
branch
from
August 5, 2026 22:29
5bcae0b to
366a5b4
Compare
Al-Kindi-0
force-pushed
the
al/pvm-masm-verifier
branch
from
August 6, 2026 06:14
366a5b4 to
8136b04
Compare
Al-Kindi-0
marked this pull request as ready for review
August 6, 2026 12:08
Al-Kindi-0
force-pushed
the
al/pvm-masm-verifier
branch
from
August 7, 2026 11:19
8136b04 to
37bc3c2
Compare
|
This PR contains unsigned commits. All commits must be cryptographically signed (GPG or SSH). Unsigned commits:
For instructions on setting up commit signing and re-signing existing commits, see: |
Al-Kindi-0
force-pushed
the
al/pvm-masm-verifier
branch
from
August 7, 2026 11:29
37bc3c2 to
f152c5f
Compare
- add sys::pvm::verify_proof and its Poseidon2 host-input adapter - extract relation-independent STARK verifier logic for MVM and PVM wrappers - generate and authenticate the factored PVM ACE evaluator with four quotient chunks - define relation-local memory layouts and guard them against overlap - pin transcript, PCS, circuit, and proof-order contracts with cross-language tests - verify MVM and PVM proofs can execute safely in the same program
- share proof-request addressing and security outputs across recursive verifiers - let async hosts install PVM proof packages for authenticated deferred roots - test MVM-to-PVM ECDSA settlement and harden verifier input handling
- split the height scan to remove redundant comparisons - reduce PVM verification by 2,431 cycles without scratch memory - cover AIR counts 2–12, u32 boundaries, stable ties, and cycle regressions
compare 4 MVM + 1 PVM and 5 MVM + 1 PVM against 7 and 8 MVM proofs using the canonical 100-Keccak/4-ECDSA PVM proof
Al-Kindi-0
force-pushed
the
al/pvm-masm-verifier
branch
from
August 7, 2026 20:04
f152c5f to
e1ed817
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds a MASM verifier for recursively verifying PVM STARK proofs inside the Miden VM.
As an integration example, the PR shows how this verifier can settle a deferred computation: a Miden program requests a PVM proof for its deferred claim and verifies that proof when the host makes it available.
What changed
miden::core::sys::pvm::verify_proof.DeferredClaimand support an MVM-to-PVM flow: verify an MVM proof, request the PVM proof for its authenticated deferred claim, install the returned advice package, and verify the PVM proof against the same claim.Performance
For the canonical 100-Keccak/4-ECDSA proof, the optimized MASM verifier uses 53,307 cycles and 136,240 Poseidon2 rows.
The mixed recursive benchmark places one PVM proof slightly below three synthetic transaction proofs for this workload: