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

Verifier class for all the presumcheck rounds, which are shared between the folding verifier and ultra verifier. More...

#include <oink_verifier.hpp>

Public Member Functions

 OinkVerifier (const std::shared_ptr< DeciderVK > &verification_key, const std::shared_ptr< Transcript > &transcript, std::string domain_separator="")
 
void verify ()
 Oink Verifier function that runs all the rounds of the verifier.
 
void execute_preamble_round ()
 Get circuit size, public input size, and public inputs from transcript.
 
void execute_wire_commitments_round ()
 Get the wire polynomials (part of the witness), with the exception of the fourth wire, which is only received after adding memory records. In the Goblin Flavor, we also receive the ECC OP wires and the DataBus columns.
 
void execute_sorted_list_accumulator_round ()
 Get sorted witness-table accumulator and fourth wire commitments.
 
void execute_log_derivative_inverse_round ()
 Get log derivative inverse polynomial and its commitment, if MegaFlavor.
 
void execute_grand_product_computation_round ()
 Compute lookup grand product delta and get permutation and lookup grand product commitments.
 
SubrelationSeparators generate_alphas_round ()
 

Public Attributes

std::shared_ptr< Transcripttranscript
 
std::shared_ptr< DeciderVKverification_key
 
std::string domain_separator
 
Flavor::CommitmentLabels comm_labels
 
bb::RelationParameters< FFrelation_parameters
 
WitnessCommitments witness_comms
 

Private Types

using DeciderVK = DeciderVerificationKey_< Flavor >
 
using WitnessCommitments = typename Flavor::WitnessCommitments
 
using Transcript = typename Flavor::Transcript
 
using FF = typename Flavor::FF
 
using Commitment = typename Flavor::Commitment
 
using SubrelationSeparators = typename Flavor::SubrelationSeparators
 

Detailed Description

template<IsUltraOrMegaHonk Flavor>
class bb::OinkVerifier< Flavor >

Verifier class for all the presumcheck rounds, which are shared between the folding verifier and ultra verifier.

This class contains execute_preamble_round(), execute_wire_commitments_round(), execute_sorted_list_accumulator_round(), execute_log_derivative_inverse_round(), and execute_grand_product_computation_round().

Template Parameters
Flavor

Definition at line 22 of file oink_verifier.hpp.

Member Typedef Documentation

◆ Commitment

template<IsUltraOrMegaHonk Flavor>
using bb::OinkVerifier< Flavor >::Commitment = typename Flavor::Commitment
private

Definition at line 27 of file oink_verifier.hpp.

◆ DeciderVK

template<IsUltraOrMegaHonk Flavor>
using bb::OinkVerifier< Flavor >::DeciderVK = DeciderVerificationKey_<Flavor>
private

Definition at line 23 of file oink_verifier.hpp.

◆ FF

template<IsUltraOrMegaHonk Flavor>
using bb::OinkVerifier< Flavor >::FF = typename Flavor::FF
private

Definition at line 26 of file oink_verifier.hpp.

◆ SubrelationSeparators

template<IsUltraOrMegaHonk Flavor>
using bb::OinkVerifier< Flavor >::SubrelationSeparators = typename Flavor::SubrelationSeparators
private

Definition at line 28 of file oink_verifier.hpp.

◆ Transcript

template<IsUltraOrMegaHonk Flavor>
using bb::OinkVerifier< Flavor >::Transcript = typename Flavor::Transcript
private

Definition at line 25 of file oink_verifier.hpp.

◆ WitnessCommitments

template<IsUltraOrMegaHonk Flavor>
using bb::OinkVerifier< Flavor >::WitnessCommitments = typename Flavor::WitnessCommitments
private

Definition at line 24 of file oink_verifier.hpp.

Constructor & Destructor Documentation

◆ OinkVerifier()

