-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[fix] Dynamic verifier doesn't require the order of AIRs #465
Conversation
INT-2104 Add a mapping between trace -> air idx in verifier program
The order of the vkey is still going to be determined at compile time. That gives each AIR an Since the traces of AIRs need to be sorted outside of th program, the program will need another input of For now we will do a bitmap check that each AIR is used in a trace at most once to ensure uniqueness guarantees (e.g., of Audit chip) |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
926a4d0
to
549762a
Compare
549762a
to
743c50c
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, some comments to add more clarification comments.
Summary
There are two ways to support having non-deterministic trace height ordering in verifier.
- Impose assumptions on the format of the proof. For example the prover must have already sorted traces in descending order before it did MMCS commitments.
- Supply a permutation of the sorted indices as hint and use it to lookup the correct ordering when necessary.
(2) is more general as it allows verifying any proof in plonky3 without adding conditions to the prover. This PR implements both 1+2, where the implementation takes an optional flag to distinguish when the input is already sorted versus when permutation lookup must be done in circuit.
It currently does not support unused Air traces compared to the Air list in the vkey.
There is also an assumption currently that each AIR has exactly one partition of the partitioned main trace that is commited together in a big commitment. For each AIR any other partition, if it exists, is committed in a separate standalone commitment.
Co-authored-by: Jonathan Wang <[email protected]>
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
vm_verify_fibair
Flamegraphs: link |
tiny_e2e
Flamegraphs: link |
small_e2e
Flamegraphs: link |
To clarify: This order thing is a requirement from |
* Dynamic verifier doesn't require the order of AIRs * Fix quotient matrices permutation * Fix static verifier * Fix comments Co-authored-by: Jonathan Wang <[email protected]> * Fix comments --------- Co-authored-by: Jonathan Wang <[email protected]>
Closes INT-2104