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

Report full R1CS size as part of circuit info #224

Open
adr1anh opened this issue Jan 2, 2024 · 0 comments
Open

Report full R1CS size as part of circuit info #224

adr1anh opened this issue Jan 2, 2024 · 0 comments
Labels
enhancement New feature or request

Comments

@adr1anh
Copy link
Contributor

adr1anh commented Jan 2, 2024

The preprocessing SNARK's run-time is determined by

$$ N = \max{ \text{constraints}, 2\cdot \text{variables}, |A| + |B| + |C| } $$

#variables
Size of the MSM required to compute the witness of a synthesized circuit

#constraints
Size of the $T$ vector that is committed to during the folding step.

|A| + |B| + |C|
Complexity of creating a compressed SNARK for the circuit, and the corresponding proving/verifying key.

These three quantities are the main parameters which affect performance. While we are pretty good about reporting the two first ones, the last one will be important when working with CycleFold and recursive verification. In particular, the number of coefficients of the R1CS matrices will usually be higher than the other two quantities.

As a priority, we should report these figures for:

  • Native scalar multiplication
    For both 128 and 256 bit exponents
  • Native group mul-add
    Used for the main CycleFold non-native group operation
  • Non-native field mul-add with 128-bit
    Used for the random-linear combination of the public inputs $X$ during the folding over the BN circuit, as well as the SNARK-based PCS for avoiding IPA.
@adr1anh adr1anh added the enhancement New feature or request label Jan 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant