|
Barretenberg
The ZK-SNARK library at the core of Aztec
|
Unified test fixture for native and recursive merge verification. More...
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 |
Unified test fixture for native and recursive merge verification.
Templates on Curve type to handle both native (curve::BN254) and recursive (bn254<Builder>) contexts
| Curve | The curve type (native or stdlib) |
Definition at line 30 of file merge.test.cpp.
| using bb::MergeTests< Curve >::BuilderType = typename BuilderTypeHelper<Curve>::type |
Definition at line 49 of file merge.test.cpp.
| using bb::MergeTests< Curve >::Commitment = typename Curve::AffineElement |
Definition at line 35 of file merge.test.cpp.
| using bb::MergeTests< Curve >::FF = typename Curve::ScalarField |
Definition at line 34 of file merge.test.cpp.
| using bb::MergeTests< Curve >::GroupElement = typename Curve::Element |
Definition at line 36 of file merge.test.cpp.
| using bb::MergeTests< Curve >::InputCommitments = typename MergeVerifierType::InputCommitments |
Definition at line 41 of file merge.test.cpp.
| using bb::MergeTests< Curve >::MergeVerifierType = MergeVerifier_<Curve> |
Definition at line 37 of file merge.test.cpp.
| using bb::MergeTests< Curve >::PairingPoints = typename MergeVerifierType::PairingPoints |
Definition at line 39 of file merge.test.cpp.
| using bb::MergeTests< Curve >::Proof = typename MergeVerifierType::Proof |
Definition at line 42 of file merge.test.cpp.
| using bb::MergeTests< Curve >::TableCommitments = typename MergeVerifierType::TableCommitments |
Definition at line 40 of file merge.test.cpp.
| using bb::MergeTests< Curve >::Transcript = typename MergeVerifierType::Transcript |
Definition at line 38 of file merge.test.cpp.
| using bb::MergeTests< Curve >::VerifierCommitmentKey = bb::VerifierCommitmentKey<curve::BN254> |
Definition at line 43 of file merge.test.cpp.
|
strong |
| Enumerator | |
|---|---|
| None | |
| Shift | |
| MCommitment | |
| LEval | |
Definition at line 51 of file merge.test.cpp.
|
inlinestatic |
Check circuit validity (only relevant in recursive context)
Definition at line 103 of file merge.test.cpp.
|
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.
|
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.
|
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.
|
inlinestatic |
Definition at line 32 of file merge.test.cpp.
|
inlinestatic |
Tamper with the merge proof for failure testing.
Definition at line 116 of file merge.test.cpp.
|
inlinestatic |
Test failure when degree(l) > shift_size (as read from the proof)
Definition at line 311 of file merge.test.cpp.
|
inlinestatic |
Test failure when g_j(kappa) ≠ kappa^{k-1} * l_j(1/kappa)
Definition at line 341 of file merge.test.cpp.
|
inlinestatic |
Test failure when m ≠ l + X^k r.
Definition at line 326 of file merge.test.cpp.
|
inlinestatic |
Test merge proof with append mode.
Definition at line 285 of file merge.test.cpp.
|
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.
|
inlinestatic |
Test multiple merge proofs with prepend mode.
Definition at line 259 of file merge.test.cpp.
|
inlinestatic |
Test basic merge proof construction and verification.
Definition at line 244 of file merge.test.cpp.
|
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.
|
staticconstexpr |
Definition at line 45 of file merge.test.cpp.
|
staticconstexpr |
Definition at line 46 of file merge.test.cpp.