-
Notifications
You must be signed in to change notification settings - Fork 188
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
Draft
oskarth
wants to merge
102
commits into
microsoft:main
Choose a base branch
from
privacy-scaling-explorations:feat/basic-ccs
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from all commits
Commits
Show all changes
102 commits
Select commit
Hold shift + click to select a range
789354a
Add utils for hadamard and matrix vector product
oskarth 5a025c6
utils: Add more utils, sparse matrix vector product etc
oskarth a3e2182
feat: First cut of CCS (#14)
oskarth 5d4b110
refactor: Remove digest
oskarth 60bbec2
feat(CCS): Add from_r1cs and get rid of hardcoded constants
oskarth 4f5e784
fix(CCS): Add commitment key and CCS is_sat test
oskarth f72c49b
style(ccs): Remove old comments and unused code, clarify todos
oskarth 4470d92
refactor(ccs): Add experimental hypernova feature flag (on by default)
oskarth 9182cc3
chore(ccs): Turn off hypernova feature flag by default
oskarth db6add0
chore: update dep
oskarth 2a59d80
chore: Cargo.toml
oskarth 85f4e22
add doc and tests for spartan/polynomial.rs
wangtsiao 5223fea
use pasta instead of defining new fp
wangtsiao 6a45489
wrap link with <> in comment
wangtsiao 9598d1d
fmt(spartan): cargo fmt
oskarth 64b7bd7
Remove: Clippy unused fn lint
CPerezz 8db47a5
change: Impl SparseMatrix type
CPerezz ac57cb6
change: Adopt SparseMatrix type and make `pad` recieve &mut
CPerezz d373753
Fix: Update tests to match new trait bounds
CPerezz ed36b4a
feat(ccs): Sketch out basic CCCS/LCCCS associated data structures
oskarth 0262dc6
feat(utils): Add SparseMatrix n_rows/n_cols utils
oskarth f1a8834
fix(ccs): Calculcate m n_rows correctly for a set of sparse matrices
oskarth d1e63a0
feat(ccs): Add m, n, s and s_prime to CCS struct
oskarth 0192d63
WIP CCCS
oskarth 49455f8
WIP: CCS MLE stuff
oskarth 1a9244e
fix(utils): fix sparse_matrix_to_mlp test
oskarth 93fc061
refactor(ccs): change c to be Scalar
oskarth dbc0c22
feat(polynomial): Add convenience functions for MLP
oskarth 48c1ac9
wip(ccs): compute_g function
oskarth 0a473b0
refactor: use shorthand syntax for add and mul operations
oskarth e404742
feat: Add BooleanHypercube to evaluate multilinear polynomial at give…
oskarth 987359b
refactor: Move Boolean hypercube to separate module
oskarth 5ec547a
feat(ccs): compute_sum_Mz
oskarth ab70853
fix: Correct SparseMatrix aux methods
CPerezz d0a5160
fix: Update CCS-related structs & constructor
CPerezz fa0376e
change: Remove Result from Matrix/vec ops
CPerezz 0559644
change: Update CCS.is_sat() to use iterators
CPerezz 10f1b9f
change: Move matrix padding to SparseMatrix
CPerezz 659ef74
change: Update `from_r1cs` & `pad` CCSShape fns
CPerezz ff4b44b
change: Standarize `new` methods & remove CAPS
CPerezz af1e3d5
remove: Unused CCShape::matrix_mul fn
CPerezz 9b2f3c5
fix: Move test-only fns to test mod & fix sparse tests
CPerezz 2a79b9e
change: Remove num_cons & unneeded Results
CPerezz 1b8bba8
fix: Add test feature flag to HyperCube tests mod
CPerezz 8075c15
add: Migrate VirtualPolynomial from espresso/Hyperplonk
CPerezz b81e432
fix: Include err variant to handle VirtualPolynomial
CPerezz 0f26a23
change: Move CCS stuff to it's own module
CPerezz 68afd5e
add: Migrate VirtualPolynomial from espresso/HyperPlonk
CPerezz f48dda8
fix: Correct q_computation & update to VirtualPoly usage
CPerezz 71668c7
add: Add CCS -> CCCS conversions
CPerezz b2e8a6b
change: Update/Improve a bit the HyperCube API
CPerezz 578431c
fix: Include n_cos & n_rows info in SparseMatrix
CPerezz bc94cb7
change: Update `pad` and `from_r1cs` CCS methods.
CPerezz dec29ae
remove: coefficients field from HyperCube & refactor
CPerezz a11cf9c
change: Change HyperCube `evaluate_at` endianness
CPerezz 055751e
add: Port MLE support & tests passing
CPerezz 1450875
fix: Vec * Sparse
CPerezz a057978
fix: Split Matrix_Vec prod into dense+sparse
CPerezz 1b60494
this code is cursed
CPerezz 827a1ff
lift the curse:
arnaucube fe14cdd
fix SparseMatrix.to_mle() method, fix test_matrix_to_mle
arnaucube ce646e6
fix cccs.compute_sum_Mz method, small fix in compute_q, so by consequ…
arnaucube af45a4c
change: Get M_j_mle from precomputed CCCS M's
CPerezz c800b39
remove: CCS struct which is unused
CPerezz b714a20
change: Plce impl blocks under their structs
CPerezz d436f87
change: Create utils folder under ccs
CPerezz 8e2d99c
change: Move Compute_sum_Mz into util mode
CPerezz 99679fb
change: Move `fix_variables` & util tests to util mod
CPerezz 8b73f47
change: Move CCS test fns as associated fns
CPerezz eaadaf2
Add: Compute_all_sum_Mz_evals fn to utils module
CPerezz e3303cd
add: Ck computation & instance satisfaction fns for LCCCS
CPerezz f5a13a4
remove: Rng param in gen_test_ccs instance fn
CPerezz bf589be
Add: CCS to LCCCS transformation & v_j s comp
CPerezz 45e8391
add: LCCCS tests with test_lcccs_v_j FAILING
CPerezz a14d27d
fix: compute_all_sum_Mz_evals with test
CPerezz 3c1017c
fix: test_lcccs_v_j working
CPerezz 2a1fa7a
add: Basic multifolding functions & tests
CPerezz a2d4408
add: Failing test for sigmas_and_thetas comp
CPerezz 78a4059
fix: test_compute_sigmas_and_thetas
CPerezz d37afdb
add: Folding functions pending for tests to pass
CPerezz 09cef38
tmp: Check CCCS instance correctness failing
CPerezz a33e7c3
test(multifolding): Fix CCCS assert
oskarth 216e0e6
refactor(ccs): Remove special CCCSWitness
oskarth f3bcf68
tests(ccs): Fix test_lcccs_fold test
oskarth af959fb
chore: fix errors after rebase
oskarth f07e71b
Merge upstream/main
oskarth 4828a20
chore: fix merge artifact
oskarth 6f1ed22
chore: Restore global warnings and unused
oskarth 20ba46c
refactor: Enable requirement of even public IO by default
oskarth ca55e73
Hypernova first cut (#15)
CPerezz cde23f3
refactor(utils): SparseMatrix taking F instead of G (#33)
oskarth 3fdaeab
test(utils): Make generic over Field
oskarth 4ae0cf7
test(utils): Make generic over PrimeField for SparseMatrix
oskarth 3437fae
fix: Address all Clippy suggestions/lints
CPerezz 6fa448f
Update bit_decompose def:
arnaucube a23c6ab
refactor(virtual_poly): Remove unnecessary default from PhantomData (…
oskarth 9a508b2
refactor: Make tests generic w.r.t. curve/group (#40)
oskarth 1119702
NIMFS-centric API refactor for multifolding impl (#41)
CPerezz bb7a651
Use polynomial.rs instead of virtual_poly for equality polynomial (#42)
oskarth 0c8915b
Transcript usage inclusion into the codebase (#43)
CPerezz 5f24446
Remove witness from CCCS & LCCCS instances (#48)
CPerezz a18afe0
Chore/sync upstream (#51)
oskarth File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -51,6 +51,15 @@ This project has adopted the [Microsoft Open Source Code of Conduct](https://ope | |
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or | ||
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. | ||
|
||
|
||
### Experimental features | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nit: This is currently a subsection under "Contributing". Could we please move this above the "References section"? And use "##" so it is not a subsection? |
||
|
||
To run early experimental work on CCS and HyperNova, use the `hypernova` feature flag: | ||
|
||
```text | ||
cargo test --features hypernova ccs | ||
``` | ||
|
||
## Trademarks | ||
|
||
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
We can turn this off before merging, we use this in our fork