-
Notifications
You must be signed in to change notification settings - Fork 182
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
Add initial experimental HyperNova multifolding support #175
base: main
Are you sure you want to change the base?
Add initial experimental HyperNova multifolding support #175
Commits on Jul 11, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 789354a - Browse repository at this point
Copy the full SHA 789354aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 5a025c6 - Browse repository at this point
Copy the full SHA 5a025c6View commit details -
Configuration menu - View commit details
-
Copy full SHA for a3e2182 - Browse repository at this point
Copy the full SHA a3e2182View commit details -
Simplified in recent commit microsoft@b28aaf7
Configuration menu - View commit details
-
Copy full SHA for 5d4b110 - Browse repository at this point
Copy the full SHA 5d4b110View commit details -
Configuration menu - View commit details
-
Copy full SHA for 60bbec2 - Browse repository at this point
Copy the full SHA 60bbec2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4f5e784 - Browse repository at this point
Copy the full SHA 4f5e784View commit details -
Configuration menu - View commit details
-
Copy full SHA for f72c49b - Browse repository at this point
Copy the full SHA f72c49bView commit details -
refactor(ccs): Add experimental hypernova feature flag (on by default)
Also add docs to README
Configuration menu - View commit details
-
Copy full SHA for 4470d92 - Browse repository at this point
Copy the full SHA 4470d92View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9182cc3 - Browse repository at this point
Copy the full SHA 9182cc3View commit details -
Configuration menu - View commit details
-
Copy full SHA for db6add0 - Browse repository at this point
Copy the full SHA db6add0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2a59d80 - Browse repository at this point
Copy the full SHA 2a59d80View commit details -
add doc and tests for spartan/polynomial.rs
1. Add documentation and test for spartan/polynomial.rs. - EqPolynomial: $\tilde{eq}$ - MultilinearPolynomial: multilinear polynomial - SparsePolynomial 2. Remove duplicate get_bits in SparsePolynomial::evaluate.
Configuration menu - View commit details
-
Copy full SHA for 85f4e22 - Browse repository at this point
Copy the full SHA 85f4e22View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5223fea - Browse repository at this point
Copy the full SHA 5223feaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6a45489 - Browse repository at this point
Copy the full SHA 6a45489View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9598d1d - Browse repository at this point
Copy the full SHA 9598d1dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 64b7bd7 - Browse repository at this point
Copy the full SHA 64b7bd7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8db47a5 - Browse repository at this point
Copy the full SHA 8db47a5View commit details -
Configuration menu - View commit details
-
Copy full SHA for ac57cb6 - Browse repository at this point
Copy the full SHA ac57cb6View commit details -
Configuration menu - View commit details
-
Copy full SHA for d373753 - Browse repository at this point
Copy the full SHA d373753View commit details -
feat(ccs): Sketch out basic CCCS/LCCCS associated data structures
Also add some comments
Configuration menu - View commit details
-
Copy full SHA for ed36b4a - Browse repository at this point
Copy the full SHA ed36b4aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0262dc6 - Browse repository at this point
Copy the full SHA 0262dc6View commit details -
Configuration menu - View commit details
-
Copy full SHA for f1a8834 - Browse repository at this point
Copy the full SHA f1a8834View commit details -
Configuration menu - View commit details
-
Copy full SHA for d1e63a0 - Browse repository at this point
Copy the full SHA d1e63a0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0192d63 - Browse repository at this point
Copy the full SHA 0192d63View commit details -
Configuration menu - View commit details
-
Copy full SHA for 49455f8 - Browse repository at this point
Copy the full SHA 49455f8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1a9244e - Browse repository at this point
Copy the full SHA 1a9244eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 93fc061 - Browse repository at this point
Copy the full SHA 93fc061View commit details -
Configuration menu - View commit details
-
Copy full SHA for dbc0c22 - Browse repository at this point
Copy the full SHA dbc0c22View commit details -
Configuration menu - View commit details
-
Copy full SHA for 48c1ac9 - Browse repository at this point
Copy the full SHA 48c1ac9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0a473b0 - Browse repository at this point
Copy the full SHA 0a473b0View commit details -
Configuration menu - View commit details
-
Copy full SHA for e404742 - Browse repository at this point
Copy the full SHA e404742View commit details -
Configuration menu - View commit details
-
Copy full SHA for 987359b - Browse repository at this point
Copy the full SHA 987359bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 5ec547a - Browse repository at this point
Copy the full SHA 5ec547aView commit details -
fix: Correct SparseMatrix aux methods
This updates and makes compile the `n_rows`/`n_cols` fns of SparseMatrix. It also updates `is_valid` which is transfromed from a closure into an associated fn for SparseMatrix.
Configuration menu - View commit details
-
Copy full SHA for ab70853 - Browse repository at this point
Copy the full SHA ab70853View commit details -
fix: Update CCS-related structs & constructor
This commit: - Removes attribute duplicity from `CCSShape`. - Fixes the reversed naming for col&row number. - Removes leftover comments that no longer apply. - Update the `CCSShape::new` to use `is_valid` on the new format as well as remove useless checks & update to new `CCSSape` format.
Configuration menu - View commit details
-
Copy full SHA for d0a5160 - Browse repository at this point
Copy the full SHA d0a5160View commit details -
change: Remove Result from Matrix/vec ops
This removes the annoying results that were not needed from ops implementations and replaces them by leaving the "necessary" sanity-checks as assertions.
Configuration menu - View commit details
-
Copy full SHA for fa0376e - Browse repository at this point
Copy the full SHA fa0376eView commit details -
change: Update CCS.is_sat() to use iterators
The impl gets cleaner and also easier to update later.
Configuration menu - View commit details
-
Copy full SHA for 0559644 - Browse repository at this point
Copy the full SHA 0559644View commit details -
Configuration menu - View commit details
-
Copy full SHA for 10f1b9f - Browse repository at this point
Copy the full SHA 10f1b9fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 659ef74 - Browse repository at this point
Copy the full SHA 659ef74View commit details -
Configuration menu - View commit details
-
Copy full SHA for ff4b44b - Browse repository at this point
Copy the full SHA ff4b44bView commit details -
Configuration menu - View commit details
-
Copy full SHA for af1e3d5 - Browse repository at this point
Copy the full SHA af1e3d5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9b2f3c5 - Browse repository at this point
Copy the full SHA 9b2f3c5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2a79b9e - Browse repository at this point
Copy the full SHA 2a79b9eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1b8bba8 - Browse repository at this point
Copy the full SHA 1b8bba8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8075c15 - Browse repository at this point
Copy the full SHA 8075c15View commit details -
Configuration menu - View commit details
-
Copy full SHA for b81e432 - Browse repository at this point
Copy the full SHA b81e432View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0f26a23 - Browse repository at this point
Copy the full SHA 0f26a23View commit details -
Configuration menu - View commit details
-
Copy full SHA for 68afd5e - Browse repository at this point
Copy the full SHA 68afd5eView commit details -
Configuration menu - View commit details
-
Copy full SHA for f48dda8 - Browse repository at this point
Copy the full SHA f48dda8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 71668c7 - Browse repository at this point
Copy the full SHA 71668c7View commit details -
Configuration menu - View commit details
-
Copy full SHA for b2e8a6b - Browse repository at this point
Copy the full SHA b2e8a6bView commit details -
fix: Include n_cos & n_rows info in SparseMatrix
This prevents having issues as shown in the tests now failing for MLE conversions. The issue is that empty rows/columns at the end of the matrixes cause the algorithms to actually fail. As we have a sense of the matrix dimensions only when we are in the context of CCS. But we don't when we're outside of it.
Configuration menu - View commit details
-
Copy full SHA for 578431c - Browse repository at this point
Copy the full SHA 578431cView commit details -
change: Update
pad
andfrom_r1cs
CCS methods.This solves some minor errors & issues with the CCS methods as well as updates the SparseMatrix calls to the new API/params used.
Configuration menu - View commit details
-
Copy full SHA for bc94cb7 - Browse repository at this point
Copy the full SHA bc94cb7View commit details -
remove: coefficients field from HyperCube & refactor
This helps to reduce the complexity of the implementation while at the same time removing the possibility of handling a boolean hypercube with coefficients which is not needed now at all. We can always bring this back later.
Configuration menu - View commit details
-
Copy full SHA for dec29ae - Browse repository at this point
Copy the full SHA dec29aeView commit details -
Configuration menu - View commit details
-
Copy full SHA for a11cf9c - Browse repository at this point
Copy the full SHA a11cf9cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 055751e - Browse repository at this point
Copy the full SHA 055751eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1450875 - Browse repository at this point
Copy the full SHA 1450875View commit details -
Configuration menu - View commit details
-
Copy full SHA for a057978 - Browse repository at this point
Copy the full SHA a057978View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1b60494 - Browse repository at this point
Copy the full SHA 1b60494View commit details -
- BooleanHypercube iterator was reversing the bit representation - bound_poly_var_top is not fixing first variables but fixing last variables (=Espresso/hyperplonk's fix_last_variables method) - fix method fix_one_variable_helper Add also a couple of notes regarding sparse_vec_to_mle & bound_poly_var_top methods. Note: the title of this commit is in reference to the commit message of 22b3f6f
Configuration menu - View commit details
-
Copy full SHA for 827a1ff - Browse repository at this point
Copy the full SHA 827a1ffView commit details -
Configuration menu - View commit details
-
Copy full SHA for fe14cdd - Browse repository at this point
Copy the full SHA fe14cddView commit details -
fix cccs.compute_sum_Mz method, small fix in compute_q, so by consequ…
…ence compute_q & compute_Q now work fine
Configuration menu - View commit details
-
Copy full SHA for ce646e6 - Browse repository at this point
Copy the full SHA ce646e6View commit details -
Configuration menu - View commit details
-
Copy full SHA for af45a4c - Browse repository at this point
Copy the full SHA af45a4cView commit details -
Configuration menu - View commit details
-
Copy full SHA for c800b39 - Browse repository at this point
Copy the full SHA c800b39View commit details -
Configuration menu - View commit details
-
Copy full SHA for b714a20 - Browse repository at this point
Copy the full SHA b714a20View commit details -
Configuration menu - View commit details
-
Copy full SHA for d436f87 - Browse repository at this point
Copy the full SHA d436f87View commit details -
change: Move Compute_sum_Mz into util mode
This method was part of CCCS associated methods. But it doesn't make sense as LCCCS also requires it aside from other standalone functions. Hence, it is moved to a util module.
Configuration menu - View commit details
-
Copy full SHA for 8e2d99c - Browse repository at this point
Copy the full SHA 8e2d99cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 99679fb - Browse repository at this point
Copy the full SHA 99679fbView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8b73f47 - Browse repository at this point
Copy the full SHA 8b73f47View commit details -
Configuration menu - View commit details
-
Copy full SHA for eaadaf2 - Browse repository at this point
Copy the full SHA eaadaf2View commit details -
Configuration menu - View commit details
-
Copy full SHA for e3303cd - Browse repository at this point
Copy the full SHA e3303cdView commit details -
Configuration menu - View commit details
-
Copy full SHA for f5a13a4 - Browse repository at this point
Copy the full SHA f5a13a4View commit details -
Configuration menu - View commit details
-
Copy full SHA for bf589be - Browse repository at this point
Copy the full SHA bf589beView commit details -
Configuration menu - View commit details
-
Copy full SHA for 45e8391 - Browse repository at this point
Copy the full SHA 45e8391View commit details -
fix: compute_all_sum_Mz_evals with test
This adds a test for the `compute_all_sum_Mz_evals` fn and fixes it by reversing the order of iteration over `r_x` so that it matches the expectancies from Spartan/Polynomial lib impl.
Configuration menu - View commit details
-
Copy full SHA for a14d27d - Browse repository at this point
Copy the full SHA a14d27dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3c1017c - Browse repository at this point
Copy the full SHA 3c1017cView commit details -
add: Basic multifolding functions & tests
Includes fns to compute thetas & sigmas, C from thetas and sigmans and computation of `g` poly. It also includes tests for g computation.
Configuration menu - View commit details
-
Copy full SHA for 2a1fa7a - Browse repository at this point
Copy the full SHA 2a1fa7aView commit details -
Configuration menu - View commit details
-
Copy full SHA for a2d4408 - Browse repository at this point
Copy the full SHA a2d4408View commit details -
fix: test_compute_sigmas_and_thetas
This fixes the endianness of `r_x_prime` which was the issue that prevented the `test_compute_sigmas_and_thetas` to pass.
Configuration menu - View commit details
-
Copy full SHA for 78a4059 - Browse repository at this point
Copy the full SHA 78a4059View commit details -
Configuration menu - View commit details
-
Copy full SHA for d37afdb - Browse repository at this point
Copy the full SHA d37afdbView commit details -
Configuration menu - View commit details
-
Copy full SHA for 09cef38 - Browse repository at this point
Copy the full SHA 09cef38View commit details -
test(multifolding): Fix CCCS assert
Was using wrong witness. Also change z order and make variables more more eplicit.
Configuration menu - View commit details
-
Copy full SHA for a33e7c3 - Browse repository at this point
Copy the full SHA a33e7c3View commit details -
refactor(ccs): Remove special CCCSWitness
Should be the same according to current logic and multifolding-poc. Also change to to_cccs.
Configuration menu - View commit details
-
Copy full SHA for 216e0e6 - Browse repository at this point
Copy the full SHA 216e0e6View commit details -
tests(ccs): Fix test_lcccs_fold test
Fix variable order and make used variables more explicit to correspond to multifolding-poc
Configuration menu - View commit details
-
Copy full SHA for f3bcf68 - Browse repository at this point
Copy the full SHA f3bcf68View commit details -
Configuration menu - View commit details
-
Copy full SHA for af959fb - Browse repository at this point
Copy the full SHA af959fbView commit details
Commits on Jul 12, 2023
-
Configuration menu - View commit details
-
Copy full SHA for f07e71b - Browse repository at this point
Copy the full SHA f07e71bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4828a20 - Browse repository at this point
Copy the full SHA 4828a20View commit details -
chore: Restore global warnings and unused
Replace with local allow unused, works with hypernova flag on and off
Configuration menu - View commit details
-
Copy full SHA for 6f1ed22 - Browse repository at this point
Copy the full SHA 6f1ed22View commit details -
refactor: Enable requirement of even public IO by default
Hacky solution with feature flag for experimental hypernova for now, need to adjust test case to fix better
Configuration menu - View commit details
-
Copy full SHA for 20ba46c - Browse repository at this point
Copy the full SHA 20ba46cView commit details -
Opening WIP PR to make diff more clear Targets #13 This merges the multifolding-poc porting into the Nova codebase
Configuration menu - View commit details
-
Copy full SHA for ca55e73 - Browse repository at this point
Copy the full SHA ca55e73View commit details
Commits on Jul 14, 2023
-
Configuration menu - View commit details
-
Copy full SHA for cde23f3 - Browse repository at this point
Copy the full SHA cde23f3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3fdaeab - Browse repository at this point
Copy the full SHA 3fdaeabView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4ae0cf7 - Browse repository at this point
Copy the full SHA 4ae0cf7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3437fae - Browse repository at this point
Copy the full SHA 3437faeView commit details
Commits on Jul 20, 2023
-
- Move bit_decompose into hypercube.rs which is closer conceptually and only used there (except for a VirtualPolynomial test) - Remove unused bit_decompose imports from other files
Configuration menu - View commit details
-
Copy full SHA for 6fa448f - Browse repository at this point
Copy the full SHA 6fa448fView commit details -
refactor(virtual_poly): Remove unnecessary default from PhantomData (#39
) Fixes additional clippy errors I see when I upgraded my Rust toolchain (had some issues with clippy and Homebrew) ``` error: use of `default` to create a unit struct --> src/ccs/util/virtual_poly.rs:120:29 | 120 | phantom: PhantomData::default(), | ^^^^^^^^^^^ help: remove this call to `default` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_constructed_unit_structs note: the lint level is defined here ```
Configuration menu - View commit details
-
Copy full SHA for a23c6ab - Browse repository at this point
Copy the full SHA a23c6abView commit details -
refactor: Make tests generic w.r.t. curve/group (#40)
Addresses #34 Should cover all files
Configuration menu - View commit details
-
Copy full SHA for 9a508b2 - Browse repository at this point
Copy the full SHA 9a508b2View commit details
Commits on Jul 31, 2023
-
NIMFS-centric API refactor for multifolding impl (#41)
This is a proposal for the new API of the Hypernova/multifolding current impl. The idea is that the API is [NIMFS](https://github.com/privacy-scaling-explorations/Nova/blob/change%2FNIMFS_centric_API/src/ccs/multifolding.rs#L39-L44)-centric. That means, the end user only needs to deal for now with `CCS`(this can be prevented) and the `NIMFS` object. The rest of interactions with `CCCS` & `LCCCS` have been "masked" or at the very least, is not necessary to import these structs to have full functionallity. The current workflow that this API brings can be clearly seen here: ```rust let ccs = CCS::<G>::from_r1cs(r1cs_shape); let mles = ccs.matrix_mles(); let mut nimfs = NIMFS::init( &mut rng, ccs, mles, // Note we constructed z on the fly with the previously-used witness. vec![ G::Scalar::ONE, G::Scalar::from(3u64), G::Scalar::from(35u64), ], ); // Now, the NIMFS should satisfy correctly as we have inputed valid starting inpuits for the first LCCCS contained instance: assert!(nimfs.is_sat().is_ok()); // Now let's create a valid CCCS instance and fold it: let valid_cccs = nimfs.gen_cccs(vec![ G::Scalar::ONE, G::Scalar::from(2u64), G::Scalar::from(15u64), ]); nimfs.fold(&mut rng, valid_cccs); // Since the instance was correct, the NIMFS should still be satisfied. assert!(nimfs.is_sat().is_ok()); // Now let's create am invalid CCCS instance and fold it: let invalid_cccs = nimfs.gen_cccs(vec![ G::Scalar::ONE, G::Scalar::from(5u64), G::Scalar::from(55u64), ]); nimfs.fold(&mut rng, invalid_cccs); // Since the instance was wrong, the NIMFS should not be satisfied correctly. assert!(nimfs.is_sat().is_err()); ``` This is part of a test, located in https://github.com/privacy-scaling-explorations/Nova/blob/change%2FNIMFS_centric_API/tests/nimfs.rs The idea is that the user needs to type as less as possible in order to get a fold done.
Configuration menu - View commit details
-
Copy full SHA for 1119702 - Browse repository at this point
Copy the full SHA 1119702View commit details
Commits on Aug 2, 2023
-
Use polynomial.rs instead of virtual_poly for equality polynomial (#42)
- Remove custom eq_poly and use EqPolynomial instead - Update polynomial docs - Ensures order of evaluation is consistent between for VirtualPoly and EqPolynomial - Remove old build_eq_x_r_vec and build_eq_x_r_helper - Tests around boolean hypercube and other introduced functions to make endianness explicit etc Addresses #19
Configuration menu - View commit details
-
Copy full SHA for bb7a651 - Browse repository at this point
Copy the full SHA bb7a651View commit details -
Transcript usage inclusion into the codebase (#43)
The PR introduces usage from the associated trait/type of `Group` called `TranscriptEngineTrait` to perform the Fiat-Shamir inside the multifolding for the Sigmas and Thetas computations as well as gammas. This should be rebased on the top of `main` once #41 is merged and then reviewed. As there could be places where FS should be applied but it isn't.
Configuration menu - View commit details
-
Copy full SHA for 0c8915b - Browse repository at this point
Copy the full SHA 0c8915bView commit details
Commits on Aug 4, 2023
-
Remove witness from CCCS & LCCCS instances (#48)
Since the Verifier in the protocol does not have access to the witnesses, we should not have `z`s inside of the LCCCS and CCCS instances and instead, work with the witness sepparatedly. This PR implements this sort of behaviour. Resolves: #46
Configuration menu - View commit details
-
Copy full SHA for 5f24446 - Browse repository at this point
Copy the full SHA 5f24446View commit details
Commits on Aug 7, 2023
-
Sync upstream --------- Co-authored-by: François Garillot <4142+huitseeker@users.noreply.github.com> Co-authored-by: Srinath Setty <srinath@microsoft.com>
Configuration menu - View commit details
-
Copy full SHA for a18afe0 - Browse repository at this point
Copy the full SHA a18afe0View commit details