-
Notifications
You must be signed in to change notification settings - Fork 222
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
Integrate the compression functionality into the prover and network crates #29
Comments
govereau
pushed a commit
that referenced
this issue
Jan 5, 2024
* pull ark-linear-sumcheck * clippy * absorb challenges * make sumcheck::prove infallible * add list len to verifier key * comment
6 tasks
govereau
pushed a commit
that referenced
this issue
Jan 9, 2024
* pull ark-linear-sumcheck * clippy * absorb challenges * make sumcheck::prove infallible * add list len to verifier key * comment
NEX-54 Integrate the compression functionality into the prover and network crates
Upgrade the CLI tools to support compression with appropriate flags |
Implemented |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Building from PR #28, we need to add features to the
nexus-zkvm
prover
andnetwork
crates to use the compression features in the supernova repo.PR #28 adds a
compressible
option to the parameter generation methods which changes the way Nova's public parameters are set up: instead of sampling them, they are processed using a polynomial commitment scheme SRS which is loaded from file. This is required if we want to use compression later for the proof (we might want to make this behavior the default at some point, but it's optional for now to allow flexibility with testing and benchmarking).Here's a rough outline of what needs to be done to complete this issue:
compress
command to the top-level CLI (/the network API). This should do two tasks:SNARK::setup()
function from supernova. This takes both the Nova public parameters and the PCS's SRS as input, and both of these should be read from file, and creates aSNARKKey
object, which should be saved to file.SNARK::compress()
function from supernova. Save the result to file: e.g. as anenum
which is either aPCDNode
or aCompressedPCDProof
.verify
command to detect whether the proof is compressed or not, and if so, verify it usingSNARK::verify()
. This uses theSNARKKey
object created in the first step above.Note that only the parallel (PCD) version of Nova supports compression right now.
Note: (as of 1.4.24) we're in the process of merging together the supernova, spartan, and nexus-zkvm repos, and this will be cleaner to work on once that is completed. At the moment, the integration with spartan is done inside of supernova's PR #33, so this is the version of supernova that we need to use here. The integration is behind the
spartan
feature-flag. Working with the various private repos at the same time causes some headaches. In particular, the version of thecommitted-relaxed-spartan
repo used here needs to match the version used in supernova. We don't yet have the ssh keys for the spartan repo saved in the secret store here, which means that for this to build, we need to point the Cargo.toml here to rev92e884c
of supernova rather than the head of thedorebell-spartan-integration
branch. Once the repos (and the integration pr) are merged, we won't need to worry about this anymore. However, it should be safe to work on this issue locally before we finish merging if you can get it to build.The text was updated successfully, but these errors were encountered: