-
Notifications
You must be signed in to change notification settings - Fork 51
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
Protogalaxy based IVC #123
Protogalaxy based IVC #123
Conversation
7e7dba9
to
bb75a1f
Compare
08d92cd
to
21fd21e
Compare
@winderica is this indeed ready for review? If so, i'll go for it! |
@CPerezz Yes it is! Let's go ahead 😄 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great!! Sorry for the delay in the review, lately I've been a bit time-constrained and wanted to devote enough time to this PR since this is a big PR.
Nice implementation, also nice updates to the arith package make a lot of sense, also the differentiation between the running and incoming instances in ProtoGalaxy.
Left a question about the CycleFold instances logic which I'm not sure on, but very great work overall!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm a bit confused with the list of things that are pub
and exposed.
I think we should expose only ProtoGalaxy
and the minimal associated stuff to it.
Otherwise, it would be complex for the user to know what to use.
For the rest, AWESOME WORK!!! 👏
Hey, sorry for being inactive for a while, and thanks for the detailed comments @CPerezz! |
@winderica take all the time you need. I can try to keep rebasing your branch such taht you don't have a ton of work in the future. |
21fd21e
to
3191a92
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Very nice work, also the several abstractions and generalizations added make a lot of sense and are great improvements! Great work!
(there are some git-conflicts due recent updates in the main branch, but once they're fixed from my side we're good to merge ^^)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Awesome work!
These values will be used as hints to the augmented circuit
4ab5ac0
to
9c7e258
Compare
1322767
Depends on #120.
This is an implementation of the IVC scheme based on Protogalaxy, which is compiled from Protogalaxy "the folding scheme" by leveraging CycleFold.
Specifically, this PR implements:
AugmentedFCircuit
built uponAugmentationGadget::prepare_and_fold_{primary, cyclefold}
.ProtoGalaxy
struct that satisfies theFoldingScheme
trait.prove_step
method, for off-loading EC operations to the secondary curve.RelaxedR1CS
trait converted from the originalRelaxedR1CS
struct, which can now check satisfiability of witness-instance pairs for both Nova and ProtoGalaxy.Note that there are still two features missing in ProtoGalaxy-based IVC, but I will try to implement them in the incoming PRs.
This PR wouldn't be possible without the current Nova-based IVC. Thanks a lot for the amazing work from all of you 😇!