-
Notifications
You must be signed in to change notification settings - Fork 37
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
Support non-determinism in NIVC circuits. #45
Conversation
5ff6db5
to
7044385
Compare
Hi, would you kindly elaborate more on how to achieve non-deterministc private input work under current design, maybe provide a test example? |
Yes, a test will make it clearer — but I need this downstream sooner, and the current test does exercise the change itself still. In other words, I (or someone) can add something that uses something similar to (or exactly the same as) the The point is that in general a bellpepper circuit (something that implements Consider a circuit whose input is the digest output from a binary hash — and whose output is the sum of the two field elements of the preimage. The preimage needs to be somehow communicated to the
The |
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.
Yes, a test will make it clearer — but I need this downstream sooner, and the current test does exercise the change itself still. In other words, I (or someone) can add something that uses something similar to (or exactly the same as) the
test_ivc_nondet_with_compression
test that Nova has in a follow-up. That example has a circuit that 'calculates' fifth roots — but actually generates the data in reverse, so the roots are supplied non-deterministically, rather than directly calculated.The point is that in general a bellpepper circuit (something that implements
Circuit
, which Nova reframes asStepCircuit
, as does SuperNova) doesn't provide only a shape — but also unique data per-circuit. In some cases, like in theTestROM
example, the circuit data is just a parameterization of the shape. But in the general case, it can also provide the non-deterministic hints needed in order to generate a satisfying witness for the circuit. An even more compelling example than the fifth-root would be hash preimages.Consider a circuit whose input is the digest output from a binary hash — and whose output is the sum of the two field elements of the preimage. The preimage needs to be somehow communicated to the
synthesize
method, so the auxiliary variables can be correctly assigned. In this example, the circuit struct might look like:struct Foo<F> { preimage: Option<(F, F)> }
The
Option
is there because when synthesizing the shape (for public parameters), there are no real values with which to compute. This is fine for the value used to compute the public params for theRunningClaims
, but the individual calls toprove_step
will need the actual preimage values in order to witness a satisfying assignment.
Thanks for explanation! In test_ivc_nondet_with_compression
the non-deterministics input are implemented by multiple copy of primary circuit instances each have different field values, and those instance are instantiated in early stage. I believe there are some space to further polishing this design later on.
For this PR, how about further tuning of the design of Supernova RecursiveSNARK by passing &Option<C1>
in prove_step
and iter_base_step
instead? With that, for deterministic primary circuit instance can still retrieved from running claim, and for non-deterministic primary circuit the new instance will be used instead.
Besides, also suggest add sanity check to assure non-deterministic primary circuit instance Shape
matching with shape in setup phase.
benches/recursive-snark-supernova.rs
Outdated
let res = recursive_snark.prove_step(&running_claims[1], &z0_primary, &z0_secondary); | ||
let res = recursive_snark.prove_step( | ||
&running_claims[1], | ||
&bench.primary_circuit(0), |
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.
Here should be primary_circuit(1)
otherwise it should fail on verifying due to mismatch shape.
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.
fixed
This would be very expensive. Synthesizing the I think the best approach to the SuperNova work will be to fall Nova as closely as possible, ideally in a way that allows even more shared code than currently. This will simplify treating the folding scheme as a black box (as much as possible) and will in turn make it easier to extend NIVC to work with future developments. |
I would rather avoid complexity (especially complexity which gratuitously deviates from Nova) whose only purpose is convenience in a special case. If the prover knows a given circuit doesn't require any hints, then nothing prevents passing a reference to the identical object to |
My point is to keep the original simplified api to just passing single other part LGTM! |
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 <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
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: - lurk-lang/arecibo#2 - lurk-lang/arecibo#3 - lurk-lang/arecibo#10 - lurk-lang/arecibo#16 - lurk-lang/arecibo#23 - lurk-lang/arecibo#30 - lurk-lang/arecibo#28 - lurk-lang/arecibo#41 - lurk-lang/arecibo#45 - lurk-lang/arecibo#50 - lurk-lang/arecibo#56 - lurk-lang/arecibo#51 - lurk-lang/arecibo#72 - lurk-lang/arecibo#92 - lurk-lang/arecibo#95 - lurk-lang/arecibo#97 - lurk-lang/arecibo#101 - lurk-lang/arecibo#110 - lurk-lang/arecibo#106 - lurk-lang/arecibo#112 - lurk-lang/arecibo#114 - lurk-lang/arecibo#119 - lurk-lang/arecibo#120 - lurk-lang/arecibo#127 - lurk-lang/arecibo#123 - lurk-lang/arecibo#131 - lurk-lang/arecibo#174 - lurk-lang/arecibo#175 - lurk-lang/arecibo#182 Co-authored-by: WYATT <wyattbenno@gmail.com> Co-authored-by: Hanting Zhang <hantingz@usc.edu> Co-authored-by: Ming <hero78119@gmail.com> Co-authored-by: porcuquine <porcuquine@users.noreply.github.com> Co-authored-by: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Co-authored-by: Matej Penciak <96667244+mpenciak@users.noreply.github.com> Co-authored-by: Adrian Hamelink <adrian.hamelink@gmail.com>
The initial SuperNova implementation diverged from Nova's pattern for non-deterministic step proofs — by saving a prototype circuit in the
RunningClaim
then reusing it with new 'public' inputs at each step. However, since each step's computation may depend on non-deterministic private inputs,prove_step
actually needs to receive an instance of the primary circuit per-step.This PR accomplishes that but continues to use the previous method for the secondary circuit, on the theory that the approach to NIVC implemented and supported here assumes and requires that a trivial deterministic function will be proved in the secondary circuit.
Because downstream work depends on this change, this PR is a minimal patch. Future work should add a test modeled on the equivalent Nova test, exercising the change through an example that requires it.