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

Verifier for the batched MegaZK circuit + translator sumcheck and PCS. More...

#include <batched_honk_translator_verifier.hpp>

Classes

struct  OinkResult
 Result of Phase 1 (MegaZK Oink verification). More...
 
struct  ReductionResult
 Result of the batched sumcheck/PCS reduction. More...
 

Public Types

using MegaZKFlavorT = std::conditional_t< IsRecursive, MegaZKRecursiveFlavor_< UltraCircuitBuilder >, MegaZKFlavor >
 
using TransFlavor = std::conditional_t< IsRecursive, TranslatorRecursiveFlavor, TranslatorFlavor >
 
using FF = typename MegaZKFlavorT::FF
 
using Commitment = typename MegaZKFlavorT::Commitment
 
using MegaZKVerifierInstance = VerifierInstance_< MegaZKFlavorT >
 
using MegaZKVKAndHash = typename MegaZKFlavorT::VKAndHash
 
using Transcript = std::conditional_t< IsRecursive, UltraStdlibTranscript, NativeTranscript >
 
using MegaZKVerifierCommitments = typename MegaZKFlavorT::VerifierCommitments
 
using TransVerifierCommitments = typename TransFlavor::VerifierCommitments
 
using Proof = std::conditional_t< IsRecursive, stdlib::Proof< UltraCircuitBuilder >, HonkProof >
 
using PairingPoints = std::conditional_t< IsRecursive, stdlib::recursion::PairingPoints< Curve >, bb::PairingPoints< Curve > >
 
using TransBF = typename TransFlavor::BF
 

Public Member Functions

 BatchedHonkTranslatorVerifier_ (std::shared_ptr< MegaZKVKAndHash > mega_zk_vk_and_hash, std::shared_ptr< Transcript > transcript)
 Construct the batched verifier with minimal state.
 
OinkResult verify_mega_zk_oink (const Proof &mega_zk_proof)
 Phase 1: Verify the MegaZK Oink phase on the shared transcript.
 
ReductionResult verify (const Proof &joint_proof, const TransBF &evaluation_input_x, const TransBF &batching_challenge_v, const TransBF &accumulated_result, const std::array< Commitment, TranslatorFlavor::NUM_OP_QUEUE_WIRES > &op_queue_wire_commitments)
 Phase 2: Verify translator Oink + joint sumcheck + joint PCS.
 

Static Public Attributes

static constexpr bool IsRecursive = Curve::is_stdlib_type
 
static constexpr RepeatedCommitmentsData REPEATED_COMMITMENTS
 

Private Member Functions

TransVerifierCommitments verify_translator_oink (const Proof &joint_proof, const TransBF &evaluation_input_x, const TransBF &batching_challenge_v, const TransBF &accumulated_result, const std::array< Commitment, TranslatorFlavor::NUM_OP_QUEUE_WIRES > &op_queue_wire_commitments)
 Verify the translator's Oink phase.
 
bool verify_joint_sumcheck ()
 Verify the joint 17-round sumcheck.
 
ReductionResult verify_joint_pcs (bool sumcheck_verified, MegaZKVerifierCommitments &mega_zk_commitments, TransVerifierCommitments &trans_commitments)
 Execute the joint Shplemini / KZG PCS reduction.
 

Private Attributes

std::shared_ptr< MegaZKVKAndHashmega_zk_vk_and_hash
 
std::shared_ptr< Transcripttranscript
 
std::shared_ptr< MegaZKVerifierInstancemega_zk_verifier_instance
 
std::conditional_t< IsRecursive, UltraCircuitBuilder *, std::nullptr_tbuilder = nullptr
 
bb::RelationParameters< FFmega_zk_relation_parameters
 
bb::RelationParameters< FFtranslator_relation_parameters
 
std::vector< FFjoint_challenge
 
MegaZKFlavorT::AllValues mega_zk_evals
 
TransFlavor::AllValues trans_evals
 
