Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
decider_verification_key.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 {
20template <IsUltraOrMegaHonk Flavor> class DeciderVerificationKey_ {
21 public:
22 using FF = typename Flavor::FF;
30
31 std::shared_ptr<VerificationKey> vk;
32
33 bool is_complete = false; // whether this instance has been completely populated
34 std::vector<FF> public_inputs; // to be extracted from the corresponding proof
35
36 SubrelationSeparators alphas; // a challenge for each subrelation
38 std::vector<FF> gate_challenges;
39 // The target sum, which is typically nonzero for a ProtogalaxyProver's accumulator
41
44
46 DeciderVerificationKey_(std::shared_ptr<VerificationKey> vk)
47 : vk(vk)
48 {}
49
50 FF hash_through_transcript(const std::string& domain_separator, Transcript& transcript) const
51 {
52 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_log_circuit_size",
53 this->vk->log_circuit_size);
54 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_num_public_inputs",
55 this->vk->num_public_inputs);
56 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_pub_inputs_offset",
57 this->vk->pub_inputs_offset);
58
59 for (const Commitment& commitment : this->vk->get_all()) {
60 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_precomputed_comm", commitment);
61 }
62 for (const Commitment& comm : witness_commitments.get_all()) {
63 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_wit_comm", comm);
64 }
65 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_alphas", this->alphas);
66 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_eta", this->relation_parameters.eta);
67 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_eta_two",
68 this->relation_parameters.eta_two);
69 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_eta_three",
70 this->relation_parameters.eta_three);
71 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_beta", this->relation_parameters.beta);
72 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_gamma",
73 this->relation_parameters.gamma);
74 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_public_input_delta",
75 this->relation_parameters.public_input_delta);
76 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_target_sum", this->target_sum);
77 transcript.add_to_independent_hash_buffer(domain_separator + "decider_vk_gate_challenges",
78 this->gate_challenges);
79
80 return transcript.hash_independent_buffer();
81 }
82
84};
85} // namespace bb
The DeciderVerificationKey encapsulates all the necessary information for a Mega Honk Verifier to ver...
typename Flavor::WitnessCommitments WitnessCommitments
typename Flavor::Transcript Transcript
typename Flavor::SubrelationSeparators SubrelationSeparators
typename Flavor::VerifierCommitmentKey VerifierCommitmentKey
typename Flavor::CommitmentLabels CommitmentLabels
DeciderVerificationKey_(std::shared_ptr< VerificationKey > vk)
typename Flavor::VerificationKey VerificationKey
typename Flavor::Commitment Commitment
RelationParameters< FF > relation_parameters
FF hash_through_transcript(const std::string &domain_separator, Transcript &transcript) const
std::shared_ptr< VerificationKey > vk
MSGPACK_FIELDS(vk, relation_parameters, alphas, is_complete, gate_challenges, target_sum, witness_commitments)
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
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.