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

Hiding-kernel-only Mega variant: runs with ZK Sumcheck and a reduced relation set. More...

#include <mega_zk_flavor.hpp>

Inheritance diagram for bb::MegaZKFlavor:
bb::MegaZKFlavor_Generated

Public Types

using Generated = MegaZKFlavor_Generated
 
using CircuitBuilder = MegaCircuitBuilder
 
using Curve = curve::BN254
 
using FF = Curve::ScalarField
 
using GroupElement = Curve::Element
 
using Commitment = Curve::AffineElement
 
using PCS = KZG< Curve >
 
using Polynomial = bb::Polynomial< FF >
 
using CommitmentKey = bb::CommitmentKey< Curve >
 
using Codec = FrCodec
 
using HashFunction = crypto::Poseidon2< crypto::Poseidon2Bn254ScalarFieldParams >
 
using Transcript = NativeTranscript
 
using Relations = Relations_< FF >
 
using SubrelationSeparator = FF
 
using AllValues = AllEntities< FF >
 
using ProverPolynomials = ProverPolynomialsBase< AllEntities< Polynomial >, AllValues, Polynomial >
 
using PrecomputedData = PrecomputedData_< Polynomial, NUM_PRECOMPUTED_ENTITIES >
 
using VerificationKey = NativeVerificationKey_< PrecomputedEntities< Commitment >, Codec, HashFunction, CommitmentKey >
 
using VKAndHash = VKAndHash_< FF, VerificationKey >
 
using PartiallyEvaluatedMultivariates = PartiallyEvaluatedMultivariatesBase< AllEntities< Polynomial >, ProverPolynomials, Polynomial >
 
template<size_t LENGTH>
using ProverUnivariates = AllEntities< bb::Univariate< FF, LENGTH > >
 
using ExtendedEdges = ProverUnivariates< MAX_PARTIAL_RELATION_LENGTH >
 
using WitnessCommitments = WitnessEntities< Commitment >
 
using CommitmentLabels = AllEntities< std::string >
 
- Public Types inherited from bb::MegaZKFlavor_Generated
enum class  EntityId : uint16_t {
  q_m = 0 , q_l = 1 , q_r = 2 , q_o = 3 ,
  q_4 = 4 , q_c = 5 , q_arith = 6 , q_bilinear_batched_eq = 7 ,
  sigma_1 = 8 , sigma_2 = 9 , sigma_3 = 10 , sigma_4 = 11 ,
  id_1 = 12 , id_2 = 13 , id_3 = 14 , id_4 = 15 ,
  lagrange_first = 16 , lagrange_last = 17 , q_delta_range = 18 , lagrange_ecc_op = 19 ,
  q_busread = 20 , kernel_calldata_indicator = 21 , databus_id = 22 , q_poseidon2_external = 23 ,
  q_poseidon2_external_initial = 24 , q_poseidon2_quad_internal = 25 , q_5 = 26 , q_poseidon2_quad_internal_terminal = 27 ,
  q_poseidon2_transition_entry = 28 , w_l = 29 , w_r = 30 , w_o = 31 ,
  w_4 = 32 , z_perm = 33 , ecc_op_wire_1 = 34 , ecc_op_wire_2 = 35 ,
  ecc_op_wire_3 = 36 , ecc_op_wire_4 = 37 , kernel_calldata = 38 , kernel_calldata_read_counts = 39 ,
  kernel_calldata_inverses = 40 , w_l_shift = 41 , w_r_shift = 42 , w_o_shift = 43 ,
  w_4_shift = 44 , z_perm_shift = 45
}
 
template<typename FF >
using Relations_ = std::tuple< bb::ArithmeticRelation< FF >, bb::BilinearOrBatchedEqCheckRelation< FF >, bb::UltraPermutationRelation< FF >, bb::DeltaRangeConstraintRelation< FF >, bb::EccOpQueueRelation< FF >, bb::MegaEccOpBoundaryRelation< FF >, bb::SingleBusLookupRelation< FF, EntityId::kernel_calldata, EntityId::kernel_calldata_read_counts, EntityId::kernel_calldata_inverses, EntityId::kernel_calldata_indicator, EntityId::q_l >, bb::Poseidon2ExternalRelation< FF >, bb::Poseidon2InitialExternalRelation< FF >, bb::Poseidon2QuadInternalRelation< FF >, bb::Poseidon2QuadInternalTerminalRelation< FF >, bb::Poseidon2TransitionEntryRelation< FF > >
 

