Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::MergeTests< Curve > Class Template Reference

Unified test fixture for native and recursive merge verification. More...

Inheritance diagram for bb::MergeTests< Curve >:

Public Types

enum class  TamperProofMode : uint8_t { None , Shift , MCommitment , LEval }
 
using FF = typename Curve::ScalarField
 
using Commitment = typename Curve::AffineElement
 
using GroupElement = typename Curve::Element
 
using MergeVerifierType = MergeVerifier_< Curve >
 
using Transcript = typename MergeVerifierType::Transcript
 
using PairingPoints = typename MergeVerifierType::PairingPoints
 
using TableCommitments = typename MergeVerifierType::TableCommitments
 
using InputCommitments = typename MergeVerifierType::InputCommitments
 
using Proof = typename MergeVerifierType::Proof
 
using VerifierCommitmentKey = bb::VerifierCommitmentKey< curve::BN254 >
 
using BuilderType = typename BuilderTypeHelper< Curve >::type
 

Static Public Member Functions

static void SetUpTestSuite ()
 
template<typename T >
static auto to_native (const T &val)
 Convert a stdlib type to its native value.
 
static Commitment create_commitment (BuilderType &builder, const curve::BN254::AffineElement &native_commitment)
 Create a commitment from a native commitment value.
 
static Proof create_proof (BuilderType &builder, const std::vector< bb::fr > &native_proof)
 Create a proof object from a vector of field elements.
 
static bool check_circuit (BuilderType &builder)
 Check circuit validity (only relevant in recursive context)
 
static void tamper_with_proof (std::vector< bb::fr > &merge_proof, const TamperProofMode tampering_mode)
 Tamper with the merge proof for failure testing.
 
static void prove_and_verify_merge (const std::shared_ptr< ECCOpQueue > &op_queue, const MergeSettings settings=MergeSettings::PREPEND, const TamperProofMode tampering_mode=TamperProofMode::None, const bool expected=true)
 Prove and verify a merge proof in both native and recursive contexts.
 
static void test_merge_proof_size ()
 Test that merge proof size matches the expected constant.
 
static void test_single_merge ()
 Test basic merge proof construction and verification.
 
static void test_multiple_merges_prepend ()
 Test multiple merge proofs with prepend mode.
 
static void test_merge_prepend_then_append ()
 Test merge proof with append mode.
 
static void test_degree_check_failure (const MergeSettings settings=MergeSettings::PREPEND)
 Test failure when degree(l) > shift_size (as read from the proof)
 
static void test_merge_failure (const MergeSettings settings=MergeSettings::PREPEND)
 Test failure when m ≠ l + X^k r.
 
static void test_eval_failure (const MergeSettings settings=MergeSettings::PREPEND)
 Test failure when g_j(kappa) ≠ kappa^{k-1} * l_j(1/kappa)
 

Static Public Attributes

static constexpr bool IsRecursive = Curve::is_stdlib_type
 
static constexpr size_t NUM_WIRES = MegaExecutionTraceBlocks::NUM_WIRES
 

Detailed Description

template<typename Curve>
class bb::MergeTests< Curve >

Unified test fixture for native and recursive merge verification.

Templates on Curve type to handle both native (curve::BN254) and recursive (bn254<Builder>) contexts

Template Parameters
CurveThe curve type (native or stdlib)

Definition at line 30 of file merge.test.cpp.

Member Typedef Documentation

◆ BuilderType

template<typename Curve >
using bb::MergeTests< Curve >::BuilderType = typename BuilderTypeHelper<Curve>::type

Definition at line 49 of file merge.test.cpp.

◆ Commitment

template<typename Curve >
using bb::MergeTests< Curve >::Commitment = typename Curve::AffineElement

Definition at line 35 of file merge.test.cpp.

◆ FF

template<typename Curve >
using bb::MergeTests< Curve >::FF = typename Curve::ScalarField

Definition at line 34 of file merge.test.cpp.

◆ GroupElement

template<typename Curve >
using bb::MergeTests< Curve >::GroupElement = typename Curve::Element

Definition at line 36 of file merge.test.cpp.

◆ InputCommitments

template<typename Curve >
using bb::MergeTests< Curve >::InputCommitments = typename MergeVerifierType::InputCommitments

Definition at line 41 of file merge.test.cpp.

◆ MergeVerifierType

template<typename Curve >
using bb::MergeTests< Curve >::MergeVerifierType = MergeVerifier_<Curve>

Definition at line 37 of file merge.test.cpp.

◆ PairingPoints

template<typename Curve >
using bb::MergeTests< Curve >::PairingPoints = typename MergeVerifierType::PairingPoints

Definition at line 39 of file merge.test.cpp.

◆ Proof

template<typename Curve >
using bb::MergeTests< Curve >::Proof = typename MergeVerifierType::Proof

Definition at line 42 of file merge.test.cpp.

◆ TableCommitments

template<typename Curve >
using bb::MergeTests< Curve >::TableCommitments = typename MergeVerifierType::TableCommitments

Definition at line 40 of file merge.test.cpp.

◆ Transcript

template<typename Curve >
using bb::MergeTests< Curve >::Transcript = typename MergeVerifierType::Transcript

Definition at line 38 of file merge.test.cpp.

◆ VerifierCommitmentKey

