-
Notifications
You must be signed in to change notification settings - Fork 28
mpcs e2e batch in one proof #894
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
mpcs e2e batch in one proof #894
Conversation
7a834dd
to
9fcd535
Compare
660e178
to
f91fa86
Compare
The batch open feature is very flexible, as we open multilinear polynomials of different number of variable ( Therefore I propose to add one more additional step to reduce opening at multiple points to opening at one single point. #904 We may want to divide this procedure into 3 steps:
|
let queries: Vec<_> = transcript.sample_bits_and_append_vec( | ||
b"query indices", | ||
Spec::get_number_queries(), | ||
max_num_var + Spec::get_rate_log(), | ||
); |
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.
soundness: we need to return error if proof.query_opening_proof.len() != queries.len())
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.
Great work!
Build on top of #901.
Design rationale
zkvm + mpcs api: use
batch_commit/batch_opening
to commit/open ALL opcode together. In more detail, we commitfixed_commit
andwitin_commit
separately with just one opening.basefold: batch opcodes with rmm with different "height", in other words, different "num_vars".
For basefold to batch opcodes with different variables, for sumcheck part we apply suffix alignment techniques based on
#870. For FRI part, we also apply suffix alignment techniques. So the smaller codeword will "involved" into the folding process when current length match.
During implementation, there is key principle in mind: verifier only rely on one untrusted information "num_instances" from prover, and other information should derived from verifier key.
Working items
Fibonacci Benchmark Results