template<IsUltraOrMegaHonk Flavor>
bb::OinkVerifier< Flavor >::OinkVerifier ( const std::shared_ptr< DeciderVK > &  verification_key,
const std::shared_ptr< Transcript > &  transcript,
std::string  domain_separator = "" 
)
inline

Definition at line 38 of file oink_verifier.hpp.

Member Function Documentation

◆ execute_grand_product_computation_round()

template<IsUltraOrMegaHonk Flavor>
void bb::OinkVerifier< Flavor >::execute_grand_product_computation_round ( )

Compute lookup grand product delta and get permutation and lookup grand product commitments.

Definition at line 137 of file oink_verifier.cpp.

◆ execute_log_derivative_inverse_round()

template<IsUltraOrMegaHonk Flavor>
void bb::OinkVerifier< Flavor >::execute_log_derivative_inverse_round ( )

Get log derivative inverse polynomial and its commitment, if MegaFlavor.

Definition at line 114 of file oink_verifier.cpp.

◆ execute_preamble_round()

template<IsUltraOrMegaHonk Flavor>
void bb::OinkVerifier< Flavor >::execute_preamble_round ( )

Get circuit size, public input size, and public inputs from transcript.

Definition at line 47 of file oink_verifier.cpp.

◆ execute_sorted_list_accumulator_round()

template<IsUltraOrMegaHonk Flavor>
void bb::OinkVerifier< Flavor >::execute_sorted_list_accumulator_round ( )

Get sorted witness-table accumulator and fourth wire commitments.

Definition at line 93 of file oink_verifier.cpp.

◆ execute_wire_commitments_round()

template<IsUltraOrMegaHonk Flavor>
void bb::OinkVerifier< Flavor >::execute_wire_commitments_round ( )

Get the wire polynomials (part of the witness), with the exception of the fourth wire, which is only received after adding memory records. In the Goblin Flavor, we also receive the ECC OP wires and the DataBus columns.

Definition at line 67 of file oink_verifier.cpp.

◆ generate_alphas_round()

template<IsUltraOrMegaHonk Flavor>
Flavor::SubrelationSeparators bb::OinkVerifier< Flavor >::generate_alphas_round ( )

Definition at line 150 of file oink_verifier.cpp.

◆ verify()

template<IsUltraOrMegaHonk Flavor>
void bb::OinkVerifier< Flavor >::verify ( )

Oink Verifier function that runs all the rounds of the verifier.

Returns the witness commitments and relation_parameters. If used as a standalone function, the proof returned by the OinkProver must be loaded into the transcript of the OinkVerifier before calling OinkVerifier::verify()

Template Parameters
Flavor
Returns
OinkOutput<Flavor>

Definition at line 28 of file oink_verifier.cpp.

Member Data Documentation

◆ comm_labels

template<IsUltraOrMegaHonk Flavor>
Flavor::CommitmentLabels bb::OinkVerifier< Flavor >::comm_labels

Definition at line 34 of file oink_verifier.hpp.

◆ domain_separator

template<IsUltraOrMegaHonk Flavor>
std::string bb::OinkVerifier< Flavor >::domain_separator

Definition at line 33 of file oink_verifier.hpp.

◆ relation_parameters

template<IsUltraOrMegaHonk Flavor>
bb::RelationParameters<FF> bb::OinkVerifier< Flavor >::relation_parameters

Definition at line 35 of file oink_verifier.hpp.

◆ transcript

template<IsUltraOrMegaHonk Flavor>
std::shared_ptr<Transcript> bb::OinkVerifier< Flavor >::transcript

Definition at line 31 of file oink_verifier.hpp.

◆ verification_key

template<IsUltraOrMegaHonk Flavor>
std::shared_ptr<DeciderVK> bb::OinkVerifier< Flavor >::verification_key

Definition at line 32 of file oink_verifier.hpp.

◆ witness_comms

template<IsUltraOrMegaHonk Flavor>
WitnessCommitments bb::OinkVerifier< Flavor >::witness_comms

Definition at line 36 of file oink_verifier.hpp.


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