Skip to content

feat: Delayed merge implementation#22775

Open
federicobarbacovi wants to merge 42 commits intomerge-train/barretenbergfrom
fb/delayed_merge_impl
Open

feat: Delayed merge implementation#22775
federicobarbacovi wants to merge 42 commits intomerge-train/barretenbergfrom
fb/delayed_merge_impl

Conversation

@federicobarbacovi
Copy link
Copy Markdown
Contributor

.

federicobarbacovi and others added 7 commits April 27, 2026 09:10
Comment thread barretenberg/cpp/src/barretenberg/chonk/chonk.cpp Outdated
Comment thread barretenberg/cpp/src/barretenberg/chonk/chonk.cpp Outdated
@federicobarbacovi federicobarbacovi added ci-full Run all master checks. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure labels Apr 28, 2026
@federicobarbacovi federicobarbacovi marked this pull request as ready for review April 28, 2026 13:38
@ledwards2225 ledwards2225 self-requested a review April 28, 2026 17:01
Copy link
Copy Markdown
Contributor

@ledwards2225 ledwards2225 left a comment

Choose a reason for hiding this comment

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

Looks good! Basically reviewed everything but want to spend a bit more time tomorrow. Submitting this now so you can see some of my comments. Mostly minor suggestions

Comment thread barretenberg/cpp/src/barretenberg/chonk/chonk.cpp Outdated
update_native_verifier_accumulator(queue_entry, verifier_transcript);
#endif
goblin.prove_merge(prover_accumulation_transcript);
// Delayed merge: keep one subtable per folded circuit and prove the batched merge after the tail kernel.
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.

Can't comment on unchanged lines so this is intended for the code above: it seems like HN_TAIL is no longer needed since AFAIK the only reason for it to exist was to add the blinding that's now handled by the batched merge

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This is correct, agreed to tackle this in a follow up as it touches Noir as well

Comment thread barretenberg/cpp/src/barretenberg/goblin/goblin.hpp Outdated
Comment thread barretenberg/cpp/src/barretenberg/goblin/goblin.cpp Outdated
Comment thread barretenberg/cpp/src/barretenberg/chonk/chonk.cpp Outdated
Comment thread barretenberg/cpp/src/barretenberg/commitment_schemes/shplonk/shplonk.hpp Outdated
* @brief Create a mock batch merge proof which has the correct structure but is not necessarily valid
*
*/
bb::HonkProof create_mock_batch_merge_proof(bool is_zk = true);
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.

It seems this is_zk param is always true. Are you just maintaining it based on the idea of doing goblin resets or something where we'd prefer not to use ZK?

Comment thread barretenberg/cpp/src/barretenberg/stdlib/primitives/field/field.cpp
Comment thread barretenberg/cpp/src/barretenberg/goblin/batch_merge_prover.cpp Outdated
Comment thread barretenberg/cpp/src/barretenberg/goblin/batch_merge_prover.cpp Outdated
federicobarbacovi and others added 10 commits April 29, 2026 12:32
…e in batch verifier

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
@ledwards2225 ledwards2225 self-requested a review April 29, 2026 18:41
Copy link
Copy Markdown
Contributor

@ledwards2225 ledwards2225 left a comment

Choose a reason for hiding this comment

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

LGTM. Did another pass though everything, added some tests and tweaked some out of date comments. Fixed what I think was a bug where we were adding the same random ops 3 times instead of generating them uniquely. Overall quite happy with how simple the changes are here. I'll leave it to you to decide if there's more testing/tweaking/assessing you want to do.

BB_ASSERT_EQ(current_stdlib_verifier_accumulator.has_value(), false);

// Perform batch merge verification
auto [batch_pairing_points, batch_merged_table_commitments] =
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.

nice! the changes in this file are so clean now

@federicobarbacovi federicobarbacovi self-assigned this May 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-full Run all master checks. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants