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

feat: Make commitment key generation configurable with an optional parameter #5

Merged
merged 2 commits into from
Aug 19, 2023

Conversation

huitseeker
Copy link
Member

@huitseeker huitseeker commented Aug 19, 2023

This reduces the size of public parameters by ~2 when a "classic" SNARK is used.
This is a port of microsoft/Nova#203

…rameter

- Implemented the `Len` trait within `CommitmentKey` to allow length quantification in terms of group generators. Made ppSnark fail setup if given commitment key with insufficient length,
  as measured by its own commitment_key_floor() (see below)
- Made RelaxedR1CSTrait include a fn commitment_key_floor() -> Box<dyn for<'a> Fn(&'a R1CSShape<G>) -> usize> with default implementation to quantify the Snark's commitment key size requirements
  in the shape of a closure,
- Made PublicParameters accept optional Box<dyn for<'a> Fn(&'a R1CSShape<G>) -> usize> parameters for each circuit's group, to parametrize the CommitmentKey creation.

Implementation details:
- defined type alias CommitmentKeyHint<G> = Box<dyn Fn(&R1CSShape<G>) -> usize>;
- Modified numerous function calls and parameter setups to include optional parameter `CommitmentKeyHint` that gives a more flexible commitment key generation.
- Added the `CommitmentKeyHint` to the `r1cs` import list and expanded `NovaShape` trait to optionally accept it.
@huitseeker huitseeker added this pull request to the merge queue Aug 19, 2023
Merged via the queue into dev with commit 46b0ba9 Aug 19, 2023
2 checks passed
@huitseeker huitseeker deleted the config_ck_lengths-arecibo branch August 19, 2023 18:44
huitseeker added a commit to huitseeker/lurk-rs that referenced this pull request Aug 19, 2023
- Updated code comments in `src/proof/nova.rs` to clearly state that `SS1<F>` and `SS2<F>` do not utilize computational commitments
- Enhanced `public_params` function with two new parameters: `commitment_size_hint1` and `commitment_size_hint2`, aligning the setup of `nova::PublicParams` with argumentcomputer/arecibo#5
huitseeker added a commit to huitseeker/lurk-rs that referenced this pull request Aug 19, 2023
- Updated code comments in `src/proof/nova.rs` to clearly state that `SS1<F>` and `SS2<F>` do not utilize computational commitments
- Enhanced `public_params` function with two new parameters: `commitment_size_hint1` and `commitment_size_hint2`, aligning the setup of `nova::PublicParams` with argumentcomputer/arecibo#5
github-merge-queue bot pushed a commit to argumentcomputer/lurk-beta that referenced this pull request Aug 19, 2023
- Updated code comments in `src/proof/nova.rs` to clearly state that `SS1<F>` and `SS2<F>` do not utilize computational commitments
- Enhanced `public_params` function with two new parameters: `commitment_size_hint1` and `commitment_size_hint2`, aligning the setup of `nova::PublicParams` with argumentcomputer/arecibo#5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants