Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::TranslatorRecursiveTests Class Reference

Test suite for standalone recursive verification of translation proofs. More...

Inheritance diagram for bb::TranslatorRecursiveTests:

Classes

struct  RecursiveVerifierInputs
 

Public Types

enum class  TamperType {
  MODIFY_SUMCHECK_UNIVARIATE , MODIFY_SUMCHECK_EVAL , MODIFY_KZG_WITNESS , MODIFY_LIBRA_EVAL ,
  END
}
 
using RecursiveFlavor = TranslatorRecursiveFlavor
 
using InnerFlavor = RecursiveFlavor::NativeFlavor
 
using InnerBuilder = InnerFlavor::CircuitBuilder
 
using InnerProvingKey = TranslatorProvingKey
 
using InnerProver = TranslatorProver
 
using InnerVerifier = TranslatorVerifier
 
using InnerG1 = InnerFlavor::Commitment
 
using InnerFF = InnerFlavor::FF
 
using InnerBF = InnerFlavor::BF
 
using RecursiveVerifier = TranslatorRecursiveVerifier
 
using OuterBuilder = RecursiveFlavor::CircuitBuilder
 
using OuterFlavor = std::conditional_t< IsMegaBuilder< OuterBuilder >, MegaFlavor, UltraFlavor >
 
using OuterProver = UltraProver_< OuterFlavor >
 
using OuterVerifier = UltraVerifier_< OuterFlavor, bb::DefaultIO >
 
using OuterProverInstance = ProverInstance_< OuterFlavor >
 
using TranslatorBF = TranslatorRecursiveFlavor::BF
 
using Transcript = InnerFlavor::Transcript
 

Static Public Member Functions

static void SetUpTestSuite ()
 
static void add_random_ops (std::shared_ptr< bb::ECCOpQueue > &op_queue, size_t count)
 
static void add_mixed_ops (std::shared_ptr< bb::ECCOpQueue > &op_queue, size_t count=100)
 
static InnerBuilder generate_test_circuit (const InnerBF &batching_challenge_v, const InnerBF &evaluation_challenge_x, const size_t circuit_size_parameter=500)
 
static std::array< InnerFlavor::Commitment, InnerFlavor::NUM_OP_QUEUE_WIREScreate_native_op_queue_commitments (const std::shared_ptr< TranslatorProvingKey > &proving_key)
 
static std::array< RecursiveFlavor::Commitment, InnerFlavor::NUM_OP_QUEUE_WIREScreate_stdlib_op_queue_commitments (OuterBuilder *builder, const std::array< InnerFlavor::Commitment, InnerFlavor::NUM_OP_QUEUE_WIRES > &native_comms)
 
static RecursiveVerifierInputs create_recursive_verifier_inputs (OuterBuilder *builder, const InnerProver &prover, const InnerBF &evaluation_challenge_x, const InnerBF &batching_challenge_v)
 
static std::tuple< OuterBuilder, std::shared_ptr< OuterFlavor::VerificationKey > > create_recursive_verifier_circuit (size_t circuit_size_parameter=500)
 
static void test_recursive_verification ()
 
static void test_structured_proof_round_trip ()
 Verify that StructuredProof<TranslatorFlavor> can round-trip serialize/deserialize a proof.
 
static void tamper_translator_proof (InnerProver &prover, typename InnerFlavor::Transcript::Proof &proof, TamperType tamper_type)
 
static void test_recursive_verification_fails ()
 
static void test_independent_vk_hash ()
 
static void test_static_analysis ()
 Static analysis (boomerang detection) of the translator recursive verifier circuit.
 

Detailed Description

Test suite for standalone recursive verification of translation proofs.

Inner* types describe the type of circuits (and everything else required to generate a proof) that we aim to recursively verify. Outer* describes the arithmetisation of the recursive verifier circuit and the types required to ensure the recursive verifier circuit is correct (i.e. by producing a proof and verifying it).

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

Member Typedef Documentation

◆ InnerBF

◆ InnerBuilder

◆ InnerFF

◆ InnerFlavor

◆ InnerG1

◆ InnerProver

◆ InnerProvingKey

◆ InnerVerifier

◆ OuterBuilder

◆ OuterFlavor

◆ OuterProver

◆ OuterProverInstance

◆ OuterVerifier

◆ RecursiveFlavor

◆ RecursiveVerifier

◆ Transcript

◆ TranslatorBF

Member Enumeration Documentation

◆ TamperType

Enumerator
MODIFY_SUMCHECK_UNIVARIATE 
MODIFY_SUMCHECK_EVAL 
MODIFY_KZG_WITNESS 
MODIFY_LIBRA_EVAL 
END 

