diff --git a/barretenberg/cpp/src/barretenberg/translator_vm/goblin_translator_composer.test.cpp b/barretenberg/cpp/src/barretenberg/translator_vm/goblin_translator_composer.test.cpp index 0bd890ccd34a..fb1c92167944 100644 --- a/barretenberg/cpp/src/barretenberg/translator_vm/goblin_translator_composer.test.cpp +++ b/barretenberg/cpp/src/barretenberg/translator_vm/goblin_translator_composer.test.cpp @@ -49,12 +49,24 @@ TEST_F(GoblinTranslatorComposerTests, Basic) using Fr = fr; using Fq = fq; + // Add an element and scalar the accumulation of which leaves no Point-at-Infinity commitments + const auto x = uint256_t(0xd3c208c16d87cfd3, 0xd97816a916871ca8, 0x9b85045b68181585, 0x30644e72e131a02); + const auto y = uint256_t(0x3ce1cc9c7e645a83, 0x2edac647851e3ac5, 0xd0cbe61fced2bc53, 0x1a76dae6d3272396); + auto padding_element = G1(x, y); + auto padding_scalar = -Fr::one(); + auto P1 = G1::random_element(); auto P2 = G1::random_element(); auto z = Fr::random_element(); // Add the same operations to the ECC op queue; the native computation is performed under the hood. auto op_queue = std::make_shared(); + + // Accumulate padding so that we don't produce Point-at-Infinity commitments. Currently our transcript can't handle + // them + op_queue->mul_accumulate(padding_element, padding_scalar); + + // Push everything else for (size_t i = 0; i < 500; i++) { op_queue->add_accumulate(P1); op_queue->mul_accumulate(P2, z);