51 EXPECT_EQ(result.first.size(), 1);
52 EXPECT_EQ(result.second.size(), 0);
57 EXPECT_EQ(result.first.size(), 1);
58 EXPECT_EQ(result.second.size(), 0);
64 const bool run_analyzer =
false)
67 RecursiveBuilder outer_circuit;
75 auto t_current = op_queue->construct_current_ultra_ops_subtable_columns();
76 auto T_prev = op_queue->construct_previous_ultra_ops_table_columns();
78 merge_commitments.
t_commitments[idx] = merge_prover.pcs_commitment_key.commit(t_current[idx]);
79 merge_commitments.
T_prev_commitments[idx] = merge_prover.pcs_commitment_key.commit(T_prev[idx]);
81 RecursiveMergeVerifier::Commitment::from_witness(&outer_circuit, merge_commitments.
t_commitments[idx]);
82 recursive_merge_commitments.
T_prev_commitments[idx] = RecursiveMergeVerifier::Commitment::from_witness(
86 recursive_merge_commitments.
t_commitments[idx].unset_free_witness_tag();
94 [[maybe_unused]]
auto [pairing_points,
95 recursive_merged_table_commitments,
96 degree_check_verified,
97 concatenation_check_verified] =
98 verifier.verify_proof(stdlib_merge_proof, recursive_merge_commitments);
101 EXPECT_FALSE(outer_circuit.failed());
142using Builder = testing::Types<MegaCircuitBuilder>;
148 TestFixture::test_recursive_merge_verification_prepend();
153 TestFixture::test_recursive_merge_verification_append();
static void construct_simple_circuit(MegaBuilder &builder)
Generate a simple test circuit with some ECC op gates and conventional arithmetic gates.
static constexpr size_t NUM_WIRES
MegaCircuitBuilder CircuitBuilder
Curve::AffineElement Commitment
Prover class for the Goblin ECC op queue transcript merge protocol.
std::vector< FF > MergeProof
BB_PROFILE MergeProof construct_proof()
Prove proper construction of the aggregate Goblin ECC op queue polynomials T_j.
Unified verifier class for the Goblin ECC op queue transcript merge protocol.
std::array< Commitment, NUM_WIRES > TableCommitments
A ProverInstance is normally constructed from a finalized circuit and it contains all the information...
Specialization for bn254.
Representation of the Grumpkin Verifier Commitment Key inside a bn254 circuit.
A simple wrapper around a vector of stdlib field elements representing a proof.
Test suite for recursive verification of Goblin Merge proofs.
static void prove_and_verify_merge(const std::shared_ptr< ECCOpQueue > &op_queue, const MergeSettings settings=MergeSettings::PREPEND, const bool run_analyzer=false)
typename InnerFlavor::CircuitBuilder InnerBuilder
static void test_recursive_merge_verification_append()
static void test_recursive_merge_verification_prepend()
MergeRecursiveVerifier< RecursiveBuilder >::TableCommitments RecursiveTableCommitments
static void analyze_circuit(RecursiveBuilder &outer_circuit)
static void SetUpTestSuite()
MergeVerifier::TableCommitments TableCommitments
InnerFlavor::Commitment Commitment
MergeProver::MergeProof MergeProof
std::pair< std::vector< ConnectedComponent >, std::unordered_set< uint32_t > > analyze_circuit(bool filter_cc=true)
this functions was made for more convenient testing process
std::filesystem::path bb_crs_path()
void init_file_crs_factory(const std::filesystem::path &path)
TYPED_TEST_SUITE(BoomerangRecursiveMergeVerifierTest, Builder)
TYPED_TEST(BoomerangRecursiveMergeVerifierTest, RecursiveVerificationPrepend)
testing::Types< MegaCircuitBuilder > Builder
MergeSettings
The MergeSettings define whether an current subtable will be added at the beginning (PREPEND) or at t...
StaticAnalyzer_< bb::fr, bb::MegaCircuitBuilder > MegaStaticAnalyzer
UltraStaticAnalyzer StaticAnalyzer
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept