Improve the design of circuit, config, and instances for CycleFold #158
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.
This PR aims to refactor the existing code related to CycleFold and improve the design. Specifically:
This is achieved by modifying the CycleFold circuit to iteratively compute
Thus, for HyperNova we simply need to specify
Also, for ProtoGalaxy we have
(Note that I failed to run the full test i.e. without the
light-test
flag for ProtoGalaxy's decider on my machine with 64GB of RAM because the CycleFold circuit now does more computation and has more constraints, thus blowing up the size of decider circuit. Hopefully this could be resolved by addressing Support Pedersen commitment in decider #171)cf_u.x
into a separate function. Before this PR,cf_u.x
is manually constructed by concatenating randomness and points in all augmented circuits of Nova, HyperNova, and ProtoGalaxy, as observed in Protogalaxy based IVC #123 (comment).CycleFoldAugmentationGadget
which simplifies both the native and the in-circuit folding of CycleFold instances.pp_hash
when initializing the transcript / sponge, so that we no longer need to absorb it in subsequent operations.