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

feat(ivc): impl cyclefold::step_folding_circuit #369

Open
cyphersnake opened this issue Oct 21, 2024 · 0 comments
Open

feat(ivc): impl cyclefold::step_folding_circuit #369

cyphersnake opened this issue Oct 21, 2024 · 0 comments
Assignees
Milestone

Comments

@cyphersnake
Copy link
Collaborator

This task integrates all previously implemented parts (e.g., SPS verification and delegated verification) into one cohesive circuit, completing the core logic for StepFoldingCircuit.

Integrates #367 and #368 into one folding circuit.

@cyphersnake cyphersnake added this to the CycleFold milestone Oct 21, 2024
@cyphersnake cyphersnake self-assigned this Oct 21, 2024
@cyphersnake cyphersnake changed the title feat(ivc): implement cyclefold::step_folding_circuit feat(ivc): impl cyclefold::step_folding_circuit Oct 21, 2024
cyphersnake added a commit that referenced this issue Nov 21, 2024
**Motivation**
Part of #369

**Overview**
This PR is intended to demonstrate the `Input` design for `cyclefold::StepFoldingCircuit`

Note what types are used, what curves are presented and how this data is
assumed to be reported inside the circuit
cyphersnake added a commit that referenced this issue Nov 26, 2024
**Motivation**
Part of #369

**Overview**
This PR is intended to demonstrate the `Input` design for `cyclefold::StepFoldingCircuit`

Note what types are used, what curves are presented and how this data is
assumed to be reported inside the circuit
cyphersnake added a commit that referenced this issue Nov 28, 2024
**Motivation**
Within #369 and cyclfold in general we need to count consistency markers, for this we need to be able to absorb sfc::input

**Overview**
Just implementation of `AbsorbInRO` trait for all sfc::input types
cyphersnake added a commit that referenced this issue Nov 28, 2024
**Motivaion**
As part of #369 we need impl assigned version of input. Also we have to make sure that {on,off}-circuit assigned works the same way to match the consistency marker

**Overview**
WIP
cyphersnake added a commit that referenced this issue Nov 28, 2024
**Motivaion**
As part of #369 we need impl assigned version of input. Also we have to make sure that {on,off}-circuit assigned works the same way to match the consistency marker

**Overview**
WIP
cyphersnake added a commit that referenced this issue Nov 28, 2024
**Motivaion**
As part of #369 we need impl assigned version of input. Also we have to make sure that {on,off}-circuit assigned works the same way to match the consistency marker

**Overview**
Implemented versions of Input structures. A test to check the consistency of the {on,off}-circuit hash has been implemented. Also this test allows to double-check correctness of assignment
cyphersnake added a commit that referenced this issue Nov 29, 2024
**Motivation**
We need consistent types for #369 between nifs <-> ivc protogalaxy modules

**Overview**
I had to make many types independent of the curve. Since for the random oracle logic we are byte-by-by-byte distilling from all fields to the target field anyway, I got rid of Scalar -> Base in favor of any field.

So now it can be both C::Base (for sangria) and C::Scalar (for cyclefold)
cyphersnake added a commit that referenced this issue Nov 29, 2024
**Motivation**
We need consistent types for #369 between nifs <-> ivc protogalaxy modules

**Overview**
I had to make many types independent of the curve. Since for the random oracle logic we are byte-by-by-byte distilling from all fields to the target field anyway, I got rid of Scalar -> Base in favor of any field.

So now it can be both C::Base (for sangria) and C::Scalar (for cyclefold)

