-
Notifications
You must be signed in to change notification settings - Fork 35
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
refactor: Refactor public parameters setup to remove optionality of commitment key size hint #95
Conversation
8114f05
to
11f2a89
Compare
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.
Changes look good to me. Only noted a typo in the comments.
Idea: Define a default CommitmentKeyHint
which just returns 0, instead of having &(|_| 0)
.
Done! |
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.
Looks good other than a small unimportant naming thing!
…ommitment key size hint - Converted `CommitmentKeyHint<G>` from a boxed dynamic trait object to a direct dynamic trait object in `r1cs/mod.rs`. - Changed the `commitment_key` function to always require a commitment key floor, eliminating the need for default behavior when a floor function isn't provided. - Updated the `r1cs_shape` function across various files to take in a `CommitmentKeyHint` instead of it being optional and introduce a closure as an argument. - Relevant modifications and updates were made in the `r1cs_shape` and `commitment_key` function calls within the test functions for various modules. - Ported use of commitment key hint to Supernova, closing #53. - This PR puts Arecibo in line with microsoft/Nova#203
- Enhanced the `PublicParams` struct within `./src/supernova/mod.rs` with detailed comments
- Introduced a new function `default_commitment_key_hint` in `nova_snark` package to provide a clearer default sizing hint for the commitment key, - Replaced hard-coded zero values throughout the codebase with calls to `default_commitment_key_hint` function,
b62f492
to
92c5023
Compare
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.
All looks good to me!
* fix: adapt to CK hint API changes in Arecibo Companion PR to argumentcomputer/arecibo#95 * chore: point to arecibo dev branch
This backports the following Arecibo PRs: - #2 - #3 - #10 - #16 - #23 - #30 - #28 - #41 - #45 - #50 - #56 - #51 - #72 - #92 - #95 - #97 - #101 - #110 - #106 - #112 - #114 - #119 - #120 - #127 - #123 - #131 - #174 - #175 - #182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
This implements [Supernova](https://eprint.iacr.org/2022/1758), allowing: - a 'pay-as-you-go' cost structure for folding operations, through the SuperNova folding scheme, - a final SNARK that efficiently compresses an instance of this folded proof, through batching techniques. References: - the [blog post](https://blog.lurk-lang.org/posts/arecibo-supernova/#technical-release-note-supernova-protocol-integration-into-nova) goes into our construction, and links to two more specialized notes on [the `CompressedSNARK` for Supernova](https://hackmd.io/@adr1anh/BJw1g0aBT) along with our variant of the [public input padding issue](https://hackmd.io/@adr1anh/Sy08YaVBa). - the Readme at `src/supernova/Readme.md` This backports the following Arecibo PRs: - argumentcomputer/arecibo#2 - argumentcomputer/arecibo#3 - argumentcomputer/arecibo#10 - argumentcomputer/arecibo#16 - argumentcomputer/arecibo#23 - argumentcomputer/arecibo#30 - argumentcomputer/arecibo#28 - argumentcomputer/arecibo#41 - argumentcomputer/arecibo#45 - argumentcomputer/arecibo#50 - argumentcomputer/arecibo#56 - argumentcomputer/arecibo#51 - argumentcomputer/arecibo#72 - argumentcomputer/arecibo#92 - argumentcomputer/arecibo#95 - argumentcomputer/arecibo#97 - argumentcomputer/arecibo#101 - argumentcomputer/arecibo#110 - argumentcomputer/arecibo#106 - argumentcomputer/arecibo#112 - argumentcomputer/arecibo#114 - argumentcomputer/arecibo#119 - argumentcomputer/arecibo#120 - argumentcomputer/arecibo#127 - argumentcomputer/arecibo#123 - argumentcomputer/arecibo#131 - argumentcomputer/arecibo#174 - argumentcomputer/arecibo#175 - argumentcomputer/arecibo#182 Co-authored-by: WYATT <[email protected]> Co-authored-by: Hanting Zhang <[email protected]> Co-authored-by: Ming <[email protected]> Co-authored-by: porcuquine <[email protected]> Co-authored-by: Samuel Burnham <[email protected]> Co-authored-by: Matej Penciak <[email protected]> Co-authored-by: Adrian Hamelink <[email protected]>
Context
See #5 and microsoft/Nova#203, by which public parameter creation takes a size hint. This size hint carries the particular requirements of the final compressing SNARK the user expected to use with these public parameters.
This avoids setting the size of public parameters too conservatively for all users of the code base, but rather limits the use of "big" public parameters to those constructions that will eventually need them.
In this PR
We slightly simplify the API of passing a commitment key size hint when creating public parameters. We apply this to Supernova, closing #53.
Companion Lurk PR at argumentcomputer/lurk-beta#843
In detail
CommitmentKeyHint<G>
from a boxed dynamic trait object to a direct dynamic trait object inr1cs/mod.rs
.commitment_key
function to always require a commitment key floor, eliminating the need for default behavior when a floor function isn't provided.r1cs_shape
function across various files to take in aCommitmentKeyHint
instead of it being optional and introduce a closure as an argument.r1cs_shape
andcommitment_key
function calls within the test functions for various modules.CommitmentKeyHint
s properly in supernova #53.