template<typename Curve >
using bb::MergeTests< Curve >::VerifierCommitmentKey = bb::VerifierCommitmentKey<curve::BN254>

Definition at line 43 of file merge.test.cpp.

Member Enumeration Documentation

◆ TamperProofMode

template<typename Curve >
enum class bb::MergeTests::TamperProofMode : uint8_t
strong
Enumerator
None 
Shift 
MCommitment 
LEval 

Definition at line 51 of file merge.test.cpp.

Member Function Documentation

◆ check_circuit()

template<typename Curve >
static bool bb::MergeTests< Curve >::check_circuit ( BuilderType builder)
inlinestatic

Check circuit validity (only relevant in recursive context)

Definition at line 103 of file merge.test.cpp.

◆ create_commitment()

template<typename Curve >
static Commitment bb::MergeTests< Curve >::create_commitment ( BuilderType builder,
const curve::BN254::AffineElement native_commitment 
)
inlinestatic

Create a commitment from a native commitment value.

In native context, returns commitment as-is; in recursive context, creates witness commitment

Definition at line 70 of file merge.test.cpp.

◆ create_proof()

template<typename Curve >
static Proof bb::MergeTests< Curve >::create_proof ( BuilderType builder,
const std::vector< bb::fr > &  native_proof 
)
inlinestatic

Create a proof object from a vector of field elements.

In native context, returns vector as-is; in recursive context, creates stdlib::Proof which is then converted to std::vector<FF>

Definition at line 87 of file merge.test.cpp.

◆ prove_and_verify_merge()

template<typename Curve >
static void bb::MergeTests< Curve >::prove_and_verify_merge ( const std::shared_ptr< ECCOpQueue > &  op_queue,
const MergeSettings  settings = MergeSettings::PREPEND,
const TamperProofMode  tampering_mode = TamperProofMode::None,
const bool  expected = true 
)
inlinestatic

Prove and verify a merge proof in both native and recursive contexts.

Creates a merge proof, optionally tampers with it, then verifies in the appropriate context

Definition at line 153 of file merge.test.cpp.

◆ SetUpTestSuite()

template<typename Curve >
static void bb::MergeTests< Curve >::SetUpTestSuite ( )
inlinestatic

Definition at line 32 of file merge.test.cpp.

◆ tamper_with_proof()

template<typename Curve >
static void bb::MergeTests< Curve >::tamper_with_proof ( std::vector< bb::fr > &  merge_proof,
const TamperProofMode  tampering_mode 
)
inlinestatic

Tamper with the merge proof for failure testing.

Definition at line 116 of file merge.test.cpp.

◆ test_degree_check_failure()

template<typename Curve >
static void bb::MergeTests< Curve >::test_degree_check_failure ( const MergeSettings  settings = MergeSettings::PREPEND)
inlinestatic

Test failure when degree(l) > shift_size (as read from the proof)

Definition at line 311 of file merge.test.cpp.

◆ test_eval_failure()

template<typename Curve >
static void bb::MergeTests< Curve >::test_eval_failure ( const MergeSettings  settings = MergeSettings::PREPEND)
inlinestatic

Test failure when g_j(kappa) ≠ kappa^{k-1} * l_j(1/kappa)

Definition at line 341 of file merge.test.cpp.

◆ test_merge_failure()

template<typename Curve >
static void bb::MergeTests< Curve >::test_merge_failure ( const MergeSettings  settings = MergeSettings::PREPEND)
inlinestatic

Test failure when m ≠ l + X^k r.

Definition at line 326 of file merge.test.cpp.

◆ test_merge_prepend_then_append()

template<typename Curve >
static void bb::MergeTests< Curve >::test_merge_prepend_then_append ( )
inlinestatic

Test merge proof with append mode.

Definition at line 285 of file merge.test.cpp.

◆ test_merge_proof_size()

template<typename Curve >
static void bb::MergeTests< Curve >::test_merge_proof_size ( )
inlinestatic

Test that merge proof size matches the expected constant.

Useful for ensuring correct construction of mock merge proofs

Definition at line 226 of file merge.test.cpp.

◆ test_multiple_merges_prepend()

template<typename Curve >
static void bb::MergeTests< Curve >::test_multiple_merges_prepend ( )
inlinestatic

Test multiple merge proofs with prepend mode.

Definition at line 259 of file merge.test.cpp.

◆ test_single_merge()

template<typename Curve >
static void bb::MergeTests< Curve >::test_single_merge ( )
inlinestatic

Test basic merge proof construction and verification.

Definition at line 244 of file merge.test.cpp.

◆ to_native()

template<typename Curve >
template<typename T >
static auto bb::MergeTests< Curve >::to_native ( const T &  val)
inlinestatic

Convert a stdlib type to its native value.

In native context, returns value as-is; in recursive context, extracts the native value

Definition at line 57 of file merge.test.cpp.

Member Data Documentation

◆ IsRecursive

template<typename Curve >
constexpr bool bb::MergeTests< Curve >::IsRecursive = Curve::is_stdlib_type
staticconstexpr

Definition at line 45 of file merge.test.cpp.

◆ NUM_WIRES

template<typename Curve >
constexpr size_t bb::MergeTests< Curve >::NUM_WIRES = MegaExecutionTraceBlocks::NUM_WIRES
staticconstexpr

Definition at line 46 of file merge.test.cpp.


The documentation for this class was generated from the following file: