diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp index 32494b09caea..d2157c11fe73 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp @@ -186,9 +186,10 @@ template void OinkProver::commit_to_z_perm() template void OinkProver::commit_to_masking_poly() { if constexpr (flavor_has_gemini_masking()) { - // Gemini masking poly only needs to cover the actual polynomial extent, not full dyadic size - const size_t polynomial_size = prover_instance->polynomials.max_end_index(); - prover_instance->polynomials.gemini_masking_poly = Polynomial::random(polynomial_size); + // virtual_size = dyadic_size matches every other witness poly, so sumcheck's pairwise read + // past end_index lands in the virtual-zero region. + prover_instance->polynomials.gemini_masking_poly = Polynomial::random( + prover_instance->polynomials.max_end_index(), prover_instance->dyadic_size(), /*start_index=*/0); // Commit to the masking polynomial and send to transcript auto masking_commitment = commitment_key.commit(prover_instance->polynomials.gemini_masking_poly);