I'm sorry because it took me longer than I initially expected.
There is a missing check in the CycleFold circuit, which are the checks that x==[u_i, U_i, U_{i+1}]. This has some dependencies on arkworks which also affect the challenge computation which depends also on in-circuit point coordinates access. It has external dependencies, so opened issue #44 to track it, and started to contact arkworks people to advance on that.
When reviewing, the main files to focus on are: src/folding/nova/{ ivc, circuits, cyclefold }.rs.
Additionally there are some pending optimizations, opening the PR with a version that works so we can already integrate it and iterate it optimizing in future iterations.
This PR implements CycleFold (https://eprint.iacr.org/2023/1192) and integrates it in the Nova's IVC.
I'm sorry because it took me longer than I initially expected.
There is a missing check in the CycleFold circuit, which are the checks that
x==[u_i, U_i, U_{i+1}]
. This has some dependencies on arkworks which also affect the challenge computation which depends also on in-circuit point coordinates access. It has external dependencies, so opened issue #44 to track it, and started to contact arkworks people to advance on that.When reviewing, the main files to focus on are:
src/folding/nova/{ ivc, circuits, cyclefold }.rs
.Additionally there are some pending optimizations, opening the PR with a version that works so we can already integrate it and iterate it optimizing in future iterations.