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

Translator verifier class that verifies the proof of the Translator circuit. More...

#include <translator_verifier.hpp>

Classes

struct  ReductionResult
 Result of reducing translator proof to pairing check. More...
 

Public Types

using FF = typename Flavor::FF
 
using BF = typename Flavor::BF
 
using Curve = typename Flavor::Curve
 
using Commitment = typename Flavor::Commitment
 
using VerificationKey = typename Flavor::VerificationKey
 
using VerifierCommitments = typename Flavor::VerifierCommitments
 
using CommitmentLabels = typename Flavor::CommitmentLabels
 
using Transcript = typename Flavor::Transcript
 
using RelationParams = RelationParameters< FF >
 
using Builder = std::conditional_t< IsRecursive, typename Flavor::CircuitBuilder, void >
 
using PairingPoints = std::conditional_t< IsRecursive, stdlib::recursion::PairingPoints< Curve >, bb::PairingPoints< Curve > >
 
using Proof = std::conditional_t< IsRecursive, stdlib::Proof< Builder >, HonkProof >
 

Public Member Functions

 TranslatorVerifier_ (std::shared_ptr< Transcript > transcript, const Proof &proof, const BF &evaluation_input_x, const BF &batching_challenge_v, const BF &accumulated_result, const std::array< Commitment, TranslatorFlavor::NUM_OP_QUEUE_WIRES > &op_queue_wire_commitments)
 Unified constructor for both native and recursive verification.
 
ReductionResult reduce_to_pairing_check ()
 Reduce the translator proof to a pairing check.
 
std::shared_ptr< VerificationKeyget_verification_key () const
 Get the verification key.
 

Static Public Attributes

static constexpr bool IsRecursive = Curve::is_stdlib_type
 

Private Member Functions

void put_translation_data_in_relation_parameters ()
 Populate relation parameters with translation data from ECCVM verifier.
 

Private Attributes

std::shared_ptr< VerificationKeykey
 
FF vk_hash
 
std::shared_ptr< Transcripttranscript
 
Proof proof
 
RelationParams relation_parameters
 
BF evaluation_input_x
 
BF batching_challenge_v
 
BF accumulated_result
 
std::array< Commitment, TranslatorFlavor::NUM_OP_QUEUE_WIRESop_queue_wire_commitments
 
std::conditional_t< IsRecursive, Builder *, void * > builder = nullptr
 

Detailed Description

template<typename Flavor>
class bb::TranslatorVerifier_< Flavor >

Translator verifier class that verifies the proof of the Translator circuit.

Template Parameters
FlavorEither TranslatorFlavor (native) or TranslatorRecursiveFlavor (recursive)

Definition at line 23 of file translator_verifier.hpp.

Member Typedef Documentation

◆ BF

template<typename Flavor >
using bb::TranslatorVerifier_< Flavor >::BF = typename Flavor::BF

Definition at line 26 of file translator_verifier.hpp.

◆ Builder

Definition at line 36 of file translator_verifier.hpp.

◆ Commitment

template<typename Flavor >
using bb::TranslatorVerifier_< Flavor >::Commitment = typename Flavor::Commitment

Definition at line 28 of file translator_verifier.hpp.

◆ CommitmentLabels

template<typename Flavor >
using bb::TranslatorVerifier_< Flavor >::CommitmentLabels = typename Flavor::CommitmentLabels

Definition at line 31 of file translator_verifier.hpp.

◆ Curve

template<typename Flavor >
using bb::TranslatorVerifier_< Flavor >::Curve = typename Flavor::Curve

Definition at line 27 of file translator_verifier.hpp.

◆ FF

template<typename Flavor >
using bb::TranslatorVerifier_< Flavor >::FF = typename Flavor::FF

Definition at line 25 of file translator_verifier.hpp.

◆ PairingPoints

◆ Proof

Definition at line 43 of file translator_verifier.hpp.

◆ RelationParams

template<typename Flavor >
using bb::TranslatorVerifier_< Flavor >::RelationParams = RelationParameters<FF>

Definition at line 33 of file translator_verifier.hpp.

◆ Transcript

template<typename Flavor >
using bb::TranslatorVerifier_< Flavor >::Transcript = typename Flavor::Transcript

Definition at line 32 of file translator_verifier.hpp.

◆ VerificationKey

Definition at line 29 of file translator_verifier.hpp.

◆ VerifierCommitments

template<typename Flavor >
using bb::TranslatorVerifier_< Flavor >::VerifierCommitments = typename Flavor::VerifierCommitments

Definition at line 30 of file translator_verifier.hpp.

Constructor & Destructor Documentation

◆ TranslatorVerifier_()

template<typename Flavor >
bb::TranslatorVerifier_< Flavor >::TranslatorVerifier_ ( std::shared_ptr< Transcript transcript,
const Proof proof,
const BF evaluation_input_x,
const BF batching_challenge_v,
const BF accumulated_result,
const std::array< Commitment, TranslatorFlavor::NUM_OP_QUEUE_WIRES > &  op_queue_wire_commitments 
)
inline