Static Public Member Functions

static constexpr size_t FINAL_PCS_MSM_SIZE (size_t log_n=VIRTUAL_LOG_N)
 
static const CommitmentLabelscommitment_labels ()
 
- Static Public Member Functions inherited from bb::MegaZKFlavor_Generated
template<typename TraceBlocks >
static auto get_gate_blocks (TraceBlocks &blocks)
 
template<typename TraceBlocks >
static auto get_gate_blocks (TraceBlocks const &blocks)
 
template<typename TraceBlock >
static auto get_block_non_gate_selectors (TraceBlock &block)
 

Static Public Attributes

static constexpr size_t VIRTUAL_LOG_N = HIDING_KERNEL_LOG_N
 
static constexpr bool USE_SHORT_MONOMIALS = true
 
static constexpr bool USE_SIMD_SUMCHECK = true
 
static constexpr bool HasZK = true
 
static constexpr bool USE_PADDING = true
 
static constexpr size_t NUM_WIRES = CircuitBuilder::NUM_WIRES
 
static constexpr bool HasGeminiMasking = false
 
static constexpr size_t MAX_PARTIAL_RELATION_LENGTH = compute_max_partial_relation_length<Relations>()
 
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH = MAX_PARTIAL_RELATION_LENGTH + 2
 
static constexpr size_t NUM_RELATIONS = std::tuple_size_v<Relations>
 
static constexpr size_t NUM_SUBRELATIONS = compute_number_of_subrelations<Relations>()
 
static constexpr size_t TRACE_OFFSET = NUM_DISABLED_ROWS_IN_SUMCHECK
 
- Static Public Attributes inherited from bb::MegaZKFlavor_Generated
static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 29
 
static constexpr size_t NUM_WITNESS_ENTITIES = 12
 
static constexpr size_t NUM_MASKING_ENTITIES = 0
 
static constexpr size_t NUM_SHIFTED_ENTITIES = 5
 
static constexpr bool HasDataBus = true
 
static constexpr size_t NUM_BUS_COLUMNS = 1
 
static constexpr std::array< size_t, NUM_BUS_COLUMNSBUILDER_BUS_INDICES = { 0 }
 
static constexpr bool HasLogDerivLookup = false
 
static constexpr bool HasElliptic = false
 
static constexpr bool HasMemory = false
 
static constexpr bool HasNonNativeField = false
 
static constexpr bool HasEccOpQueue = true
 
static constexpr size_t NUM_COMMITTED_WITNESS_ENTITIES = NUM_WITNESS_ENTITIES + NUM_MASKING_ENTITIES
 
static constexpr size_t NUM_UNSHIFTED_ENTITIES = NUM_PRECOMPUTED_ENTITIES + NUM_COMMITTED_WITNESS_ENTITIES
 
static constexpr size_t NUM_ALL_ENTITIES = NUM_UNSHIFTED_ENTITIES + NUM_SHIFTED_ENTITIES
 
static constexpr std::array< DuplicatePair, NUM_SHIFTED_ENTITIESREPEATED_COMMITMENT_PAIRS
 
static constexpr RepeatedCommitmentsData REPEATED_COMMITMENTS
 
static constexpr std::array< GateKind, 9 > GATE_KINDS
 

Detailed Description

Hiding-kernel-only Mega variant: runs with ZK Sumcheck and a reduced relation set.

MegaZKFlavor is exclusively used in production to prove the Chonk hiding kernel (see Chonk::accumulate_hiding_kernel). Because the hiding kernel exercises a strict subset of Mega's gates, several relations are statically vacuous on every honest hiding-kernel trace and are dropped at the protocol level. See scripts/flavor-codegen/src/flavors/mega_zk.ts for the relation list and the justifications for each removal.

Sumcheck runs with Libra masking + row disabling for ZK, so the partial relation length is one larger than Mega's. Unlike UltraFlavorWithZK, MegaZK does not include a Gemini masking polynomial — in the batched Chonk flow the Translator provides masking at the joint circuit size (2^17 = HIDING_KERNEL_LOG_N rows).

Definition at line 41 of file mega_zk_flavor.hpp.

Member Typedef Documentation

◆ AllValues

Definition at line 105 of file mega_zk_flavor.hpp.

◆ CircuitBuilder

◆ Codec

Definition at line 53 of file mega_zk_flavor.hpp.

◆ Commitment

◆ CommitmentKey

◆ CommitmentLabels

Definition at line 120 of file mega_zk_flavor.hpp.

