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

Finalize replacement of old ClientIvc with new version #1101

Closed
ledwards2225 opened this issue Sep 12, 2024 · 0 comments · Fixed by AztecProtocol/aztec-packages#10599
Closed
Assignees

Comments

@ledwards2225
Copy link
Collaborator

ledwards2225 commented Sep 12, 2024

The original version of ClientIvc automatically appended recursive verifiers to each circuit. This was simple but did not allow the proof/vkey witnesses used in noir to be properly connected to those involved in the kernel completion logic in the backend. The new paradigm splits kernel completion (recursive verification, databus consistency checks) and 'accumulation' (folding, merge proving) into two separate components. The kernel completion logic will only be triggered in practice by the presence of verify_proof() calls in the noir kernel circuits.

Since these calls are not currently present in the noir kernel programs, the IVC scheme has been temporarily equipped with an auto_verify_mode which automatically executes the kernel completion logic on every second circuit (i.e. those assumed to be kernels). This allows for thorough testing of the IVC logic until the verify_proof() calls can be added back to the kernels.

Completing the integration of the new IVC scheme involves (at minimum):

  • adding appropriate verify_proof() calls to noir kernel circuits
  • logic for constructing dummy oink/PG proofs for use in the verify_proof() calls
  • logic for constructing valid VKs based on the IVC logic
  • ensuring that the PG recursive verifier is independent of proof size (similar to Honk rec verifier)

It's likely that the typescript ivc_integration_tests are the best place to begin testing the complete integration.

@ledwards2225 ledwards2225 self-assigned this Sep 12, 2024
AztecBot pushed a commit that referenced this issue Dec 13, 2024
Removes auto verify mode from `ClientIVC`. Auto verify mode was a
temporary feature designed to append kernel logic (recursive
verifications etc.) to kernel circuits generated from noir kernel
programs before the `verify_proof()` calls were integrated into those
programs. Now that these calls are present in the kernels (mock and
genuine), the kernel logic is automatically constructed via
ivc_recursion_constraints via the normal `create_circuit()` pathway. If
in the future there is need for a backend which automatically appends
recursive verification logic, it should be implemented in an entirely
separate class.

Note: This change means we can no longer generate an IVC proof from the
noir `fold_*` programs since they do not contain explicit recursive
verifiers. All such tests/flows have been removed.

Closes #1116 (remove
manual setting of is_kernel)
Closes #1101 (remove
auto-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

Successfully merging a pull request may close this issue.

1 participant