Skip to content

chore: kernels start with eq and reset#15734

Merged
maramihali merged 49 commits into
merge-train/barretenbergfrom
mm/kernels-start-with-reset
Jul 18, 2025
Merged

chore: kernels start with eq and reset#15734
maramihali merged 49 commits into
merge-train/barretenbergfrom
mm/kernels-start-with-reset

Conversation

@maramihali

@maramihali maramihali commented Jul 15, 2025

Copy link
Copy Markdown

As a measure of precaution in case of misconfigured ecc ops in an app circuit that might attempt, for example, to link ecc ops between apps and kernels, the subtable of ecc ops in each kernel circuit will start with an eq and reset op. This cannot happen when the API for creating ecc ops is used properly as the logic in goblin_element ensures an eq and reset op is present at the end of each batch_mul, function also used for operator+ and operator-. Moreover, the add_gates_to_ensure_nonzero_polynomials makes sure that an eq and reset exists if no other ecc ops are encountered in the circuit.

AztecBot and others added 11 commits July 15, 2025 05:42
We modify the Merge protocol so that it enforces that the subtable
polynomial `t_j` has degree smaller than `subtable_size` as read from
the proof.

Closes AztecProtocol/barretenberg#1442

**Details**

As per the linked issue, we want to support ecc operations in app
circuits. To ensure that app ecc ops do not modify ecc ops that happened
before them, we need to ensure that the subtable length `t.size()` is
smaller than the constant `l` by which we right shift `T_prev`. This is
to ensure that `t + X^{l-1} T_prev` is indeed the polynomial
corresponding to the column `t || T_prev`.

We enforce this degree check in the merge protocol by requiring the
prover to commit to `g(X) := X^{l-1} t(1/X)` and provide openings `c`,
`d` of `t`, `g` at challenges `1/kappa`, `kappa`, respectively, for
which we check `c * kappa^{l-1} = d`.

To save on the number of MSMs performed, we use Shplonk to verify the
following claims:
- `t(X)` opens to `c` at `1/kappa`
- `p(X) = t(X) + X^{l-1} T_prev(X) - T(X)` opens to `0` at `kappa`
- `g(X) := X^{l-1} t(1/X)` opens to `d` at `kappa`

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Co-authored-by: sergei iakovenko <105737703+iakovenkos@users.noreply.github.com>
Co-authored-by: ludamad <adam.domurad@gmail.com>
Co-authored-by: Suyash Bagad <suyash@aztecprotocol.com>
Co-authored-by: Jonathan Hao <jonathan@aztec-labs.com>
Co-authored-by: ledwards2225 <98505400+ledwards2225@users.noreply.github.com>
Co-authored-by: Raju Krishnamoorthy <krishnamoorthy@gmail.com>
Co-authored-by: notnotraju <raju@aztec-labs.com>
Co-authored-by: Lucas Xia <lucasxia01@gmail.com>
Co-authored-by: Khashayar Barooti <khashayar@aztecprotocol.com>
Co-authored-by: Jean M <132435771+jeanmon@users.noreply.github.com>
Co-authored-by: Alex Gherghisan <alexghr@users.noreply.github.com>
Co-authored-by: Santiago Palladino <spalladino@users.noreply.github.com>
Co-authored-by: Santiago Palladino <santiago@aztec-labs.com>
Co-authored-by: ludamad <domuradical@gmail.com>
Co-authored-by: maramihali <mara@aztecprotocol.com>
Restore accidentally deleted files in a previous PR.
#15562
In my [previous
PR](#15427), I moved
the `GateSeparatorPolynomial` into the SumcheckProver class as a member,
which extended its lifetime and increased memory usage in CIVC by the
size of this polynomial, e.g. by 21 MB in
`ecdsar1+transfer_0_recursions+sponsored_fpc` bench
This makes `SharedShiftedVirtualZeroesArray` holds an abstract
BackingMemory. When `BB_SLOW_LOW_MEMORY=1` or when the
`--slow_low_memory` runtime flag is enabled, `BackingMemory` will be
`FileBackedMemory`. The memory is `mmap`ed to physical files so in
memory-constrained environment, it won't be OOM. Otherwise,
`BackingMemory` is `AlignedMemory` and the behavior is unchanged.

See AztecProtocol/barretenberg#1456 for more
contexts.
@maramihali maramihali self-assigned this Jul 15, 2025
@fcarreiro fcarreiro removed their request for review July 16, 2025 16:22

@ledwards2225 ledwards2225 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LG! Suggestion to ensure we aren't relying on setting is_kernel from within CIVC anymore, as discussed.

@@ -225,8 +224,6 @@ void ClientIVC::accumulate(ClientCircuit& circuit,
BB_ASSERT_LT(
num_circuits_accumulated, num_circuits, "ClientIVC: Attempting to accumulate more circuits than expected.");

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this was a closed so I removed it


public:
ClientCircuit create_next_circuit(ClientIVC& ivc, size_t log2_num_gates = 16, const size_t num_public_inputs = 0)
{

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this was actually a kinda bug cus create_mock_circuit was recreating the circuit

@maramihali maramihali added this pull request to the merge queue Jul 18, 2025
@maramihali maramihali removed this pull request from the merge queue due to a manual request Jul 18, 2025
@maramihali maramihali changed the base branch from next to merge-train/barretenberg July 18, 2025 09:52
@maramihali maramihali merged commit ae67a84 into merge-train/barretenberg Jul 18, 2025
3 checks passed
@maramihali maramihali deleted the mm/kernels-start-with-reset branch July 18, 2025 10:47
github-merge-queue Bot pushed a commit that referenced this pull request Jul 21, 2025
See
[merge-train-readme.md](https://github.com/AztecProtocol/aztec-packages/blob/next/.github/workflows/merge-train-readme.md).

BEGIN_COMMIT_OVERRIDE
chore!: Remove circuit_size from all VKs (#15747)
chore: Introduce data structures to hold inputs/outputs of the Merge
verification (#15735)
chore: replace asserts with runtime errors. (#15671)
chore: kernels start with eq and reset (#15734)
chore: Introduce Native IO mechanism (#15820)
fix: Update Cargo.lock in avm-transpiler (#15837)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Co-authored-by: ledwards2225 <98505400+ledwards2225@users.noreply.github.com>
Co-authored-by: federicobarbacovi <171914500+federicobarbacovi@users.noreply.github.com>
Co-authored-by: sergei iakovenko <105737703+iakovenkos@users.noreply.github.com>
Co-authored-by: ludamad <adam.domurad@gmail.com>
Co-authored-by: Suyash Bagad <suyash@aztecprotocol.com>
Co-authored-by: Jonathan Hao <jonathan@aztec-labs.com>
Co-authored-by: Raju Krishnamoorthy <krishnamoorthy@gmail.com>
Co-authored-by: notnotraju <raju@aztec-labs.com>
Co-authored-by: Lucas Xia <lucasxia01@gmail.com>
Co-authored-by: Khashayar Barooti <khashayar@aztecprotocol.com>
Co-authored-by: Jean M <132435771+jeanmon@users.noreply.github.com>
Co-authored-by: Alex Gherghisan <alexghr@users.noreply.github.com>
Co-authored-by: Santiago Palladino <spalladino@users.noreply.github.com>
Co-authored-by: Santiago Palladino <santiago@aztec-labs.com>
Co-authored-by: ludamad <domuradical@gmail.com>
Co-authored-by: maramihali <mara@aztecprotocol.com>
Co-authored-by: Sarkoxed <75146596+Sarkoxed@users.noreply.github.com>
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 this pull request may close these issues.

7 participants