2#include "barretenberg/common/streams.hpp"
3#include "barretenberg/crypto/sha256/sha256.hpp"
4#include "barretenberg/ecc/curves/bn254/bn254.hpp"
5#include "barretenberg/ecc/curves/bn254/fr.hpp"
6#include "barretenberg/plonk/proof_system/types/polynomial_manifest.hpp"
7#include "barretenberg/polynomials/evaluation_domain.hpp"
8#include "barretenberg/serialize/msgpack.hpp"
9#include "barretenberg/srs/global_crs.hpp"
15 uint32_t circuit_type;
16 uint32_t circuit_size;
17 uint32_t num_public_inputs;
18 std::map<std::string, barretenberg::g1::affine_element> commitments;
19 bool contains_recursive_proof =
false;
20 std::vector<uint32_t> recursive_proof_public_input_indices;
23 MSGPACK_FIELDS(circuit_type,
27 contains_recursive_proof,
28 recursive_proof_public_input_indices);
34 return os <<
"key.circuit_type: " <<
static_cast<uint32_t
>(key.circuit_type) <<
"\n"
35 <<
"key.circuit_size: " <<
static_cast<uint32_t
>(key.circuit_size) <<
"\n"
36 <<
"key.num_public_inputs: " <<
static_cast<uint32_t
>(key.num_public_inputs) <<
"\n"
37 <<
"key.commitments: " << key.commitments <<
"\n"
38 <<
"key.contains_recursive_proof: " << key.contains_recursive_proof <<
"\n"
39 <<
"key.recursive_proof_public_input_indices: " << key.recursive_proof_public_input_indices <<
"\n";
42inline bool operator==(verification_key_data
const& lhs, verification_key_data
const& rhs)
44 return lhs.circuit_type == rhs.circuit_type && lhs.circuit_size == rhs.circuit_size &&
45 lhs.num_public_inputs == rhs.num_public_inputs && lhs.commitments == rhs.commitments;
56 CircuitType circuit_type);
64 sha256::hash sha256_hash();
69 .circuit_type =
static_cast<uint32_t
>(circuit_type),
70 .circuit_size =
static_cast<uint32_t
>(circuit_size),
71 .num_public_inputs =
static_cast<uint32_t
>(num_public_inputs),
72 .commitments = commitments,
73 .contains_recursive_proof = contains_recursive_proof,
74 .recursive_proof_public_input_indices = recursive_proof_public_input_indices,
78 CircuitType circuit_type;
80 size_t log_circuit_size;
81 size_t num_public_inputs;
85 std::shared_ptr<barretenberg::srs::factories::VerifierCrs<curve::BN254>> reference_string;
87 std::map<std::string, barretenberg::g1::affine_element> commitments;
95 bool contains_recursive_proof =
false;
96 std::vector<uint32_t> recursive_proof_public_input_indices;
97 size_t program_width = 3;
100 void msgpack_pack(
auto& packer)
const
103 static_cast<uint32_t
>(circuit_size),
104 static_cast<uint32_t
>(num_public_inputs),
106 contains_recursive_proof,
107 recursive_proof_public_input_indices };
110 void msgpack_unpack(
auto obj)
113 *
this =
verification_key{ std::move(data), barretenberg::srs::get_crs_factory()->get_verifier_crs() };
121 using serialize::read;
124 key =
verification_key{ std::move(vk_data), barretenberg::srs::get_crs_factory()->get_verifier_crs() };
127template <
typename B>
inline void read(B& buf, std::shared_ptr<verification_key>& key)
129 using serialize::read;
130 verification_key_data vk_data;
132 key = std::make_shared<verification_key>(std::move(vk_data),
133 barretenberg::srs::get_crs_factory()->get_verifier_crs());
136template <
typename B>
inline void write(B& buf, verification_key
const& key)
138 using serialize::write;
139 write(buf, key.as_data());
142inline std::ostream& operator<<(std::ostream& os, verification_key
const& key)
144 return os << key.as_data();
Definition: crs_factory.hpp:30
Definition: polynomial_manifest.hpp:142
Definition: widget.bench.cpp:13
Definition: verification_key.hpp:14
barretenberg::fr hash_native(size_t hash_index=0) const
Hash the verification key data.
Definition: verification_key.cpp:41
Definition: verification_key.hpp:48