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

Implement StepCircuitExt trait methods #32

Closed
cyphersnake opened this issue Oct 23, 2023 · 1 comment · Fixed by #61
Closed

Implement StepCircuitExt trait methods #32

cyphersnake opened this issue Oct 23, 2023 · 1 comment · Fixed by #61
Milestone

Comments

@cyphersnake
Copy link
Collaborator

cyphersnake added a commit that referenced this issue Oct 23, 2023
cyphersnake added a commit that referenced this issue Oct 23, 2023
cyphersnake added a commit that referenced this issue Oct 25, 2023
cyphersnake added a commit that referenced this issue Dec 13, 2023
chaosma pushed a commit that referenced this issue Dec 14, 2023
cyphersnake added a commit that referenced this issue Jan 17, 2024
# Enhancements to IVC and ECC in Incrementally Verifiable Computation

This PR introduces significant improvements to the IVC algorithm, focusing on the implementation of conditional selection between base and non-base cases, and refining the ECC component. 

Here's a breakdown of the changes:

## What has been done?
### Implementation of Selection Between Base and Non-Base Cases (IVC):

A new feature is introduced to handle the selection between base and non-base cases in the IVC process. At step zero our task is simply to generate a relaxed plonk instance, and at any other step to commit folding. But we are running on-circuit, so we perform both of these actions each time, and then choose one of the options depending on the step.

### Implement `synthesize_step_base_case` for step circuit module

Implemented a method to synthesize steps specifically for the base case of IVC. That is, make a call to the key folding-chip inside the `StepCircutiExt` abstraction. This is a preparation for synthesizing the step circuit itself

### New Method for On-Circuit Conditional Selection (IVC and ECC)

- Developed a new method, `AssignedRelaxed::conditional_select`, for on-circuit conditional selection between the base and non-base cases. This method plays a key role in choosing the correct assigned relaxed Plonk instance based on the step in IVC

- Enhanced the ECC component with the implementation of `conditional_select`. This auxiliary function is simplify on-circuit conditional selection of curve point.

Part of #32
cyphersnake added a commit that referenced this issue Jan 17, 2024
This PR implements input data preparation and the
`StepCircuit::synthetize_step` call

For a complete implementation of `StepCircuitExt` all that is left is to
call RandomOracle at the end on all data and pass on assigned values as
result of `StepCircuitExt::synthesize`

Part of #32
@cyphersnake cyphersnake reopened this Jan 17, 2024
@cyphersnake
Copy link
Collaborator Author

Was closed by mistake, almost finished now by #113.
Documentation remains

cyphersnake added a commit that referenced this issue Jan 19, 2024
- feat(ivc): finalize `StepCircuitExt::synthesize`
- feat(mg): impl `WrapValue::from_assigned_point`
- feat(ivc): `AssignedRelaxedPlonkInstance::absorb_into`
- feat(ivc): add assigned input witness into folding result

Finalized 'StepCircuitExt', the result now includes all the context
needed for subsequent IVC work.

Part of #32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant