Skip to content
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

Merged
merged 3 commits into from
Sep 14, 2023
Merged

Conversation

porcuquine
Copy link
Contributor

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.

src/supernova/mod.rs Show resolved Hide resolved
@hero78119
Copy link
Contributor

Hi, would you kindly elaborate more on how to achieve non-deterministc private input work under current design, maybe provide a test example?

@porcuquine
Copy link
Contributor Author

porcuquine commented Sep 13, 2023

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 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 as StepCircuit, as does SuperNova) doesn't provide only a shape — but also unique data per-circuit. In some cases, like in the TestROM 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 the RunningClaims, but the individual calls to prove_step will need the actual preimage values in order to witness a satisfying assignment.

Copy link
Contributor

@hero78119 hero78119 left a 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 as StepCircuit, as does SuperNova) doesn't provide only a shape — but also unique data per-circuit. In some cases, like in the TestROM 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 the RunningClaims, but the individual calls to prove_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.

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),
Copy link
Contributor

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.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@porcuquine
Copy link
Contributor Author

Besides, also suggest add sanity check to assure non-deterministic primary circuit instance Shape matching with shape in setup phase.

This would be very expensive. Synthesizing the Shape is meant to be a one-time operation, and asymptotic assumptions of performance analysis require that it remain that way. I understand the appeal of a safety double-check, but this is exactly the same situation as Nova.

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.

@porcuquine
Copy link
Contributor Author

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.

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 prove_step every time.

@hero78119
Copy link
Contributor

hero78119 commented Sep 14, 2023

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.

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 prove_step every time.

My point is to keep the original simplified api to just passing single running_claim in deterministic primary circuit use case. But I see your point that it should be better to align design with Nova first, and refactor with Nova once got better design.

other part LGTM!

@porcuquine porcuquine added this pull request to the merge queue Sep 14, 2023
Merged via the queue into dev with commit e9c65c7 Sep 14, 2023
2 checks passed
@porcuquine porcuquine deleted the non-determinstic-nivc branch September 14, 2023 02:53
huitseeker added a commit that referenced this pull request Dec 17, 2023
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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request Dec 17, 2023
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 <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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request Dec 18, 2023
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 <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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request Jan 3, 2024
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 <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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request Jan 4, 2024
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 <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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request Jan 16, 2024
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 <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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request Jan 25, 2024
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 <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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request Jan 25, 2024
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 <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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request Jan 31, 2024
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 <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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request Feb 21, 2024
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 <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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request Mar 7, 2024
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 <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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request May 2, 2024
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 <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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request May 3, 2024
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 <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>
huitseeker added a commit to argumentcomputer/Nova that referenced this pull request Jun 8, 2024
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 <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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants