-
Notifications
You must be signed in to change notification settings - Fork 18
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
[To split] Refactor BaseFold and add some features. #294
Conversation
Current benchmark results for simple batch (just after refactoring, no skipping rounds yet): Polynomials size: 64 polys, 20 num of variables.
|
Current benchmark results for batch vlop (no skipping rounds yet): Polynomial size: 8 groups, each group has 8 polynomials, with number of variables 20, 19, 18, ..., 13, respectively.
|
Current benchmark results for simple batch (after refactoring, with new Poseidon hash function, no skipping rounds yet): Polynomials size: 64 polys, 20 num of variables.
|
After changing query number to 200:
|
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.
This PR is too large to review. Please break it into smaller chunks, if possible.
Extracting a small PR from #294. The random generator is used only when the encoding scheme is Basecode, and not used for RS code. So remove it from the type parameter for Basefold, i.e., `Basefold<E, Spec, Rng>` is replaced with `Basefold<E, Spec>` to make the API simpler. Fix it to `ChaCha8Rng` in the implementation of Basecode.
Extract a small independent change from #294 Co-authored-by: Ming <[email protected]>
Extracting small PR from #294 Refactor the test code in `mpcs/src/lib.rs`. Define some utility functions to simplify the tests. Also merged the test functions in `mpcs/src/basefold.rs`.
Extracting small PR from #294. The two benchmarks `benches_commit_verify_rs` and `benches_commit_verify_basecode` are similar, differing only in the choice of parameter. Merge them into one benchmark file. Also simplify the codes using the test utility functions introduced in #552 Waiting for #552 to merge. --------- Co-authored-by: Matthias Görgens <[email protected]>
Too big PR. Splitting gradually (but not top priority for now), close first. |
Extracting small PRs from #294 There was an implementation of Iterator for iterating through a `FieldType`. Turns out that it can be replaced with existing tools in `iter_tools`. This proposes the new implementation. Also added some other utility functions for type conversion between `FieldType` and `Vec<E>`, to avoid `match field_type` everywhere.
Massively refactored the code. Eliminate the repetitive codes.
Add features:
Skipping rounds optimization (consider canceling this because it's complex to implement, but the benefit is small since proving time is only 200ms now.)API change:
batch_open/verify
intobatch_vlmp_*
wherevlmp
stands for "polys of Variable Length opened at Multiple Points".batch_vlop_open/verify
wherevlop
stands for "polys of Variable Length opened at One Points".Rng
from the template parameters forBasefold
.