std::array< Commitment, NUM_LIBRA_COMMITMENTS > libra_commitments
 
FF libra_evaluation
 
FF libra_challenge
 

Detailed Description

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

Verifier for the batched MegaZK circuit + translator sumcheck and PCS.

Mirrors BatchedHonkTranslatorProver in the verification direction. Processes the MegaZK circuit's Oink proof and the translator's pre-sumcheck commitments on a shared transcript, then verifies a single joint 17-round sumcheck and a single Shplemini / KZG reduction.

The final joint relation check is: FRV_joint = rdp_MZK · FRV_MZK(u) + α^{K_H} · FRV_translator(u) + libra_eval · libra_challenge

where rdp_H is the row-disabling polynomial for the MegaZK circuit evaluated at the joint sumcheck challenge, and TranslatorFlavor does not use row-disabling (UseRowDisablingPolynomial is false for TranslatorFlavor).

Template Parameters
Curvecurve::BN254 for native verification, stdlib::bn254<Builder> for recursive.

Definition at line 32 of file batched_honk_translator_verifier.hpp.

Member Typedef Documentation

◆ Commitment

template<typename Curve >
using bb::BatchedHonkTranslatorVerifier_< Curve >::Commitment = typename MegaZKFlavorT::Commitment

Definition at line 42 of file batched_honk_translator_verifier.hpp.

◆ FF

template<typename Curve >
using bb::BatchedHonkTranslatorVerifier_< Curve >::FF = typename MegaZKFlavorT::FF

Definition at line 41 of file batched_honk_translator_verifier.hpp.

◆ MegaZKFlavorT

◆ MegaZKVerifierCommitments

template<typename Curve >
using bb::BatchedHonkTranslatorVerifier_< Curve >::MegaZKVerifierCommitments = typename MegaZKFlavorT::VerifierCommitments

Definition at line 46 of file batched_honk_translator_verifier.hpp.

◆ MegaZKVerifierInstance

template<typename Curve >
using bb::BatchedHonkTranslatorVerifier_< Curve >::MegaZKVerifierInstance = VerifierInstance_<MegaZKFlavorT>

Definition at line 43 of file batched_honk_translator_verifier.hpp.

◆ MegaZKVKAndHash

template<typename Curve >
using bb::BatchedHonkTranslatorVerifier_< Curve >::MegaZKVKAndHash = typename MegaZKFlavorT::VKAndHash

Definition at line 44 of file batched_honk_translator_verifier.hpp.

◆ PairingPoints

◆ Proof

◆ TransBF

template<typename Curve >
using bb::BatchedHonkTranslatorVerifier_< Curve >::TransBF = typename TransFlavor::BF

Definition at line 57 of file batched_honk_translator_verifier.hpp.

◆ Transcript

◆ TransFlavor

◆ TransVerifierCommitments

template<typename Curve >
using bb::BatchedHonkTranslatorVerifier_< Curve >::TransVerifierCommitments = typename TransFlavor::VerifierCommitments

Definition at line 47 of file batched_honk_translator_verifier.hpp.

Constructor & Destructor Documentation

◆ BatchedHonkTranslatorVerifier_()

template<typename Curve >
bb::BatchedHonkTranslatorVerifier_< Curve >::BatchedHonkTranslatorVerifier_ ( std::shared_ptr< MegaZKVKAndHash mega_zk_vk_and_hash,
std::shared_ptr< Transcript transcript 
)

Construct the batched verifier with minimal state.

Only stores the VK and transcript. Proof data and ECCVM-derived params are passed to the two-phase verification methods.

Definition at line 22 of file batched_honk_translator_verifier.cpp.

Member Function Documentation

◆ verify()

template<typename Curve >
BatchedHonkTranslatorVerifier_< Curve >::ReductionResult bb::BatchedHonkTranslatorVerifier_< Curve >::verify ( const Proof joint_proof,
const TransBF evaluation_input_x,
const TransBF batching_challenge_v,
const TransBF accumulated_result,
const std::array< Commitment, TranslatorFlavor::NUM_OP_QUEUE_WIRES > &  op_queue_wire_commitments 
)

Phase 2: Verify translator Oink + joint sumcheck + joint PCS.

Called after merge and ECCVM verification have been performed on the shared transcript. Loads joint_proof, runs translator oink, joint sumcheck, and joint PCS.

Returns
ReductionResult with pairing points and a success flag.

Definition at line 343 of file batched_honk_translator_verifier.cpp.

◆ verify_joint_pcs()

template<typename Curve >
BatchedHonkTranslatorVerifier_< Curve >::ReductionResult bb::BatchedHonkTranslatorVerifier_< Curve >::verify_joint_pcs ( bool  sumcheck_verified,
MegaZKVerifierCommitments mega_zk_commitments,
TransVerifierCommitments trans_commitments 
)
private

Execute the joint Shplemini / KZG PCS reduction.

Combines commitments and evaluations from both circuits into a single batch opening claim, then reduces to a KZG pairing check.

Definition at line 273 of file batched_honk_translator_verifier.cpp.

◆ verify_joint_sumcheck()

template<typename Curve >
bool bb::BatchedHonkTranslatorVerifier_< Curve >::verify_joint_sumcheck ( )
private

Verify the joint 17-round sumcheck.

Draws joint alpha, processes 17 sumcheck rounds, receives evaluations from both circuits, computes the joint full-relation purported value, and performs final verification. Populates joint_challenge, mega_zk_evals, trans_evals, libra_commitments, libra_evaluation, libra_challenge.

Returns
true if sumcheck verification passed.

Definition at line 98 of file batched_honk_translator_verifier.cpp.

◆ verify_mega_zk_oink()

template<typename Curve >
BatchedHonkTranslatorVerifier_< Curve >::OinkResult bb::BatchedHonkTranslatorVerifier_< Curve >::verify_mega_zk_oink ( const Proof mega_zk_proof)

Phase 1: Verify the MegaZK Oink phase on the shared transcript.

Verify the MegaZK circuit's Oink phase.

Loads mega_zk_proof into the transcript, runs OinkVerifier, stores verifier instance.

Returns
OinkResult with public inputs, calldata commitment, and ECC op wires.

Loads the hiding proof, runs OinkVerifier, and returns the data callers need between Phase 1 and Phase 2 (public inputs, calldata commitment, ECC op wires). Populates mega_zk_relation_parameters.

Definition at line 35 of file batched_honk_translator_verifier.cpp.

◆ verify_translator_oink()

template<typename Curve >
BatchedHonkTranslatorVerifier_< Curve >::TransVerifierCommitments bb::BatchedHonkTranslatorVerifier_< Curve >::verify_translator_oink ( const Proof joint_proof,
const TransBF evaluation_input_x,
const TransBF batching_challenge_v,
const TransBF accumulated_result,
const std::array< Commitment, TranslatorFlavor::NUM_OP_QUEUE_WIRES > &  op_queue_wire_commitments 
)
private

Verify the translator's Oink phase.

Delegates to TranslatorVerifier_::receive_pre_sumcheck(), which loads the translator proof, hashes the VK, sets relation parameters, and receives wire + permutation commitments. Populates translator_relation_parameters.

Definition at line 69 of file batched_honk_translator_verifier.cpp.

Member Data Documentation

◆ builder

◆ IsRecursive

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

Definition at line 34 of file batched_honk_translator_verifier.hpp.

◆ joint_challenge

template<typename Curve >
std::vector<FF> bb::BatchedHonkTranslatorVerifier_< Curve >::joint_challenge
private

Definition at line 161 of file batched_honk_translator_verifier.hpp.

◆ libra_challenge

template<typename Curve >
FF bb::BatchedHonkTranslatorVerifier_< Curve >::libra_challenge
private

