-
Notifications
You must be signed in to change notification settings - Fork 28
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
mpcs
layer 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_size
inmpcs/src/lib.rs
that implements the batching.run_diff_size_batch_commit_open_verify
inmpcs/src/lib.rs
andbatch_commit_diff_size_open_verify()
inmpcs/src/basefold.rs
andmpcs/src/whir.rs
for 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_poly
is introduced. The process is then as follows:packed_polys
together (since they are of the same size) andfinal_poly
separately.unify_sumcheck
to reduce the different claim points on each poly down to the same point on each poly. It then performs packing to producepacked_polys
andfinal_poly
if exists. Finally it invokes the MPCS protocol to provepacked_polys
andfinal_poly
separately.unify_sumcheck
, packing, and the MPCS.