There are no other functional changes, only generic refactoring
cyphersnake added a commit that referenced this issue Nov 29, 2024
**Motvation**
As part of the sfc implementation (#369), we call `protogalaxy::verify_chip` for its own trace, among other things

**Overview**
Since ivc::protogalaxy & ivc::cyclefold are independent types, we have
structures that are independent of each other, yet similar one to one.
We need to cast them to an equivalent form (`BigUintPoint`)

- [ ] WIP: W_commitment to BigUintPoint in both structure
cyphersnake added a commit that referenced this issue Dec 2, 2024
**Motivation**
During the implementation of #369, the types for protogalaxy & cyclefold differed in form but not in substance

**Overview**
Simple refactoring with removing identical structures and using in ivc::cyclefold types from ivc::protogalaxy
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
During the implementation of #369, the types for protogalaxy & cyclefold differed in form but not in substance

**Overview**
Simple refactoring with removing identical structures and using in ivc::cyclefold types from ivc::protogalaxy
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
In ramkaz #369 we have to minimize the paired circuit with sangria

**Overview**
I've reused almost all fold-fn (except `instance`) from the existing sangria implementation
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
In #369 we have to minimize the paired circuit with sangria

**Overview**
I've reused almost all fold-fn (except `instance`) from the existing sangria implementation
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
During the implementation of #369, the types for protogalaxy & cyclefold differed in form but not in substance

**Overview**
Simple refactoring with removing identical structures and using in ivc::cyclefold types from ivc::protogalaxy
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
In #369 we have to minimize the paired circuit with sangria

**Overview**
I've reused almost all fold-fn (except `instance`) from the existing sangria implementation
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
Part of #369

**Overview**
This PR is intended to demonstrate the `Input` design for `cyclefold::StepFoldingCircuit`

Note what types are used, what curves are presented and how this data is
assumed to be reported inside the circuit
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
Within #369 and cyclfold in general we need to count consistency markers, for this we need to be able to absorb sfc::input

**Overview**
Just implementation of `AbsorbInRO` trait for all sfc::input types
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
Part of #369

**Overview**
This PR is intended to demonstrate the `Input` design for `cyclefold::StepFoldingCircuit`

Note what types are used, what curves are presented and how this data is
assumed to be reported inside the circuit
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
Within #369 and cyclfold in general we need to count consistency markers, for this we need to be able to absorb sfc::input

**Overview**
Just implementation of `AbsorbInRO` trait for all sfc::input types
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivaion**
As part of #369 we need impl assigned version of input. Also we have to make sure that {on,off}-circuit assigned works the same way to match the consistency marker

**Overview**
Implemented versions of Input structures. A test to check the consistency of the {on,off}-circuit hash has been implemented. Also this test allows to double-check correctness of assignment
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
We need consistent types for #369 between nifs <-> ivc protogalaxy modules

**Overview**
I had to make many types independent of the curve. Since for the random oracle logic we are byte-by-by-byte distilling from all fields to the target field anyway, I got rid of Scalar -> Base in favor of any field.

So now it can be both C::Base (for sangria) and C::Scalar (for cyclefold)

There are no other functional changes, only generic refactoring
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motvation**
As part of the sfc implementation (#369), we call `protogalaxy::verify_chip` for its own trace, among other things

**Overview**
Since ivc::protogalaxy & ivc::cyclefold are independent types, we have
structures that are independent of each other, yet similar one to one.
We need to cast them to an equivalent form (`BigUintPoint`)

- [ ] WIP: W_commitment to BigUintPoint in both structure
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
During the implementation of #369, the types for protogalaxy & cyclefold differed in form but not in substance

**Overview**
Simple refactoring with removing identical structures and using in ivc::cyclefold types from ivc::protogalaxy
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
During the implementation of #369, the types for protogalaxy & cyclefold differed in form but not in substance

**Overview**
Simple refactoring with removing identical structures and using in ivc::cyclefold types from ivc::protogalaxy
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
In #369 we have to minimize the paired circuit with sangria

**Overview**
I've reused almost all fold-fn (except `instance`) from the existing sangria implementation
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
We need to have consistency checks between steps for sfc under #369

**Overview**
The input is checked via access to `self_trace.incoming`
The output is checked via constraint system at the current step

Only tests for sfc left in #369
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
As part of impl of sfc (#369) we delegate ecc_scalar_mul computing to a suppport circuit. Within primary sfc we must validate the input and reuse the output to deduce the W_commitment protogalaxy of the accumulator

**Overview**
I use the lagrange coefficients that we have already evaluated inside `protogalaxy::verify`.
cyphersnake added a commit that referenced this issue Dec 3, 2024
**Motivation**
As part of impl of sfc (#369) we delegate ecc_scalar_mul computing to a suppport circuit. Within primary sfc we must validate the input and reuse the output to deduce the W_commitment protogalaxy of the accumulator

**Overview**
I use the lagrange coefficients that we have already evaluated inside `protogalaxy::verify`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant