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

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

#include <batched_honk_translator_prover.hpp>

Public Types

using FF = MegaZKFlavor::FF
 
using Curve = MegaZKFlavor::Curve
 
using MegaZKCommitmentKey = MegaZKFlavor::CommitmentKey
 
using MegaZKProverInstance = ProverInstance_< MegaZKFlavor >
 
using MegaZKVK = MegaZKFlavor::VerificationKey
 
using MegaZKProverRound = SumcheckProverRound< MegaZKFlavor >
 
using MegaZKPartialEvals = MegaZKFlavor::PartiallyEvaluatedMultivariates
 
using MegaZKSubrelationSeparators = std::array< FF, MegaZKFlavor::NUM_SUBRELATIONS - 1 >
 
using TransProverRound = SumcheckProverRound< TranslatorFlavor >
 
using TransPartialEvals = TranslatorFlavor::PartiallyEvaluatedMultivariates
 
using TransSubrelationSeparators = std::array< FF, TranslatorFlavor::NUM_SUBRELATIONS - 1 >
 
using ZKData = ZKSumcheckData< MegaZKFlavor >
 
using Transcript = NativeTranscript
 
using SumcheckRoundUnivariate = bb::Univariate< FF, MegaZKFlavor::BATCHED_RELATION_PARTIAL_LENGTH >
 

Public Member Functions

 BatchedHonkTranslatorProver (std::shared_ptr< MegaZKProverInstance > mega_zk_instance, std::shared_ptr< MegaZKVK > mega_zk_vk, std::shared_ptr< Transcript > transcript)
 
HonkProof prove_mega_zk_oink ()
 
HonkProof prove (std::shared_ptr< TranslatorProvingKey > translator_proving_key)
 

Static Public Attributes

static constexpr size_t JOINT_LOG_N = TranslatorFlavor::CONST_TRANSLATOR_LOG_N
 

Private Member Functions

void execute_mega_zk_oink ()
 Run the MegaZK circuit's Oink phase.
 
void execute_translator_oink ()
 Run the translator's Oink phase on the shared transcript.
 
void execute_joint_sumcheck_rounds ()
 Execute the joint 17-round sumcheck.
 
void execute_joint_pcs ()
 Execute the joint Shplemini / KZG PCS over both circuits' polynomials.
 

Private Attributes

std::shared_ptr< MegaZKProverInstancemega_zk_inst
 
std::shared_ptr< MegaZKVKmega_zk_vk
 
std::shared_ptr< TranslatorProvingKeytranslator_key
 
std::shared_ptr< Transcripttranscript
 
bb::RelationParameters< FFtranslator_relation_parameters
 
ZKData zk_sumcheck_data
 
std::vector< FFjoint_challenge
 
MegaZKFlavor::AllValues mega_zk_claimed_evals
 
TranslatorFlavor::AllValues trans_claimed_evals
 
FF claimed_libra_evaluation
 

Detailed Description

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

Runs the MegaZK circuit (MegaZK) and translator pre-sumcheck phases on a shared transcript, then executes a single joint 17-round sumcheck and a single Shplemini/KZG reduction over both circuits' polynomials. The joint round univariate is:

U_joint(x) = U_MZK(x) + α^{K_H} · U_translator(x)

where K_H = MegaZKFlavor::NUM_SUBRELATIONS and α is drawn after all pre-sumcheck commitments.

The MegaZK circuit is treated as a 2^17 circuit via its RowDisablingPolynomial (padding_indicator = [1]*16 + [0]), so its contribution to round 16 is zero by construction.

Definition at line 32 of file batched_honk_translator_prover.hpp.

Member Typedef Documentation

◆ Curve

◆ FF

◆ MegaZKCommitmentKey

◆ MegaZKPartialEvals

◆ MegaZKProverInstance

◆ MegaZKProverRound

◆ MegaZKSubrelationSeparators

◆ MegaZKVK

◆ SumcheckRoundUnivariate

◆ Transcript

◆ TransPartialEvals

◆ TransProverRound

◆ TransSubrelationSeparators

◆ ZKData

Constructor & Destructor Documentation

◆ BatchedHonkTranslatorProver()

bb::BatchedHonkTranslatorProver::BatchedHonkTranslatorProver ( std::shared_ptr< MegaZKProverInstance mega_zk_instance,
std::shared_ptr< MegaZKVK mega_zk_vk,
std::shared_ptr< Transcript transcript 
)

Definition at line 12 of file batched_honk_translator_prover.cpp.

Member Function Documentation

◆ execute_joint_pcs()

void bb::BatchedHonkTranslatorProver::execute_joint_pcs ( )
private

Execute the joint Shplemini / KZG PCS over both circuits' polynomials.

All polynomials from both circuits are combined into a single PolynomialBatcher and passed to ShpleminiProver_<Curve>::prove() at the joint sumcheck challenge (u_0,...,u_16). The MegaZK circuit's 2^16-size polynomials are treated as 17-variable by constructing the batcher with joint_circuit_size = 2^17; the upper half is implicitly zero.

Definition at line 259 of file batched_honk_translator_prover.cpp.

◆ execute_joint_sumcheck_rounds()

void bb::BatchedHonkTranslatorProver::execute_joint_sumcheck_rounds ( )
private

Execute the joint 17-round sumcheck.

Draws "Sumcheck:alpha" — binding to all pre-sumcheck messages from both circuits — then runs 17 rounds, sending U_joint(x) = U_MZK(x) + α^{K_H} · U_translator(x) + L(x) where L(x) is the joint Libra masking univariate.

For rounds 0..mega_zk_log_n-1 ("real rounds"), the MegaZK contribution is computed via standard compute_univariate minus compute_disabled_contribution (row-disabling for ZK).

For rounds mega_zk_log_n..JOINT_LOG_N-1 ("virtual rounds"), the MegaZK polynomials are treated as zero-padded to 2^JOINT_LOG_N. The contribution is computed via compute_virtual_contribution (evaluating the relation at the only non-zero edge), scaled by the RDP factor from real rounds. After each virtual round, the partially-evaluated MegaZK polynomials are updated by multiplying by (1 - u_k), so the final claimed evaluations include the tau factor ∏(1 - u_k).

Definition at line 65 of file batched_honk_translator_prover.cpp.

◆ execute_mega_zk_oink()

void bb::BatchedHonkTranslatorProver::execute_mega_zk_oink ( )
private

Run the MegaZK circuit's Oink phase.

Commits to witnesses and permutation polys. Alpha is NOT drawn here: a single joint alpha ("Sumcheck:alpha") is drawn in execute_joint_sumcheck_rounds() after all pre-sumcheck commitments from both circuits are on the transcript.

Definition at line 26 of file batched_honk_translator_prover.cpp.

◆ execute_translator_oink()

void bb::BatchedHonkTranslatorProver::execute_translator_oink ( )
private

Run the translator's Oink phase on the shared transcript.

Delegates directly to TranslatorProver's public execute_*_round() methods, which handle VK hashing, wire commitments, and permutation grand products. This ensures the translator's commitment key is properly initialised and the proof transcript matches exactly what the standalone TranslatorProver would produce.

Definition at line 39 of file batched_honk_translator_prover.cpp.

◆ prove()

HonkProof bb::BatchedHonkTranslatorProver::prove ( std::shared_ptr< TranslatorProvingKey translator_proving_key)

Definition at line 311 of file batched_honk_translator_prover.cpp.

◆ prove_mega_zk_oink()

HonkProof bb::BatchedHonkTranslatorProver::prove_mega_zk_oink ( )

Definition at line 305 of file batched_honk_translator_prover.cpp.

Member Data Documentation

◆ claimed_libra_evaluation

FF bb::BatchedHonkTranslatorProver::claimed_libra_evaluation
private

Definition at line 73 of file batched_honk_translator_prover.hpp.

◆ joint_challenge

std::vector<FF> bb::BatchedHonkTranslatorProver::joint_challenge
private

Definition at line 70 of file batched_honk_translator_prover.hpp.

◆ JOINT_LOG_N

constexpr size_t bb::BatchedHonkTranslatorProver::JOINT_LOG_N = TranslatorFlavor::CONST_TRANSLATOR_LOG_N
staticconstexpr

Definition at line 50 of file batched_honk_translator_prover.hpp.

◆ mega_zk_claimed_evals

MegaZKFlavor::AllValues bb::BatchedHonkTranslatorProver::mega_zk_claimed_evals
private

Definition at line 71 of file batched_honk_translator_prover.hpp.

◆ mega_zk_inst

std::shared_ptr<MegaZKProverInstance> bb::BatchedHonkTranslatorProver::mega_zk_inst
private

Definition at line 60 of file batched_honk_translator_prover.hpp.

◆ mega_zk_vk

std::shared_ptr<MegaZKVK> bb::BatchedHonkTranslatorProver::mega_zk_vk
private

Definition at line 61 of file batched_honk_translator_prover.hpp.

◆ trans_claimed_evals

TranslatorFlavor::AllValues bb::BatchedHonkTranslatorProver::trans_claimed_evals
private

Definition at line 72 of file batched_honk_translator_prover.hpp.

◆ transcript

std::shared_ptr<Transcript> bb::BatchedHonkTranslatorProver::transcript
private

Definition at line 63 of file batched_honk_translator_prover.hpp.

◆ translator_key

std::shared_ptr<TranslatorProvingKey> bb::BatchedHonkTranslatorProver::translator_key
private

Definition at line 62 of file batched_honk_translator_prover.hpp.

◆ translator_relation_parameters

bb::RelationParameters<FF> bb::BatchedHonkTranslatorProver::translator_relation_parameters
private

Definition at line 66 of file batched_honk_translator_prover.hpp.

◆ zk_sumcheck_data

ZKData bb::BatchedHonkTranslatorProver::zk_sumcheck_data
private

Definition at line 69 of file batched_honk_translator_prover.hpp.


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