51 static constexpr bool HasZK =
false;
59 template <
typename FF>
78 static constexpr size_t NUM_SUBRELATIONS = compute_number_of_subrelations<Relations>();
88 static constexpr size_t num_frs_comm = FrCodec::calc_num_fields<Commitment>();
89 static constexpr size_t num_frs_fr = FrCodec::calc_num_fields<FF>();
112 q_poseidon2_external,
113 q_poseidon2_internal,
129 auto get_non_gate_selectors() {
return RefArray{ q_m, q_c, q_l, q_r, q_o, q_4 }; }
132 return RefArray{ q_lookup, q_arith, q_delta_range, q_elliptic,
133 q_memory, q_nnf, q_poseidon2_external, q_poseidon2_internal };
151 static auto get_labels() {
return std::vector<std::string>{}; }
175 auto get_wires() {
return RefArray{ w_l, w_r, w_o, w_4 }; };
191 auto get_shifted() {
return RefArray{ w_l_shift, w_r_shift, w_o_shift, w_4_shift, z_perm_shift }; };
202 template <
typename DataType,
bool HasZK_ = HasZK>
261 template <
bool HasZK_ = HasZK>
279 template <
bool HasZK_ = HasZK>
316 lookup_inverses =
"LOOKUP_INVERSES";
317 lookup_read_counts =
"LOOKUP_READ_COUNTS";
318 lookup_read_tags =
"LOOKUP_READ_TAGS";
326 q_lookup =
"Q_LOOKUP";
328 q_delta_range =
"Q_SORT";
329 q_elliptic =
"Q_ELLIPTIC";
330 q_memory =
"Q_MEMORY";
332 q_poseidon2_external =
"Q_POSEIDON2_EXTERNAL";
333 q_poseidon2_internal =
"Q_POSEIDON2_INTERNAL";
346 lagrange_first =
"LAGRANGE_FIRST";
347 lagrange_last =
"LAGRANGE_LAST";
356 template <
typename Commitment,
typename VerificationKey,
bool HasZK_ = HasZK>
364 precomputed = precomputed_in;
368 if (witness_commitments.has_value()) {
369 for (
auto [witness, witness_in] :
371 witness = witness_in;
375 this->w_l_shift = witness_commitments->w_l;
376 this->w_r_shift = witness_commitments->w_r;
377 this->w_o_shift = witness_commitments->w_o;
378 this->w_4_shift = witness_commitments->w_4;
379 this->z_perm_shift = witness_commitments->z_perm;
Common transcript class for both parties. Stores the data for the current round, as well as the manif...
CommitmentKey object over a pairing group 𝔾₁.
Base Native verification key class.
A container for storing the partially evaluated multivariates produced by sumcheck.
A container for polynomials handles used by the prover.
A template class for a reference array. Behaves as if std::array<T&, N> was possible.
A wrapper for Relations to expose methods used by the Sumcheck prover or verifier to add the contribu...
static constexpr size_t NUM_WIRES
A base class labelling all entities (for instance, all of the polynomials used by the prover during s...
DEFINE_COMPOUND_GET_ALL(MaskingEntities< DataType, HasZK_ >, PrecomputedEntities< DataType >, WitnessEntities< DataType >, ShiftedEntities< DataType >) auto get_unshifted()
A field element for each entity of the flavor. These entities represent the prover polynomials evalua...
A container for commitment labels.
ZK-specific entities (only used when HasZK = true)
A base class labelling precomputed entities and (ordered) subsets of interest.
auto get_gate_selectors()
bool operator==(const PrecomputedEntities &) const =default
DEFINE_FLAVOR_MEMBERS(DataType, q_m, q_c, q_l, q_r, q_o, q_4, q_lookup, q_arith, q_delta_range, q_elliptic, q_memory, q_nnf, q_poseidon2_external, q_poseidon2_internal, sigma_1, sigma_2, sigma_3, sigma_4, id_1, id_2, id_3, id_4, table_1, table_2, table_3, table_4, lagrange_first, lagrange_last) auto get_non_gate_selectors()
Class for ShiftedEntities, containing shifted witness polynomials.
DEFINE_FLAVOR_MEMBERS(DataType, w_l_shift, w_r_shift, w_o_shift, w_4_shift, z_perm_shift) auto get_shifted()
A container encapsulating all the commitments that the verifier receives (to precomputed polynomials ...
VerifierCommitments_(const std::shared_ptr< VerificationKey > &verification_key, const std::optional< WitnessEntities< Commitment > > &witness_commitments=std::nullopt)
DEFINE_FLAVOR_MEMBERS(DataType, w_l, w_r, w_o, w_4, z_perm, lookup_inverses, lookup_read_counts, lookup_read_tags) auto get_wires()
static constexpr RepeatedCommitmentsData REPEATED_COMMITMENTS
crypto::Poseidon2< crypto::Poseidon2Bn254ScalarFieldParams > HashFunction
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
static constexpr bool USE_PADDING
static constexpr size_t NUM_RELATIONS
static constexpr size_t NUM_PRECOMPUTED_ENTITIES
static constexpr bool HasZK
static constexpr bool USE_SHORT_MONOMIALS
static constexpr size_t FINAL_PCS_MSM_SIZE(size_t log_n=VIRTUAL_LOG_N)
static constexpr size_t num_frs_comm
Curve::AffineElement Commitment
static constexpr size_t num_frs_fr
static constexpr size_t MAX_PARTIAL_RELATION_LENGTH
static constexpr size_t NUM_SUBRELATIONS
static constexpr size_t VIRTUAL_LOG_N
std::tuple< bb::ArithmeticRelation< FF >, bb::UltraPermutationRelation< FF >, bb::LogDerivLookupRelation< FF >, bb::DeltaRangeConstraintRelation< FF >, bb::EllipticRelation< FF >, bb::MemoryRelation< FF >, bb::NonNativeFieldRelation< FF >, bb::Poseidon2ExternalRelation< FF >, bb::Poseidon2InternalRelation< FF > > Relations_
Curve::Element GroupElement
Relations_< FF > Relations
static constexpr size_t NUM_ALL_ENTITIES
static constexpr size_t NUM_UNSHIFTED_ENTITIES
static constexpr size_t NUM_SHIFTED_ENTITIES
static constexpr size_t NUM_WIRES
static constexpr size_t NUM_WITNESS_ENTITIES
Wrapper holding a verification key and its precomputed hash.
typename Group::element Element
typename Group::affine_element AffineElement
Base class templates shared across Honk flavors.
#define DEFINE_FLAVOR_MEMBERS(DataType,...)
Define the body of a flavor class, included each member and a pointer view with which to iterate the ...
Entry point for Barretenberg command-line interface.
UltraCircuitBuilder_< UltraExecutionTraceBlocks > UltraCircuitBuilder
RefArray< T,(Ns+...)> constexpr concatenate(const RefArray< T, Ns > &... ref_arrays)
Concatenates multiple RefArray objects into a single RefArray.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
The precomputed data needed to compute a Honk VK.