48 static constexpr bool HasZK =
false;
98 Challenges challenges;
107 transcript->enable_manifest();
110 transcript->load_proof(stdlib_proof);
112 transcript->add_to_hash_buffer(
"avm_vk_hash", vk_hash);
115 for (
size_t j = 0; j < public_inputs[i].size(); j++) {
117 public_inputs[i][j]);
121 for (
const auto& wire_label : challenges.get_wires_labels()) {
122 [[maybe_unused]]
auto _ = transcript->template receive_from_prover<StdlibCommitment>(wire_label);
125 [[maybe_unused]]
auto [_beta, _gamma] =
128 for (
const auto& derived_label : challenges.get_derived_labels()) {
129 [[maybe_unused]]
auto _ = transcript->template receive_from_prover<StdlibCommitment>(derived_label);
132 [[maybe_unused]]
const FF _alpha = transcript->template get_challenge<FF>(
"Sumcheck:alpha");
134 [[maybe_unused]]
const FF _initial_gate_challenge =
135 transcript->template get_challenge<FF>(
"Sumcheck:gate_challenge");
139 std::string round_univariate_label =
"Sumcheck:univariate_" +
std::to_string(i);
140 [[maybe_unused]]
auto _ =
141 transcript->template receive_from_prover<SumcheckUnivariate>(round_univariate_label);
142 [[maybe_unused]]
FF _round_challenge =
143 transcript->template get_challenge<FF>(
"Sumcheck:u_" +
std::to_string(i));
146 [[maybe_unused]]
auto _evals =
147 transcript->template receive_from_prover<std::array<FF, NUM_ALL_ENTITIES>>(
"Sumcheck:evaluations");
149 [[maybe_unused]]
auto _unshifted_challenges =
150 transcript->template get_challenges<FF>(challenges.get_unshifted_labels());
152 [[maybe_unused]]
const FF _gemini_batching_challenge = transcript->template get_challenge<FF>(
"rho");
155 [[maybe_unused]]
auto _ =
156 transcript->template receive_from_prover<StdlibCommitment>(
"Gemini:FOLD_" +
std::to_string(i));
159 [[maybe_unused]]
const FF _gemini_evaluation_challenge = transcript->template get_challenge<FF>(
"Gemini:r");
162 [[maybe_unused]]
auto _ = transcript->template receive_from_prover<FF>(
"Gemini:a_" +
std::to_string(i));
165 [[maybe_unused]]
const FF _shplonk_batching_challenge =
166 transcript->template get_challenge<FF>(
"Shplonk:nu");
168 [[maybe_unused]]
auto _shplonk_q = transcript->template receive_from_prover<StdlibCommitment>(
"Shplonk:Q");
170 [[maybe_unused]]
const FF _shplonk_evaluation_challenge =
171 transcript->template get_challenge<FF>(
"Shplonk:z");
173 [[maybe_unused]]
auto _kzg_w = transcript->template receive_from_prover<StdlibCommitment>(
"KZG:W");
190 transcript->add_element_frs_to_hash_buffer(
192 std::span(stdlib_proof)
197 return transcript->template get_challenge<stdlib::field_t<Builder>>(
"final_transcript_state");
#define AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED
#define AVM_NUM_PUBLIC_INPUT_COLUMNS
Common transcript class for both parties. Stores the data for the current round, as well as the manif...
Simple stdlib verification key class for fixed-size circuits (ECCVM, Translator, AVM).
Simple verification key class for fixed-size circuits (ECCVM, Translator, AVM).
Representation of the Grumpkin Verifier Commitment Key inside a bn254 circuit.
tuple_cat_t< MainRelations_< FF_ >, LookupRelations_< FF_ > > Relations_
static constexpr size_t COMPUTED_AVM_PROOF_LENGTH_IN_FIELDS
static constexpr size_t NUM_SUBRELATIONS
FixedVKAndHash_< PrecomputedEntities< Commitment >, FF, typename constraining::AvmHardCodedVKAndHash > VerificationKey
Verification key of the AVM. It is fixed and reconstructed from precomputed values.
AvmFlavorSettings::VerifierCommitmentKey VerifierCommitmentKey
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
static constexpr size_t NUM_ALL_ENTITIES
A field element for each entity of the flavor. These entities represent the prover polynomials evalua...
static std::pair< stdlib::field_t< Builder >, std::shared_ptr< TemplatedTranscript< Builder > > > hash_avm_transcript_for_testing(Builder &builder, const stdlib::Proof< Builder > &stdlib_proof, const std::vector< std::vector< stdlib::field_t< Builder > > > &public_inputs)
Testing method to hash the transcript after having replicated the operations performed on the AVM tra...
static stdlib::field_t< Builder > pad_and_hash_avm_transcript(const std::shared_ptr< TemplatedTranscript< Builder > > &transcript, const stdlib::Proof< Builder > &stdlib_proof)
Hash a transcript that has recorded the operations performed during AVM proof verification.
static stdlib::field_t< Builder > hash_avm_transcript(Builder &builder, const stdlib::Proof< Builder > &stdlib_proof, const std::vector< std::vector< stdlib::field_t< Builder > > > &public_inputs)
Construct a transcript replicating the operations performed on the AVM transcript during proof verifi...
static std::shared_ptr< TemplatedTranscript< Builder > > perform_avm_transcript_operations(Builder &builder, const stdlib::Proof< Builder > &stdlib_proof, const std::vector< std::vector< stdlib::field_t< Builder > > > &public_inputs, const bool enable_manifest=false)
Replicate the operations performed on the AVM transcript during proof verification.
static stdlib::field_t< Builder > hash_avm_transcript(const std::shared_ptr< TemplatedTranscript< Builder > > &transcript, const stdlib::Proof< Builder > &stdlib_proof)
Hash the AVM verifier transcript after having performed proof verification. Then, hash the transcript...
typename StdlibCurve::AffineElement StdlibCommitment
Curve::Element GroupElement
static constexpr size_t NUM_SUBRELATIONS
NativeFlavor::Relations_< FF > Relations
static constexpr size_t NUM_RELATIONS
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
static constexpr bool HasZK
static constexpr size_t NUM_ALL_ENTITIES
static constexpr bool USE_PADDING
std::array< FF, NUM_SUBRELATIONS - 1 > SubrelationSeparators
Curve::AffineElement Commitment
A simple wrapper around a vector of stdlib field elements representing a proof.
static field_t from_witness(Builder *ctx, const bb::fr &input)
Base class templates shared across Honk flavors.
constexpr std::size_t MAX_AVM_TRACE_LOG_SIZE
MegaCircuitBuilder_< field< Bn254FrParams > > MegaCircuitBuilder
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::string to_string(bb::avm2::ValueTag tag)
field_t< CircuitBuilder > ScalarField
Group::BaseField BaseField