Definition at line 166 of file batched_honk_translator_verifier.hpp.

◆ libra_commitments

template<typename Curve >
std::array<Commitment, NUM_LIBRA_COMMITMENTS> bb::BatchedHonkTranslatorVerifier_< Curve >::libra_commitments
private

Definition at line 164 of file batched_honk_translator_verifier.hpp.

◆ libra_evaluation

template<typename Curve >
FF bb::BatchedHonkTranslatorVerifier_< Curve >::libra_evaluation
private

Definition at line 165 of file batched_honk_translator_verifier.hpp.

◆ mega_zk_evals

template<typename Curve >
MegaZKFlavorT::AllValues bb::BatchedHonkTranslatorVerifier_< Curve >::mega_zk_evals
private

Definition at line 162 of file batched_honk_translator_verifier.hpp.

◆ mega_zk_relation_parameters

template<typename Curve >
bb::RelationParameters<FF> bb::BatchedHonkTranslatorVerifier_< Curve >::mega_zk_relation_parameters
private

Definition at line 157 of file batched_honk_translator_verifier.hpp.

◆ mega_zk_verifier_instance

template<typename Curve >
std::shared_ptr<MegaZKVerifierInstance> bb::BatchedHonkTranslatorVerifier_< Curve >::mega_zk_verifier_instance
private

Definition at line 151 of file batched_honk_translator_verifier.hpp.

◆ mega_zk_vk_and_hash

template<typename Curve >
std::shared_ptr<MegaZKVKAndHash> bb::BatchedHonkTranslatorVerifier_< Curve >::mega_zk_vk_and_hash
private

Definition at line 147 of file batched_honk_translator_verifier.hpp.

◆ REPEATED_COMMITMENTS

template<typename Curve >
constexpr RepeatedCommitmentsData bb::BatchedHonkTranslatorVerifier_< Curve >::REPEATED_COMMITMENTS
staticconstexpr
Initial value:
= [] {
constexpr size_t P = MegaZKFlavorT::NUM_PRECOMPUTED_ENTITIES;
constexpr size_t W = MegaZKFlavorT::REPEATED_COMMITMENTS.first.duplicate_start -
MegaZKFlavorT::REPEATED_COMMITMENTS.first.original_start;
constexpr size_t S = MegaZKFlavorT::NUM_SHIFTED_ENTITIES;
constexpr size_t TU = TranslatorFlavor::NUM_PCS_UNSHIFTED;
constexpr size_t TRANS_UNSHIFTED_SKIP = TranslatorFlavor::REPEATED_COMMITMENTS.first.original_start + 1;
constexpr size_t TRANS_SHIFTED_SKIP =
return RepeatedCommitmentsData(
P,
P + W + TU,
S,
P + W + TRANS_UNSHIFTED_SKIP,
P + W + TU + S + TRANS_SHIFTED_SKIP,
}()
static constexpr RepeatedCommitmentsData REPEATED_COMMITMENTS
static constexpr size_t NUM_PCS_UNSHIFTED
static constexpr size_t NUM_PCS_TO_BE_SHIFTED

Definition at line 66 of file batched_honk_translator_verifier.hpp.

◆ trans_evals

template<typename Curve >
TransFlavor::AllValues bb::BatchedHonkTranslatorVerifier_< Curve >::trans_evals
private

Definition at line 163 of file batched_honk_translator_verifier.hpp.

◆ transcript

template<typename Curve >
std::shared_ptr<Transcript> bb::BatchedHonkTranslatorVerifier_< Curve >::transcript
private

Definition at line 148 of file batched_honk_translator_verifier.hpp.

◆ translator_relation_parameters

template<typename Curve >
bb::RelationParameters<FF> bb::BatchedHonkTranslatorVerifier_< Curve >::translator_relation_parameters
private

Definition at line 158 of file batched_honk_translator_verifier.hpp.


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