Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
eccvm_recursive_flavor.hpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: Planned, auditors: [], commit: }
3// external_1: { status: not started, auditors: [], commit: }
4// external_2: { status: not started, auditors: [], commit: }
5// =====================
6
7#pragma once
12
13// NOLINTBEGIN(cppcoreguidelines-avoid-const-or-ref-data-members) ?
14
15namespace bb {
16
18 public:
19 using CircuitBuilder = UltraCircuitBuilder; // determines the arithmetisation of recursive verifier
27 using PCS = IPA<Curve>;
28
29 // Indicates that this flavor runs with non-ZK Sumcheck.
30 static constexpr bool HasZK = true;
31 // ECCVM proof size and its recursive verifier circuit are genuinely fixed, hence no padding is needed.
32 static constexpr bool USE_PADDING = ECCVMFlavor::USE_PADDING;
33
34 static constexpr size_t NUM_WIRES = ECCVMFlavor::NUM_WIRES;
35 // The number of multivariate polynomials on which a sumcheck prover sumcheck operates (including shifts). We often
36 // need containers of this size to hold related data, so we choose a name more agnostic than `NUM_POLYNOMIALS`.
37 // Note: this number does not include the individual sorted list polynomials.
39 // The number of polynomials precomputed to describe a circuit and to aid a prover in constructing a satisfying
40 // assignment of witnesses. We again choose a neutral name.
42 // The total number of witness entities not including shifts.
44
46 // define the tuple of Relations that comprise the Sumcheck relation
47 // Reuse the Relations from ECCVM
49
51 using SubrelationSeparators = std::array<FF, NUM_SUBRELATIONS - 1>;
52
54
55 // BATCHED_RELATION_PARTIAL_LENGTH = algebraic degree of sumcheck relation *after* multiplying by the `pow_zeta`
56 // random polynomial e.g. For \sum(x) [A(x) * B(x) + C(x)] * PowZeta(X), relation length = 2 and random relation
57 // length = 3
59 static constexpr size_t NUM_RELATIONS = std::tuple_size<Relations>::value;
60
66 public:
68 using Base::Base;
69 };
70
72
79
84
86 // Reuse the VerifierCommitments from ECCVM
88 // Reuse the transcript from ECCVM
90
91 // Proof type for recursive verification
93
95
96}; // NOLINTEND(cppcoreguidelines-avoid-const-or-ref-data-members)
97
98} // namespace bb
Common transcript class for both parties. Stores the data for the current round, as well as the manif...
A base class labelling all entities (for instance, all of the polynomials used by the prover during s...
A container for commitment labels.
static constexpr size_t NUM_SUBRELATIONS
static constexpr size_t NUM_ALL_ENTITIES
static constexpr size_t MAX_PARTIAL_RELATION_LENGTH
std::tuple< ECCVMTranscriptRelation< FF >, ECCVMPointTableRelation< FF >, ECCVMWnafRelation< FF >, ECCVMMSMRelation< FF >, ECCVMSetRelation< FF >, ECCVMLookupRelation< FF >, ECCVMBoolsRelation< FF > > Relations_
static constexpr size_t NUM_WITNESS_ENTITIES
static constexpr size_t NUM_PRECOMPUTED_ENTITIES
FixedVKAndHash_< PrecomputedEntities< Commitment >, BF, ECCVMHardcodedVKAndHash > VerificationKey
The verification key stores commitments to the precomputed polynomials used by the verifier.
static constexpr size_t NUM_WIRES
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
static constexpr bool USE_PADDING
static constexpr RepeatedCommitmentsData REPEATED_COMMITMENTS
A field element for each entity of the flavor. These entities represent the prover polynomials evalua...
std::array< FF, NUM_SUBRELATIONS - 1 > SubrelationSeparators
ECCVMFlavor::Relations_< FF > Relations
static constexpr RepeatedCommitmentsData REPEATED_COMMITMENTS
static constexpr size_t NUM_ALL_ENTITIES
static constexpr size_t NUM_WITNESS_ENTITIES
static constexpr size_t NUM_SUBRELATIONS
static constexpr size_t NUM_WIRES
static constexpr size_t NUM_RELATIONS
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
static constexpr size_t MAX_PARTIAL_RELATION_LENGTH
static constexpr bool USE_PADDING
static constexpr size_t NUM_PRECOMPUTED_ENTITIES
Simple stdlib verification key class for fixed-size circuits (ECCVM, Translator).
Definition flavor.hpp:382
Simple verification key class for fixed-size circuits (ECCVM, Translator).
Definition flavor.hpp:136
IPA (inner product argument) commitment scheme class.
Definition ipa.hpp:92
Wrapper holding a verification key and its precomputed hash.
Definition flavor.hpp:593
Representation of the Grumpkin Verifier Commitment Key inside a bn254 circuit.
A simple wrapper around a vector of stdlib field elements representing a proof.
Definition proof.hpp:19
cycle_group represents a group Element of the proving system's embedded curve, i.e....
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
UltraCircuitBuilder_< UltraExecutionTraceBlocks > UltraCircuitBuilder
Curve grumpkin in circuit setting.
Definition grumpkin.hpp:21
bigfield< Builder, bb::Bn254FqParams > ScalarField
Definition grumpkin.hpp:29
field_t< Builder > BaseField
Definition grumpkin.hpp:30