3#include "barretenberg/flavor/plonk_flavors.hpp"
4#include "barretenberg/plonk/composer/composer_lib.hpp"
5#include "barretenberg/plonk/proof_system/prover/prover.hpp"
6#include "barretenberg/plonk/proof_system/proving_key/proving_key.hpp"
7#include "barretenberg/plonk/proof_system/verification_key/verification_key.hpp"
8#include "barretenberg/plonk/proof_system/verifier/verifier.hpp"
9#include "barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp"
10#include "barretenberg/srs/factories/file_crs_factory.hpp"
20 static constexpr std::string_view NAME_STRING =
"StandardPlonk";
21 static constexpr size_t NUM_RESERVED_GATES = 4;
22 static constexpr size_t program_width = CircuitBuilder::program_width;
23 std::shared_ptr<plonk::proving_key> circuit_proving_key;
24 std::shared_ptr<plonk::verification_key> circuit_verification_key;
27 std::shared_ptr<barretenberg::srs::factories::CrsFactory<curve::BN254>> crs_factory_;
29 bool computed_witness =
false;
33 : crs_factory_(std::move(crs_factory))
37 : crs_factory_(std::move(crs_factory))
39 StandardComposer(std::shared_ptr<plonk::proving_key> p_key, std::shared_ptr<plonk::verification_key> v_key)
40 : circuit_proving_key(std::move(p_key))
41 , circuit_verification_key(std::move(v_key))
50 inline std::vector<SelectorProperties> standard_selector_properties()
52 std::vector<SelectorProperties> result{
53 {
"q_m",
false }, {
"q_c",
false }, {
"q_1",
false }, {
"q_2",
false }, {
"q_3",
false },
73 constexpr size_t g1_size = 64;
74 constexpr size_t fr_size = 32;
75 const size_t public_input_size = fr_size * num_public_inputs;
84 { .name =
"circuit_size", .num_bytes = 4, .derived_by_verifier =
true },
85 { .name =
"public_input_size", .num_bytes = 4, .derived_by_verifier =
true }
99 { .name =
"public_inputs", .num_bytes = public_input_size, .derived_by_verifier =
false },
100 { .name =
"W_1", .num_bytes = g1_size, .derived_by_verifier =
false },
101 { .name =
"W_2", .num_bytes = g1_size, .derived_by_verifier =
false },
102 { .name =
"W_3", .num_bytes = g1_size, .derived_by_verifier =
false },
109 { { .name =
"Z_PERM", .num_bytes = g1_size, .derived_by_verifier =
false } },
115 { { .name =
"T_1", .num_bytes = g1_size, .derived_by_verifier =
false },
116 { .name =
"T_2", .num_bytes = g1_size, .derived_by_verifier =
false },
117 { .name =
"T_3", .num_bytes = g1_size, .derived_by_verifier =
false } },
124 { .name =
"t", .num_bytes = fr_size, .derived_by_verifier =
true, .challenge_map_index = -1 },
125 { .name =
"w_1", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = 0 },
126 { .name =
"w_2", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = 1 },
127 { .name =
"w_3", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = 2 },
128 { .name =
"sigma_1", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = 3 },
129 { .name =
"sigma_2", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = 4 },
130 { .name =
"sigma_3", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = 5 },
131 { .name =
"q_1", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = 6 },
132 { .name =
"q_2", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = 7 },
133 { .name =
"q_3", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = 8 },
134 { .name =
"q_m", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = 9 },
135 { .name =
"q_c", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = 10 },
136 { .name =
"z_perm", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = 11 },
137 { .name =
"z_perm_omega", .num_bytes = fr_size, .derived_by_verifier =
false, .challenge_map_index = -1 },
140 STANDARD_MANIFEST_SIZE,
145 { { .name =
"PI_Z", .num_bytes = g1_size, .derived_by_verifier =
false },
146 { .name =
"PI_Z_OMEGA", .num_bytes = g1_size, .derived_by_verifier =
false } },
Definition: crs_factory.hpp:72
Definition: standard_circuit_builder.hpp:12
Definition: prover.hpp:12
Definition: standard_composer.hpp:14
plonk::Prover create_prover(const CircuitBuilder &circuit_constructor)
Definition: standard_composer.cpp:145
plonk::Verifier create_verifier(const CircuitBuilder &circuit_constructor)
Definition: standard_composer.cpp:122
std::shared_ptr< plonk::proving_key > compute_proving_key(const CircuitBuilder &circuit_constructor)
Definition: standard_composer.cpp:61
std::shared_ptr< plonk::verification_key > compute_verification_key(const CircuitBuilder &circuit_constructor)
Definition: standard_composer.cpp:95
void compute_witness(const CircuitBuilder &circuit_constructor, const size_t minimum_circuit_size=0)
Definition: standard_composer.cpp:26
static transcript::Manifest create_manifest(const size_t num_public_inputs)
Definition: standard_composer.hpp:71
Definition: verifier.hpp:9
Definition: plonk_flavors.hpp:9
Definition: manifest.hpp:11
Definition: widget.bench.cpp:13
Definition: manifest.hpp:28