-
Notifications
You must be signed in to change notification settings - Fork 39
Batched commitment of polys with different sizes on mpcs layer #864
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
base: master
Are you sure you want to change the base?
Conversation
|
The current implementation is still rudimentary: it does not support parallel execution or has any optimization what so ever. I'm also awaiting for a PR on sumcheck to rewrite the sumcheck implementation to match with those in |
|
Hi @Jiangkm3 could you elaborate primitive in your design from verifier perspective: giving
Then how is formula to combine both into a single (eval_3, num_var_3)? thanks |
|
Updated the approach to match with the new suffix-alignment of sumcheck. See the new interleaving approach ( Lines 80 to 84 in a0f20c0
|
|
New interleave function here: Lines 172 to 175 in 1c504a5
This allows the prover to compute interleave in |
|
Parallel version of interleave now available: Lines 229 to 231 in 3d8b8b9
|
This PR enables ceno to batch commitment polynomials of different sizes on
mpcslayer using any commitment scheme. The main contributions are:pcs_batch_commit_diff_size,pcs_batch_commit_diff_size_and_write,pcs_batch_open_diff_size, andpcs_batch_verify_diff_sizeinmpcs/src/lib.rsthat implements the batching.run_diff_size_batch_commit_open_verifyinmpcs/src/lib.rsandbatch_commit_diff_size_open_verify()inmpcs/src/basefold.rsandmpcs/src/whir.rsfor testing.The idea is to use packing, which merges the polynomials into a sequence of large polynomials of a fixed size
packed_polys. If the final few smallest polys cannot be fit into these packed polys, a final smaller polynomialfinal_polyis introduced. The process is then as follows:packed_polystogether (since they are of the same size) andfinal_polyseparately.unify_sumcheckto reduce the different claim points on each poly down to the same point on each poly. It then performs packing to producepacked_polysandfinal_polyif exists. Finally it invokes the MPCS protocol to provepacked_polysandfinal_polyseparately.unify_sumcheck, packing, and the MPCS.