`IVC` struct
Check IVC first
Example
Create IVC
Public Params
Please check `PublicParams` Struct
Primary & Secondary Circuit
IVC uses two step-circuits. Each of them is wrapped inside into a regular `StepFoldingCircuit' and in addition to the step-circuit synthesis logic, the folding of the paired circuit is verified (secondary verifies the folding of primary and vice versa).
Therefore, the second circuit can always be a sirius::step_circuit::trivial::Circuit
and have no payload whatsoever.
`z_in` & `z_out`
Each step-circuit has an input and an output at each step. Only the first input is specified in IVC::new
, the others are chained z_out
of step n
is transmitted as z_in
on step n+1
Debug Mode
In order to get a detailed error, you can enable debug_mode
, then at each fold_step
the MockProver
from the halo2 library will be enabled and check your circuit. Otherwise, any error will only occur at the verify
step.
Fold Step IVC
Each folding step synthesizes primary & secondary circuits and performs off-circuit calculations to fold the plonk structure & witness. The developer's task here, between steps, is to modify the circuits (over which he retains ownership), also keeping in mind the z_in
& z_out
continuity.
Verify
This step verifies that the constraint system is correct. If you started IVC not in debug_mode
mode, in this case, only at the moment of verify
call it is possible to detect violations of the constraint system at any of the steps.
Last updated