Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder > Class Template Reference

Test suite for recursive verification of Goblin Merge proofs. More...

Inheritance diagram for bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >:

Static Public Member Functions

static void SetUpTestSuite ()
 
static void tamper_with_proof (MergeProof &merge_proof, const TamperProofMode tampering_mode)
 
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)
 
static void test_degree_check_failure ()
 Test failure when degree(l) > shift_size (as read from the proof)
 
static void test_merge_failure ()
 Test failure when m \neq l + X^k r.
 
static void test_eval_failure ()
 Test failure g_j(kappa) = kappa^{k-1} * l_j(1/kappa)
 
static void test_recursive_merge_verification ()
 Test recursive merge verification for the ops generated by several sample circuit, both prepended and appended.
 

Private Types

enum class  TamperProofMode { None , Shift , MCommitment , LEval }
 
using RecursiveMergeVerifier = MergeRecursiveVerifier_< RecursiveBuilder >
 
using RecursiveTableCommitments = MergeRecursiveVerifier_< RecursiveBuilder >::TableCommitments
 
using RecursiveMergeCommitments = MergeRecursiveVerifier_< RecursiveBuilder >::InputCommitments
 
using InnerFlavor = MegaFlavor
 
using InnerDeciderProvingKey = DeciderProvingKey_< InnerFlavor >
 
using InnerBuilder = typename InnerFlavor::CircuitBuilder
 
using Commitment = InnerFlavor::Commitment
 
using FF = InnerFlavor::FF
 
using VerifierCommitmentKey = bb::VerifierCommitmentKey< curve::BN254 >
 
using MergeProof = MergeProver::MergeProof
 
using TableCommitments = MergeVerifier::TableCommitments
 
using MergeCommitments = MergeVerifier::InputCommitments
 

Detailed Description

template<class RecursiveBuilder>
class bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >

Test suite for recursive verification of Goblin Merge proofs.

The recursive verification circuit is arithmetized using Goblin-style Ultra arithmetization (MegaCircuitBuilder).

Template Parameters
Builder

Definition at line 21 of file merge_verifier.test.cpp.

Member Typedef Documentation

◆ Commitment

template<class RecursiveBuilder >
using bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::Commitment = InnerFlavor::Commitment
private

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

◆ FF

template<class RecursiveBuilder >
using bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::FF = InnerFlavor::FF
private

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

◆ InnerBuilder

template<class RecursiveBuilder >
using bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::InnerBuilder = typename InnerFlavor::CircuitBuilder
private

Definition at line 31 of file merge_verifier.test.cpp.

◆ InnerDeciderProvingKey

template<class RecursiveBuilder >
using bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::InnerDeciderProvingKey = DeciderProvingKey_<InnerFlavor>
private

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

◆ InnerFlavor

template<class RecursiveBuilder >
using bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::InnerFlavor = MegaFlavor
private

Definition at line 29 of file merge_verifier.test.cpp.

◆ MergeCommitments

template<class RecursiveBuilder >
using bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::MergeCommitments = MergeVerifier::InputCommitments
private

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

◆ MergeProof

template<class RecursiveBuilder >
using bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::MergeProof = MergeProver::MergeProof
private

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

◆ RecursiveMergeCommitments

template<class RecursiveBuilder >
using bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::RecursiveMergeCommitments = MergeRecursiveVerifier_<RecursiveBuilder>::InputCommitments
private

Definition at line 26 of file merge_verifier.test.cpp.

◆ RecursiveMergeVerifier

template<class RecursiveBuilder >
using bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::RecursiveMergeVerifier = MergeRecursiveVerifier_<RecursiveBuilder>
private

Definition at line 24 of file merge_verifier.test.cpp.

◆ RecursiveTableCommitments

template<class RecursiveBuilder >
using bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::RecursiveTableCommitments = MergeRecursiveVerifier_<RecursiveBuilder>::TableCommitments
private

Definition at line 25 of file merge_verifier.test.cpp.

◆ TableCommitments

template<class RecursiveBuilder >
using bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::TableCommitments = MergeVerifier::TableCommitments
private

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

◆ VerifierCommitmentKey

template<class RecursiveBuilder >
using bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::VerifierCommitmentKey = bb::VerifierCommitmentKey<curve::BN254>
private

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

Member Enumeration Documentation

◆ TamperProofMode

template<class RecursiveBuilder >
enum class bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest::TamperProofMode
strongprivate
Enumerator
None 
Shift 
MCommitment 
LEval 

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

Member Function Documentation

◆ prove_and_verify_merge()

template<class RecursiveBuilder >
static void bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::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

Definition at line 79 of file merge_verifier.test.cpp.

◆ SetUpTestSuite()

template<class RecursiveBuilder >
static void bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::SetUpTestSuite ( )
inlinestatic

Definition at line 44 of file merge_verifier.test.cpp.

◆ tamper_with_proof()

template<class RecursiveBuilder >
static void bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::tamper_with_proof ( MergeProof merge_proof,
const TamperProofMode  tampering_mode 
)
inlinestatic

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

◆ test_degree_check_failure()

template<class RecursiveBuilder >
static void bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::test_degree_check_failure ( )
inlinestatic

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

Definition at line 137 of file merge_verifier.test.cpp.

◆ test_eval_failure()

template<class RecursiveBuilder >
static void bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::test_eval_failure ( )
inlinestatic

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

Definition at line 161 of file merge_verifier.test.cpp.

◆ test_merge_failure()

template<class RecursiveBuilder >
static void bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::test_merge_failure ( )
inlinestatic

Test failure when m \neq l + X^k r.

Definition at line 149 of file merge_verifier.test.cpp.

◆ test_recursive_merge_verification()

template<class RecursiveBuilder >
static void bb::stdlib::recursion::goblin::RecursiveMergeVerifierTest< RecursiveBuilder >::test_recursive_merge_verification ( )
inlinestatic

Test recursive merge verification for the ops generated by several sample circuit, both prepended and appended.

We construct and verify an Ultra Honk proof of the recursive merge verifier circuit to check its correctness rather than calling check_circuit since this functionality is incomplete for the Goblin arithmetization

Definition at line 177 of file merge_verifier.test.cpp.


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