Unified constructor for both native and recursive verification.

For recursive case, extracts builder from proof elements via get_context(). TranslatorFlavor VK is constant, so it's default-constructed.

Parameters
transcriptTranscript for proof verification
proofThe translator proof
evaluation_input_xChallenge point for polynomial evaluation (from ECCVM)
batching_challenge_vChallenge for batching translation polynomials (from ECCVM)
accumulated_resultThe accumulated result from ECCVM verifier
op_queue_wire_commitmentsCommitments to op queue wires from merge protocol

Definition at line 67 of file translator_verifier.hpp.

Member Function Documentation

◆ get_verification_key()

template<typename Flavor >
std::shared_ptr< VerificationKey > bb::TranslatorVerifier_< Flavor >::get_verification_key ( ) const
inline

Get the verification key.

Returns
Shared pointer to the verification key

Definition at line 114 of file translator_verifier.hpp.

◆ put_translation_data_in_relation_parameters()

template<typename Flavor >
void bb::TranslatorVerifier_< Flavor >::put_translation_data_in_relation_parameters ( )
private

Populate relation parameters with translation data from ECCVM verifier.

Converts the translation challenges and accumulated result into limbs.

  • evaluation_input_x and batching_challenge_v: 5 limbs (4 binary + 1 prime), see TranslatorNonNativeFieldRelation
  • accumulated_result: 4 binary limbs only as they are sufficient for equality checking, see TranslatorAccumulatorTransferRelationImpl Native uses uint256_t::slice, recursive uses BF::binary_basis_limbs.

Definition at line 122 of file translator_verifier.cpp.

◆ reduce_to_pairing_check()

template<typename Flavor >
TranslatorVerifier_< Flavor >::ReductionResult bb::TranslatorVerifier_< Flavor >::reduce_to_pairing_check ( )

Reduce the translator proof to a pairing check.

Verify the TranslatorFlavor Honk proof.

Verifies the Translator circuit's internal checks (sumcheck, Libra evaluations consistency) and reduces all polynomial opening claims to a KZG pairing check. This method does NOT perform the final pairing verification - it returns pairing points that must be verified externally.

The Translator proves correct translation between BN254 and Grumpkin curve operations. It bridges the ECCVM (which operates on Grumpkin) with the main circuit constraints (which operate on BN254).

Returns
ReductionResult containing:
  • pairing_points: KZG pairing check points to be verified externally
  • reduction_succeeded: true if sumcheck and consistency checks passed

This function verifies the Translator circuit which ensures consistency between the ECCVM transcript and the op queue data. Returns verification result with pairing points and check status.

Definition at line 134 of file translator_verifier.cpp.

Member Data Documentation

◆ accumulated_result

template<typename Flavor >
BF bb::TranslatorVerifier_< Flavor >::accumulated_result
private

Definition at line 126 of file translator_verifier.hpp.

◆ batching_challenge_v

template<typename Flavor >
BF bb::TranslatorVerifier_< Flavor >::batching_challenge_v
private

Definition at line 125 of file translator_verifier.hpp.

◆ builder

template<typename Flavor >
std::conditional_t<IsRecursive, Builder*, void*> bb::TranslatorVerifier_< Flavor >::builder = nullptr
private

Definition at line 130 of file translator_verifier.hpp.

◆ evaluation_input_x

template<typename Flavor >
BF bb::TranslatorVerifier_< Flavor >::evaluation_input_x
private

Definition at line 124 of file translator_verifier.hpp.

◆ IsRecursive

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

Definition at line 35 of file translator_verifier.hpp.

◆ key

template<typename Flavor >
std::shared_ptr<VerificationKey> bb::TranslatorVerifier_< Flavor >::key
private

Definition at line 117 of file translator_verifier.hpp.

◆ op_queue_wire_commitments

template<typename Flavor >
std::array<Commitment, TranslatorFlavor::NUM_OP_QUEUE_WIRES> bb::TranslatorVerifier_< Flavor >::op_queue_wire_commitments
private

Definition at line 127 of file translator_verifier.hpp.

◆ proof

template<typename Flavor >
Proof bb::TranslatorVerifier_< Flavor >::proof
private

Definition at line 120 of file translator_verifier.hpp.

◆ relation_parameters

template<typename Flavor >
RelationParams bb::TranslatorVerifier_< Flavor >::relation_parameters
private

Definition at line 121 of file translator_verifier.hpp.

◆ transcript

template<typename Flavor >
std::shared_ptr<Transcript> bb::TranslatorVerifier_< Flavor >::transcript
private

Definition at line 119 of file translator_verifier.hpp.

◆ vk_hash

template<typename Flavor >
FF bb::TranslatorVerifier_< Flavor >::vk_hash
private

Definition at line 118 of file translator_verifier.hpp.


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