Definition at line 270 of file translator_recursive_verifier.test.cpp.

Member Function Documentation

◆ add_mixed_ops()

static void bb::TranslatorRecursiveTests::add_mixed_ops ( std::shared_ptr< bb::ECCOpQueue > &  op_queue,
size_t  count = 100 
)
inlinestatic

Definition at line 56 of file translator_recursive_verifier.test.cpp.

◆ add_random_ops()

static void bb::TranslatorRecursiveTests::add_random_ops ( std::shared_ptr< bb::ECCOpQueue > &  op_queue,
size_t  count 
)
inlinestatic

Definition at line 48 of file translator_recursive_verifier.test.cpp.

◆ create_native_op_queue_commitments()

static std::array< InnerFlavor::Commitment, InnerFlavor::NUM_OP_QUEUE_WIRES > bb::TranslatorRecursiveTests::create_native_op_queue_commitments ( const std::shared_ptr< TranslatorProvingKey > &  proving_key)
inlinestatic

Definition at line 88 of file translator_recursive_verifier.test.cpp.

◆ create_recursive_verifier_circuit()

static std::tuple< OuterBuilder, std::shared_ptr< OuterFlavor::VerificationKey > > bb::TranslatorRecursiveTests::create_recursive_verifier_circuit ( size_t  circuit_size_parameter = 500)
inlinestatic

Definition at line 154 of file translator_recursive_verifier.test.cpp.

◆ create_recursive_verifier_inputs()

static RecursiveVerifierInputs bb::TranslatorRecursiveTests::create_recursive_verifier_inputs ( OuterBuilder builder,
const InnerProver prover,
const InnerBF evaluation_challenge_x,
const InnerBF batching_challenge_v 
)
inlinestatic

Definition at line 128 of file translator_recursive_verifier.test.cpp.

◆ create_stdlib_op_queue_commitments()

static std::array< RecursiveFlavor::Commitment, InnerFlavor::NUM_OP_QUEUE_WIRES > bb::TranslatorRecursiveTests::create_stdlib_op_queue_commitments ( OuterBuilder builder,
const std::array< InnerFlavor::Commitment, InnerFlavor::NUM_OP_QUEUE_WIRES > &  native_comms 
)
inlinestatic

Definition at line 104 of file translator_recursive_verifier.test.cpp.

◆ generate_test_circuit()

static InnerBuilder bb::TranslatorRecursiveTests::generate_test_circuit ( const InnerBF batching_challenge_v,
const InnerBF evaluation_challenge_x,
const size_t  circuit_size_parameter = 500 
)
inlinestatic

Definition at line 69 of file translator_recursive_verifier.test.cpp.

◆ SetUpTestSuite()

static void bb::TranslatorRecursiveTests::SetUpTestSuite ( )
inlinestatic

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

◆ tamper_translator_proof()

static void bb::TranslatorRecursiveTests::tamper_translator_proof ( InnerProver prover,
typename InnerFlavor::Transcript::Proof &  proof,
TamperType  tamper_type 
)
inlinestatic

Definition at line 278 of file translator_recursive_verifier.test.cpp.

◆ test_independent_vk_hash()

static void bb::TranslatorRecursiveTests::test_independent_vk_hash ( )
inlinestatic

Definition at line 362 of file translator_recursive_verifier.test.cpp.

◆ test_recursive_verification()

static void bb::TranslatorRecursiveTests::test_recursive_verification ( )
inlinestatic

Definition at line 223 of file translator_recursive_verifier.test.cpp.

◆ test_recursive_verification_fails()

static void bb::TranslatorRecursiveTests::test_recursive_verification_fails ( )
inlinestatic

Definition at line 313 of file translator_recursive_verifier.test.cpp.

◆ test_static_analysis()

static void bb::TranslatorRecursiveTests::test_static_analysis ( )
inlinestatic

Static analysis (boomerang detection) of the translator recursive verifier circuit.

Builds the recursive verifier circuit and checks that no variable appears in only one gate, which would indicate an unconstrained witness (potential soundness issue).

Definition at line 376 of file translator_recursive_verifier.test.cpp.

◆ test_structured_proof_round_trip()

static void bb::TranslatorRecursiveTests::test_structured_proof_round_trip ( )
inlinestatic

Verify that StructuredProof<TranslatorFlavor> can round-trip serialize/deserialize a proof.

Validates the field layout matches the actual Translator proof structure. This is the foundation for targeted proof tampering in SingleRecursiveVerificationFailure.

Definition at line 247 of file translator_recursive_verifier.test.cpp.


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