From 28121dca7709795b7397038a68cf1cd6be6c18db Mon Sep 17 00:00:00 2001 From: iakovenkos Date: Wed, 18 Mar 2026 10:57:48 +0000 Subject: [PATCH 1/7] dead code in zk sumcheck data --- .../cpp/src/barretenberg/sumcheck/zk_sumcheck_data.hpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/zk_sumcheck_data.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/zk_sumcheck_data.hpp index 5a58a1794f40..339e16e5bd56 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/zk_sumcheck_data.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/zk_sumcheck_data.hpp @@ -295,9 +295,6 @@ template struct ZKSumcheckData { this->libra_univariates[round_idx].evaluate(round_challenge) / this->libra_scaling_factor; // place the evalution into the vector of Libra evaluations this->libra_evaluations.emplace_back(libra_evaluation); - for (auto univariate : this->libra_univariates) { - univariate *= FF(1) / this->libra_challenge; - } }; } }; From 7d0237c04b1b036eea1b76c3971da6ae5bdf336d Mon Sep 17 00:00:00 2001 From: iakovenkos Date: Wed, 18 Mar 2026 11:05:15 +0000 Subject: [PATCH 2/7] fix 245 --- .../barretenberg/commitment_schemes/gemini/gemini.hpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini.hpp b/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini.hpp index 7756469a1a96..05c14079c0f0 100644 --- a/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini.hpp +++ b/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini.hpp @@ -250,14 +250,12 @@ template class GeminiProver_ { Fr r_inv = r_challenge.invert(); if (has_to_be_shifted_by_one()) { - batched_to_be_shifted_by_one *= r_inv; - A_0_pos += batched_to_be_shifted_by_one; - A_0_neg -= batched_to_be_shifted_by_one; + A_0_pos.add_scaled(batched_to_be_shifted_by_one, r_inv); + A_0_neg.add_scaled(batched_to_be_shifted_by_one, -r_inv); } if (!batched_shifted_tail_.is_empty()) { - batched_shifted_tail_ *= r_inv; - A_0_pos += batched_shifted_tail_; - A_0_neg -= batched_shifted_tail_; + A_0_pos.add_scaled(batched_shifted_tail_, r_inv); + A_0_neg.add_scaled(batched_shifted_tail_, -r_inv); } return { A_0_pos, A_0_neg }; From b655e3d5ceda88c13484ea1c60f75ac5400bfc44 Mon Sep 17 00:00:00 2001 From: iakovenkos Date: Wed, 18 Mar 2026 11:09:02 +0000 Subject: [PATCH 3/7] fix 290 --- .../barretenberg/commitment_schemes/gemini/gemini_impl.hpp | 1 + .../cpp/src/barretenberg/commitment_schemes/ipa/ipa.hpp | 4 ++-- .../barretenberg/commitment_schemes/shplonk/shplemini.hpp | 5 ++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini_impl.hpp b/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini_impl.hpp index 9408f4aad72b..530e0a834470 100644 --- a/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini_impl.hpp @@ -111,6 +111,7 @@ std::vector::Polynomial> GeminiProver_::com const size_t log_n, std::span multilinear_challenge, const Polynomial& A_0, const bool& has_zk) { BB_BENCH_NAME("Gemini::compute_fold_polynomials"); + BB_ASSERT_GTE(log_n, 2, "Gemini folding requires at least 4-element polynomials"); const size_t virtual_log_n = multilinear_challenge.size(); // Cost per iteration: 1 subtraction + 1 multiplication + 1 addition diff --git a/barretenberg/cpp/src/barretenberg/commitment_schemes/ipa/ipa.hpp b/barretenberg/cpp/src/barretenberg/commitment_schemes/ipa/ipa.hpp index fe3b14da652d..8031d331d1ba 100644 --- a/barretenberg/cpp/src/barretenberg/commitment_schemes/ipa/ipa.hpp +++ b/barretenberg/cpp/src/barretenberg/commitment_schemes/ipa/ipa.hpp @@ -575,14 +575,14 @@ template class IPA // Step 6. // Receive a_zero from the prover - const auto a_zero = transcript->template receive_from_prover("IPA:a_0"); + auto a_zero = transcript->template receive_from_prover("IPA:a_0"); // OriginTag false positive: G_zero and a_zero are fully determined once all round challenges are fixed - the // prover must send the correct values or the final relation check fails. if constexpr (Curve::is_stdlib_type) { const auto last_round_tag = round_challenges.back().get_origin_tag(); G_zero.set_origin_tag(last_round_tag); - const_cast(a_zero).set_origin_tag(last_round_tag); + a_zero.set_origin_tag(last_round_tag); } // Step 7. diff --git a/barretenberg/cpp/src/barretenberg/commitment_schemes/shplonk/shplemini.hpp b/barretenberg/cpp/src/barretenberg/commitment_schemes/shplonk/shplemini.hpp index 7cc449d2f335..59ed3a9afaf3 100644 --- a/barretenberg/cpp/src/barretenberg/commitment_schemes/shplonk/shplemini.hpp +++ b/barretenberg/cpp/src/barretenberg/commitment_schemes/shplonk/shplemini.hpp @@ -242,8 +242,7 @@ template class ShpleminiVerifier_ { const Fr gemini_evaluation_challenge = transcript->template get_challenge("Gemini:r"); // - Get negative fold evaluations (A₀(−r), A₁(−r²), ... , Aₙ₋₁(−r²⁽ⁿ⁻¹⁾)) - const std::vector gemini_fold_neg_evaluations = - GeminiVerifier::get_gemini_evaluations(virtual_log_n, transcript); + std::vector gemini_fold_neg_evaluations = GeminiVerifier::get_gemini_evaluations(virtual_log_n, transcript); // - Compute vector (r, r², ... , r^{2^{d-1}}), where d = log_n const std::vector gemini_eval_challenge_powers = @@ -290,7 +289,7 @@ template class ShpleminiVerifier_ { if constexpr (Curve::is_stdlib_type) { const auto challenge_tag = shplonk_evaluation_challenge.get_origin_tag(); // Tag the Gemini fold evaluations - for (auto& eval : const_cast&>(gemini_fold_neg_evaluations)) { + for (auto& eval : gemini_fold_neg_evaluations) { eval.set_origin_tag(challenge_tag); } } From 1ed24949eff9169aaafcabc2a95daed134b9aee4 Mon Sep 17 00:00:00 2001 From: iakovenkos Date: Wed, 18 Mar 2026 11:11:50 +0000 Subject: [PATCH 4/7] fix 243 --- .../src/barretenberg/commitment_schemes/gemini/gemini.hpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini.hpp b/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini.hpp index 05c14079c0f0..2b442e82e31f 100644 --- a/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini.hpp +++ b/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini.hpp @@ -75,9 +75,12 @@ namespace gemini { */ template inline std::vector powers_of_rho(const Fr& rho, const size_t num_powers) { - std::vector rhos = { Fr(1), rho }; + std::vector rhos; rhos.reserve(num_powers); - for (size_t j = 2; j < num_powers; j++) { + if (num_powers >= 1) { + rhos.emplace_back(Fr(1)); + } + for (size_t j = 1; j < num_powers; j++) { rhos.emplace_back(rhos[j - 1] * rho); } return rhos; From 61d8fc416792f2dc3ea51eb7a81236c9ab87db04 Mon Sep 17 00:00:00 2001 From: iakovenkos Date: Wed, 18 Mar 2026 11:13:13 +0000 Subject: [PATCH 5/7] fix 252 --- barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp index 200de81cd112..8b61016595d8 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.hpp @@ -499,9 +499,9 @@ template class SumcheckProver { transcript->send_to_verifier("Sumcheck:evaluations", multivariate_evaluations.get_all()); // For ZK Flavors: the evaluations of Libra univariates are included in the Sumcheck Output + vinfo("finished sumcheck"); return SumcheckOutput{ .challenge = multivariate_challenge, .claimed_evaluations = multivariate_evaluations }; - vinfo("finished sumcheck"); }; /** @@ -671,12 +671,12 @@ template class SumcheckProver { // The sum of the Libra constant term and the evaluations of Libra univariates at corresponding sumcheck // challenges is included in the Sumcheck Output + vinfo("finished sumcheck"); return SumcheckOutput{ .challenge = multivariate_challenge, .claimed_evaluations = multivariate_evaluations, .claimed_libra_evaluation = libra_evaluation, .round_univariates = handler.get_univariates(), .round_univariate_evaluations = handler.get_evaluations() }; - vinfo("finished sumcheck"); }; /** From 02413f4bbf05964f0b7faa44e5c3a3b3c85dfa81 Mon Sep 17 00:00:00 2001 From: iakovenkos Date: Wed, 18 Mar 2026 11:16:00 +0000 Subject: [PATCH 6/7] gate sep --- .../cpp/src/barretenberg/polynomials/gate_separator.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/polynomials/gate_separator.hpp b/barretenberg/cpp/src/barretenberg/polynomials/gate_separator.hpp index 14a88a902641..9dfef8a98d0c 100644 --- a/barretenberg/cpp/src/barretenberg/polynomials/gate_separator.hpp +++ b/barretenberg/cpp/src/barretenberg/polynomials/gate_separator.hpp @@ -168,7 +168,7 @@ template struct GateSeparatorPolynomial { } BB_BENCH_NAME("GateSeparatorPolynomial::compute_beta_products"); - size_t pow_size = 1 << log_num_monomials; + size_t pow_size = static_cast(1) << log_num_monomials; Polynomial beta_products(pow_size, Polynomial::DontZeroMemory::FLAG); // Explanations of the algorithm: From 1b44374cac1269b5bc5362a2a07f89fc89e33d8d Mon Sep 17 00:00:00 2001 From: iakovenkos Date: Wed, 18 Mar 2026 11:26:13 +0000 Subject: [PATCH 7/7] fix build --- .../src/barretenberg/commitment_schemes/gemini/gemini_impl.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini_impl.hpp b/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini_impl.hpp index 530e0a834470..cd322e461792 100644 --- a/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/commitment_schemes/gemini/gemini_impl.hpp @@ -111,7 +111,7 @@ std::vector::Polynomial> GeminiProver_::com const size_t log_n, std::span multilinear_challenge, const Polynomial& A_0, const bool& has_zk) { BB_BENCH_NAME("Gemini::compute_fold_polynomials"); - BB_ASSERT_GTE(log_n, 2, "Gemini folding requires at least 4-element polynomials"); + BB_ASSERT_GTE(log_n, size_t(2), "Gemini folding requires at least 4-element polynomials"); const size_t virtual_log_n = multilinear_challenge.size(); // Cost per iteration: 1 subtraction + 1 multiplication + 1 addition