◆ Curve

Definition at line 46 of file mega_zk_flavor.hpp.

◆ ExtendedEdges

◆ FF

Definition at line 47 of file mega_zk_flavor.hpp.

◆ Generated

◆ GroupElement

◆ HashFunction

◆ PartiallyEvaluatedMultivariates

◆ PCS

Definition at line 50 of file mega_zk_flavor.hpp.

◆ Polynomial

Definition at line 51 of file mega_zk_flavor.hpp.

◆ PrecomputedData

◆ ProverPolynomials

◆ ProverUnivariates

template<size_t LENGTH>
using bb::MegaZKFlavor::ProverUnivariates = AllEntities<bb::Univariate<FF, LENGTH> >

Definition at line 116 of file mega_zk_flavor.hpp.

◆ Relations

Definition at line 71 of file mega_zk_flavor.hpp.

◆ SubrelationSeparator

Definition at line 84 of file mega_zk_flavor.hpp.

◆ Transcript

◆ VerificationKey

◆ VKAndHash

◆ WitnessCommitments

Member Function Documentation

◆ commitment_labels()

static const CommitmentLabels & bb::MegaZKFlavor::commitment_labels ( )
inlinestatic

Definition at line 121 of file mega_zk_flavor.hpp.

◆ FINAL_PCS_MSM_SIZE()

static constexpr size_t bb::MegaZKFlavor::FINAL_PCS_MSM_SIZE ( size_t  log_n = VIRTUAL_LOG_N)
inlinestaticconstexpr

Definition at line 100 of file mega_zk_flavor.hpp.

Member Data Documentation

◆ BATCHED_RELATION_PARTIAL_LENGTH

constexpr size_t bb::MegaZKFlavor::BATCHED_RELATION_PARTIAL_LENGTH = MAX_PARTIAL_RELATION_LENGTH + 2
staticconstexpr

Definition at line 77 of file mega_zk_flavor.hpp.

◆ HasGeminiMasking

constexpr bool bb::MegaZKFlavor::HasGeminiMasking = false
staticconstexpr

Definition at line 69 of file mega_zk_flavor.hpp.

◆ HasZK

constexpr bool bb::MegaZKFlavor::HasZK = true
staticconstexpr

Definition at line 63 of file mega_zk_flavor.hpp.

◆ MAX_PARTIAL_RELATION_LENGTH

constexpr size_t bb::MegaZKFlavor::MAX_PARTIAL_RELATION_LENGTH = compute_max_partial_relation_length<Relations>()
staticconstexpr

Definition at line 73 of file mega_zk_flavor.hpp.

◆ NUM_RELATIONS

constexpr size_t bb::MegaZKFlavor::NUM_RELATIONS = std::tuple_size_v<Relations>
staticconstexpr

Definition at line 80 of file mega_zk_flavor.hpp.

◆ NUM_SUBRELATIONS

constexpr size_t bb::MegaZKFlavor::NUM_SUBRELATIONS = compute_number_of_subrelations<Relations>()
staticconstexpr

Definition at line 83 of file mega_zk_flavor.hpp.

◆ NUM_WIRES

constexpr size_t bb::MegaZKFlavor::NUM_WIRES = CircuitBuilder::NUM_WIRES
staticconstexpr

Definition at line 65 of file mega_zk_flavor.hpp.

◆ TRACE_OFFSET

constexpr size_t bb::MegaZKFlavor::TRACE_OFFSET = NUM_DISABLED_ROWS_IN_SUMCHECK
staticconstexpr

Definition at line 95 of file mega_zk_flavor.hpp.

◆ USE_PADDING

constexpr bool bb::MegaZKFlavor::USE_PADDING = true
staticconstexpr

Definition at line 64 of file mega_zk_flavor.hpp.

◆ USE_SHORT_MONOMIALS

constexpr bool bb::MegaZKFlavor::USE_SHORT_MONOMIALS = true
staticconstexpr

Definition at line 59 of file mega_zk_flavor.hpp.

◆ USE_SIMD_SUMCHECK

constexpr bool bb::MegaZKFlavor::USE_SIMD_SUMCHECK = true
staticconstexpr

Definition at line 61 of file mega_zk_flavor.hpp.

◆ VIRTUAL_LOG_N

constexpr size_t bb::MegaZKFlavor::VIRTUAL_LOG_N = HIDING_KERNEL_LOG_N
staticconstexpr

Definition at line 58 of file mega_zk_flavor.hpp.


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