privacy-scaling-explorations / sonobe

Experimental folding schemes library
https://privacy-scaling-explorations.github.io/sonobe-docs/
MIT License
205 stars 54 forks source link

Implement CycleFold in Nova's IVC #45

Closed arnaucube closed 11 months ago

arnaucube commented 11 months ago

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.