Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
verifier_instance.hpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: not started, auditors: [], date: YYYY-MM-DD }
3// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5// =====================
6
7#pragma once
11
12namespace bb {
25template <IsUltraOrMegaHonk Flavor_> class VerifierInstance_ {
26 public:
27 using Flavor = Flavor_;
28 using FF = typename Flavor::FF;
36
37 std::shared_ptr<VerificationKey> vk;
38
39 bool is_complete = false; // whether this instance has been completely populated
40 std::vector<FF> public_inputs; // to be extracted from the corresponding proof
41
42 SubrelationSeparators alphas; // a challenge for each subrelation
44 std::vector<FF> gate_challenges;
45 // The target sum, which is typically nonzero for a ProtogalaxyProver's accumulator
47
50
51 VerifierInstance_() = default;
52 VerifierInstance_(std::shared_ptr<VerificationKey> vk)
53 : vk(vk)
54 {}
55
60 std::shared_ptr<VerificationKey> get_vk() const { return vk; }
61
62 FF hash_through_transcript(const std::string& domain_separator, Transcript& transcript) const
63 {
64 BB_ASSERT_EQ(is_complete, true, "Trying to hash a verifier instance that has not been completed.");
65
66 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_log_circuit_size",
67 this->vk->log_circuit_size);
68 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_num_public_inputs",
69 this->vk->num_public_inputs);
70 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_pub_inputs_offset",
71 this->vk->pub_inputs_offset);
72
73 for (const Commitment& commitment : this->vk->get_all()) {
74 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_precomputed_comm", commitment);
75 }
76 for (const Commitment& comm : witness_commitments.get_all()) {
77 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_wit_comm", comm);
78 }
79 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_alphas", this->alphas);
80 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_eta",
81 this->relation_parameters.eta);
82 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_eta_two",
83 this->relation_parameters.eta_two);
84 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_eta_three",
85 this->relation_parameters.eta_three);
86 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_beta",
87 this->relation_parameters.beta);
88 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_gamma",
89 this->relation_parameters.gamma);
90 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_public_input_delta",
91 this->relation_parameters.public_input_delta);
92 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_target_sum", this->target_sum);
93 transcript.add_to_independent_hash_buffer(domain_separator + "verifier_inst_gate_challenges",
94 this->gate_challenges);
95
96 return transcript.hash_independent_buffer();
97 }
98
100};
101
102} // namespace bb
#define BB_ASSERT_EQ(actual, expected,...)
Definition assert.hpp:88
A container for commitment labels.
The verification key is responsible for storing the commitments to the precomputed (non-witness) poly...
WitnessEntities< Commitment > WitnessCommitments
A container for the witness commitments.
Curve::ScalarField FF
bb::VerifierCommitmentKey< Curve > VerifierCommitmentKey
std::array< FF, NUM_SUBRELATIONS - 1 > SubrelationSeparators
NativeTranscript Transcript
Curve::AffineElement Commitment
The VerifierInstance encapsulates all the necessary information for a Mega Honk Verifier to verify a ...
typename Flavor::WitnessCommitments WitnessCommitments
VerifierInstance_()=default
std::vector< FF > public_inputs
MSGPACK_FIELDS(vk, relation_parameters, alphas, is_complete, gate_challenges, target_sum, witness_commitments)
std::vector< FF > gate_challenges
typename Flavor::FF FF
typename Flavor::CommitmentLabels CommitmentLabels
WitnessCommitments witness_commitments
std::shared_ptr< VerificationKey > get_vk() const
Get the verification key.
VerifierInstance_(std::shared_ptr< VerificationKey > vk)
typename Flavor::Transcript Transcript
typename Flavor::SubrelationSeparators SubrelationSeparators
std::shared_ptr< VerificationKey > vk
CommitmentLabels commitment_labels
typename Flavor::Commitment Commitment
SubrelationSeparators alphas
typename Flavor::VerifierCommitmentKey VerifierCommitmentKey
RelationParameters< FF > relation_parameters
FF hash_through_transcript(const std::string &domain_separator, Transcript &transcript) const
typename Flavor::VerificationKey VerificationKey
Base class templates for structures that contain data parameterized by the fundamental polynomials of...
Entry point for Barretenberg command-line interface.
Container for parameters used by the grand product (permutation, lookup) Honk relations.