barretenberg
Loading...
Searching...
No Matches
proving_key.hpp
1#pragma once
2#include <map>
3#include <unordered_map>
4
5#include "barretenberg/ecc/curves/bn254/bn254.hpp"
6#include "barretenberg/ecc/scalar_multiplication/runtime_states.hpp"
7#include "barretenberg/plonk/proof_system/constants.hpp"
8#include "barretenberg/plonk/proof_system/types/polynomial_manifest.hpp"
9#include "barretenberg/polynomials/evaluation_domain.hpp"
10#include "barretenberg/polynomials/polynomial.hpp"
11#include "barretenberg/srs/factories/crs_factory.hpp"
12
13#ifdef __wasm__
14#include "barretenberg/proof_system/polynomial_store/polynomial_store_cache.hpp"
15// #include "barretenberg/proof_system/polynomial_store/polynomial_store_wasm.hpp"
16#else
17#include "barretenberg/proof_system/polynomial_store/polynomial_store.hpp"
18#endif
19
20namespace proof_system::plonk {
21
23 uint32_t circuit_type;
24 uint32_t circuit_size;
25 uint32_t num_public_inputs;
26 bool contains_recursive_proof;
27 std::vector<uint32_t> recursive_proof_public_input_indices;
28 std::vector<uint32_t> memory_read_records;
29 std::vector<uint32_t> memory_write_records;
30#ifdef __wasm__
31 PolynomialStoreCache polynomial_store;
32 // PolynomialStoreWasm<barretenberg::fr> polynomial_store;
33#else
34 PolynomialStore<barretenberg::fr> polynomial_store;
35#endif
36};
37
39 public:
40 enum LookupType {
41 NONE,
42 ABSOLUTE_LOOKUP,
43 RELATIVE_LOOKUP,
44 };
45
48
49 proving_key(const size_t num_gates,
50 const size_t num_inputs,
52 CircuitType type = CircuitType::UNDEFINED);
53
54 proving_key(std::ostream& is, std::string const& crs_path);
55
56 void init();
57
58 CircuitType circuit_type;
59 size_t circuit_size;
60 size_t log_circuit_size;
61 size_t num_public_inputs;
62 bool contains_recursive_proof = false;
63 std::vector<uint32_t> recursive_proof_public_input_indices;
64 std::vector<uint32_t> memory_read_records; // Used by UltraPlonkComposer only; for ROM, RAM reads.
65 std::vector<uint32_t> memory_write_records; // Used by UltraPlonkComposer only, for RAM writes.
66
67#ifdef __wasm__
68 PolynomialStoreCache polynomial_store;
69 // PolynomialStoreWasm<barretenberg::fr> polynomial_store;
70#else
71 PolynomialStore<barretenberg::fr> polynomial_store;
72#endif
73
76
77 // The reference_string object contains the monomial SRS. We can access it using:
78 // Monomial SRS: reference_string->get_monomial_points()
79 std::shared_ptr<barretenberg::srs::factories::ProverCrs<curve::BN254>> reference_string;
80
81 barretenberg::polynomial quotient_polynomial_parts[plonk::NUM_QUOTIENT_PARTS];
82
83 PolynomialManifest polynomial_manifest;
84
85 static constexpr size_t min_thread_block = 4UL;
86};
87
88} // namespace proof_system::plonk
Definition: crs_factory.hpp:18
Definition: polynomial_store_cache.hpp:18
Definition: polynomial_store.hpp:12
Definition: polynomial_manifest.hpp:142
Definition: widget.bench.cpp:13
Definition: proving_key.hpp:22
Definition: proving_key.hpp:38
void init()
Definition: proving_key.cpp:72