Public Kernel Circuit - Initial
The public kernel circuits are being redesigned to accommodate the latest AVM designs. This page is therefore highly likely to change significantly.
Requirements
The initial public kernel iteration undergoes processes to prepare the necessary data for the executions of the public function calls.
Verification of the Previous Iteration
Verifying the previous kernel proof.
It verifies that the previous iteration was executed successfully with the given proof data, verification key, and public inputs, sourced from private_inputs
.previous_kernel
.
The preceding proof can only be:
Public Inputs Data Reset
Recalibrating counters.
While the counters outputted from the tail private kernel circuit preserve the correct ordering of the public_call_requests, they do not reflect the actual number of side effects each public call entails. This circuit allows the recalibration of counters for public_call_requests, ensuring subsequent public kernels can be executed with the correct counter range.
For each request at index i in the public_call_requests within public_inputs
..transient_accumulated_data
:
- Its hash must match the corresponding item in the public_call_requests within the previous kernel's public inputs:
request.hash == private_inputs.previous_kernel_public_inputs.public_call_requests[i].hash
- Its
counter_end
must be greater than itscounter_start
. - Its
counter_start
must be greater than thecounter_end
of the item at indexi + 1
. - If it's the last item, its
counter_start
must be1
.
It's crucial for the
counter_start
of the last item to be1
, as it's assumed in the tail public kernel circuit that no storage writes have a counter1
.
Validating Public Inputs
Verifying the accumulated data.
It ensures that the accumulated_data
in the public_inputs
matches the accumulated_data
in private_inputs
.previous_kernel
.public_inputs
.
Verifying the transient accumulated data.
It ensures that all data in the transient_accumulated_data
within public_inputs
is empty, with the exception of the public_call_requests
.
The values in public_call_requests
are verified in a previous step.
Verifying the constant data.
This section follows the same process as outlined in the inner private kernel circuit.
PrivateInputs
PreviousKernel
The format aligns with the PreviousKernel` of the tail public kernel circuit.
PublicInputs
The format aligns with the PublicInputs
` of the tail public kernel circuit.