30template <
class Curve = curve::BN254>
33 auto mock_commitment = Curve::AffineElement::one();
35 for (
size_t i = 0; i < num_commitments; ++i) {
36 for (
const fr& val : mock_commitment_frs) {
37 fields.emplace_back(val);
49template <
class FF = curve::BN254::ScalarField>
51 const size_t& num_elements,
54 for (
size_t i = 0; i < num_elements; ++i) {
55 std::vector<fr> field_elements =
value.has_value()
58 fields.insert(fields.end(), field_elements.begin(), field_elements.end());
72 typename PublicInputs::Builder
builder;
73 PublicInputs::add_default(
builder);
76 populate_field_elements<fr>(proof, inner_public_inputs_size);
79 for (
const auto& pub :
builder.public_inputs()) {
80 proof.emplace_back(
builder.get_variable(pub));
103 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
106 populate_field_elements<FF>(proof, 1);
111 populate_field_elements<FF>(proof, TOTAL_SIZE_SUMCHECK_UNIVARIATES);
118 populate_field_elements<FF>(proof, 1);
121 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
124 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
127 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
130 populate_field_elements<FF>(proof, 1);
134 const size_t NUM_GEMINI_FOLD_COMMITMENTS = const_proof_log_n - 1;
135 populate_field_elements_for_mock_commitments<Curve>(proof, NUM_GEMINI_FOLD_COMMITMENTS);
138 const size_t NUM_GEMINI_FOLD_EVALUATIONS = const_proof_log_n;
139 populate_field_elements<FF>(proof, NUM_GEMINI_FOLD_EVALUATIONS);
143 populate_field_elements<FF>(proof, 1);
146 populate_field_elements<FF>(proof, 1);
151 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
155 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
157 populate_field_elements_for_mock_commitments<Curve>(proof, 1);
170 HonkProof oink_proof = create_mock_oink_proof<Flavor, PublicInputs>(inner_public_inputs_size);
171 HonkProof decider_proof = create_mock_decider_proof<Flavor>();
173 proof.reserve(oink_proof.size() + decider_proof.size());
174 proof.insert(proof.end(), oink_proof.begin(), oink_proof.end());
175 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
177 if constexpr (HasIPAAccumulator<Flavor>) {
179 proof.insert(proof.end(), ipa_proof.begin(), ipa_proof.end());
191 HonkProof proof = create_mock_oink_proof<Flavor, PublicInputs>();
194 populate_field_elements<fr>(proof, CONST_PG_LOG_N,
fr::zero());
197 size_t NUM_COEFF_COMBINER_QUOTIENT =
199 populate_field_elements<fr>(proof, NUM_COEFF_COMBINER_QUOTIENT,
fr::zero());
212 proof.reserve(MERGE_PROOF_SIZE);
214 uint32_t mock_shift_size = 5;
217 populate_field_elements<fr>(proof, 1,
fr{ mock_shift_size });
221 const size_t NUM_TRANSCRIPT_ENTITIES = 8;
222 const size_t NUM_TRANSCRIPT_EVALUATIONS = 8;
245 HonkProof mega_proof = create_mock_honk_proof<MegaZKFlavor, stdlib::recursion::honk::HidingKernelIO<Builder>>(
246 inner_public_inputs_size);
251 ClientIVC::Proof civc_proof{ mega_proof, { merge_proof, eccvm_proof, translator_proof } };
273 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, 1);
276 populate_field_elements<FF>(proof, 1);
279 for (
size_t idx = 0; idx < CONST_ECCVM_LOG_N; idx++) {
280 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, 1);
281 populate_field_elements<FF>(proof, 2);
288 populate_field_elements<FF>(proof, 1);
291 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, 1);
294 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, 1);
297 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, 1);
300 populate_field_elements<FF>(proof, 1);
303 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof,
304 CONST_ECCVM_LOG_N - 1);
307 populate_field_elements<FF>(proof, CONST_ECCVM_LOG_N);
310 populate_field_elements<FF>(proof, NUM_SMALL_IPA_EVALUATIONS);
313 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, 1);
316 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, 1);
319 populate_field_elements<FF>(proof, 1);
322 populate_field_elements<FF>(proof, 1);
325 populate_field_elements<FF>(proof, 1);
328 populate_field_elements<FF>(proof, 1);
331 populate_field_elements<FF>(proof, 1);
334 populate_field_elements<FF>(proof, 1);
337 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, 1);
340 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, 1);
343 populate_field_elements<FF>(proof, 1);
346 populate_field_elements<FF>(proof, 1);
349 populate_field_elements<FF>(proof, 1);
352 populate_field_elements<FF>(proof, 1);
355 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, 1);
374 populate_field_elements_for_mock_commitments<curve::Grumpkin>(
375 proof, CONST_ECCVM_LOG_N + CONST_ECCVM_LOG_N);
378 populate_field_elements_for_mock_commitments<curve::Grumpkin>(proof, 1);
381 populate_field_elements<curve::BN254::BaseField>(proof, 1);
402 populate_field_elements<BF>(proof, 1);
405 populate_field_elements_for_mock_commitments<Curve>(proof,
409 proof.insert(proof.end(), decider_proof.begin(), decider_proof.end());
423template <
typename Flavor,
class PublicInputs>
425 const size_t pub_inputs_offset,
426 const size_t inner_public_inputs_size)
431 honk_verification_key->num_public_inputs = inner_public_inputs_size + PublicInputs::PUBLIC_INPUTS_SIZE;
432 honk_verification_key->pub_inputs_offset = pub_inputs_offset;
434 for (
auto& commitment : honk_verification_key->get_all()) {
435 commitment = curve::BN254::AffineElement::one();
438 return honk_verification_key;
452 create_mock_honk_vk<Flavor, stdlib::recursion::honk::DefaultIO<typename Flavor::CircuitBuilder>>(
454 decider_verification_key->vk =
vk;
455 decider_verification_key->is_complete =
true;
456 decider_verification_key->gate_challenges =
459 for (
auto& commitment : decider_verification_key->witness_commitments.get_all()) {
460 commitment = curve::BN254::AffineElement::one();
463 return decider_verification_key;
469template HonkProof create_mock_oink_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(
472template HonkProof create_mock_oink_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
474template HonkProof create_mock_oink_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
476template HonkProof create_mock_oink_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
478template HonkProof create_mock_oink_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
490template HonkProof create_mock_honk_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>(
493template HonkProof create_mock_honk_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
495template HonkProof create_mock_honk_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<UltraCircuitBuilder>>(
497template HonkProof create_mock_honk_proof<UltraFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
499template HonkProof create_mock_honk_proof<UltraZKFlavor, stdlib::recursion::honk::DefaultIO<MegaCircuitBuilder>>(
505template HonkProof create_mock_pg_proof<MegaFlavor, stdlib::recursion::honk::HidingKernelIO<MegaCircuitBuilder>>();
511 const size_t,
const size_t,
const size_t);
514 const size_t,
const size_t,
const size_t);
536 const size_t,
const size_t,
const size_t);
#define BB_ASSERT_EQ(actual, expected,...)
typename Curve::ScalarField FF
static constexpr size_t NUM_ALL_ENTITIES
static constexpr size_t NUM_WITNESS_ENTITIES
static constexpr size_t PROOF_LENGTH_WITHOUT_PUB_INPUTS
MergeProver::MergeProof MergeProof
static constexpr size_t NUM_ALL_ENTITIES
static constexpr bool HasZK
static constexpr size_t NUM_WITNESS_ENTITIES
static constexpr size_t VIRTUAL_LOG_N
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
Child class of MegaFlavor that runs with ZK Sumcheck. See more in Sumcheck Outline.
static constexpr size_t NUM_WITNESS_ENTITIES
static constexpr size_t PROOF_LENGTH_WITHOUT_PUB_INPUTS
Child class of UltraFlavor that runs with ZK Sumcheck.
Manages the data that is propagated on the public inputs of an application/function circuit.
Manages the data that is propagated on the public inputs of a hiding kernel circuit.
Manages the data that is propagated on the public inputs of a kernel circuit.
The data that is propagated on the public inputs of a rollup circuit.
Base class templates for structures that contain data parameterized by the fundamental polynomials of...
std::vector< bb::fr > convert_to_bn254_frs(const T &val)
Conversion from transcript values to bb::frs.
constexpr T get_msb(const T in)
Entry point for Barretenberg command-line interface.
std::vector< fr > HonkProof
VerifierCommitmentKey< Curve > vk
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
A full proof for the IVC scheme containing a Mega proof showing correctness of the hiding circuit (wh...
std::vector< FF > to_field_elements() const
Serialize proof to field elements.
static field random_element(numeric::RNG *engine=nullptr) noexcept
static constexpr field zero()