-
Notifications
You must be signed in to change notification settings - Fork 52
refactor(mithril-stm): refactor and stabilize the SNARK setups #3349
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
Open
hjeljeli32
wants to merge
18
commits into
main
Choose a base branch
from
hjeljeli32/3300-refactor-unsafe-snark-setup
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+2,447
−1,731
Open
Changes from all commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
45a14c7
refactor(stm): rename IVC circuit degree constant K to RECURSIVE_CIRC…
hjeljeli32 d5408b5
refactor(stm): relocate and rename shared PLONK key aliases to PlonkV…
hjeljeli32 3519d04
feat(stm): add CircuitKeySerialization trait and key serde for both c…
hjeljeli32 7adc104
feat(stm): give CircuitKeyCache typed key access and wire the SNARK s…
hjeljeli32 d084bae
refactor(stm): rename certificate snark setup module and drop test-on…
hjeljeli32 ad71e77
refactor(stm): rename SnarkSetup to SnarkProverSetup
hjeljeli32 3d9c0b5
test(stm): isolate test key caches per test via current_function!
hjeljeli32 0a98763
refactor(stm): apply first round of review feedback on the SNARK setup
hjeljeli32 0fe7e59
test(stm): apply second round of review feedback on the SNARK setup
hjeljeli32 be8f92a
refactor(stm): turn the circuit key cache into a verification key pro…
hjeljeli32 c1cb344
refactor(stm): compute the certificate key through the verification k…
hjeljeli32 d669da4
refactor(stm): rename IvcProverSetup to IvcSnarkProverSetup and use t…
hjeljeli32 f59df42
test(stm): share a content-keyed key cache across the slow tests
hjeljeli32 38ce2e2
refactor(stm): share the certificate test key and clarify setup naming
hjeljeli32 ec30b96
refactor(stm): address review comments
hjeljeli32 f2691d2
refactor(stm): adopt the reviewed circuit verification key provider
hjeljeli32 f644755
refactor(stm): relocate circuit verification key provider factories
hjeljeli32 0501602
refactor(stm): replace raw SNARK keys with per-circuit key newtypes
hjeljeli32 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| // Lets each circuit derive its own verifying and proving keys from an SRS, so the verification key | ||
| // provider can compute keys on a cache miss without a separate generator type. | ||
| use midnight_curves::Bls12; | ||
| use midnight_proofs::poly::kzg::params::ParamsKZG; | ||
|
|
||
| use crate::{ | ||
| StmResult, | ||
| codec::{TryFromBytes, TryToBytes}, | ||
| }; | ||
|
|
||
| /// A circuit that can generate its verifying and proving keys from a sufficiently sized SRS. | ||
| pub(crate) trait CircuitKeyGenerator { | ||
| /// Verifying key; round-trips through bytes and is cloneable for caching. | ||
| type VerifyingKey: TryFromBytes + TryToBytes + Clone; | ||
| /// Proving key; round-trips through bytes. | ||
| type ProvingKey: TryFromBytes + TryToBytes; | ||
|
|
||
| /// Derives the verifying and proving keys from a sufficiently sized `srs`: it uses `srs` directly | ||
| /// when already at the circuit's relation degree, and otherwise downsizes a clone to that degree, | ||
| /// never mutating the caller's SRS. | ||
| fn generate_key_pair( | ||
| &self, | ||
| srs: &ParamsKZG<Bls12>, | ||
| ) -> StmResult<(Self::VerifyingKey, Self::ProvingKey)>; | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.