barretenberg
barretenberg copied to clipboard
Finalize replacement of old ClientIvc with new version
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.