Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
avm2_recursion_constraint.cpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: Completed, auditors: [Federico], commit: }
3// external_1: { status: not started, auditors: [], commit: }
4// external_2: { status: not started, auditors: [], commit: }
5// =====================
6
8
10
24
25#include <cstddef>
26
27namespace acir_format {
28
29using namespace bb;
30
40{
42
43 // Construct in-circuit representations of the proof and public inputs
44 const auto proof_fields = fields_from_witnesses(builder, input.proof);
45 const auto public_inputs_flattened = fields_from_witnesses(builder, input.public_inputs);
46
47 // Populate the proof fields with dummy values to prevent issues (e.g. points must be on curve).
48 if (builder.is_write_vk_mode()) {
49 populate_fields(builder, proof_fields, create_mock_avm_proof_without_pub_inputs(/*add_padding=*/true));
50 }
51
52 // Execute the TwoLayerAvmRecursiveVerifier recursive verifier
54
56 verifier.verify_proof(proof_fields, bb::avm2::PublicInputs::flat_to_columns(public_inputs_flattened));
57
58 return output;
59}
60
61} // namespace acir_format
#define BB_ASSERT_EQ(actual, expected,...)
Definition assert.hpp:83
Recursive verifier of AVM2 proofs that utilizes the Goblin mechanism for efficient EC operations.
TwoLayerAvmRecursiveVerifierOutput verify_proof(const stdlib::Proof< UltraCircuitBuilder > &stdlib_proof, const std::vector< std::vector< UltraFF > > &public_inputs) const
Recursively verify an AVM proof using Goblin and two layers of recursive verification.
AluTraceBuilder builder
Definition alu.test.cpp:124
Base class templates for structures that contain data parameterized by the fundamental polynomials of...
HonkRecursionConstraintOutput< bb::UltraCircuitBuilder > create_avm2_recursion_constraints_goblin(bb::UltraCircuitBuilder &builder, const RecursionConstraint &input)
Add constraints associated with recursive verification of an AVM2 proof using Goblin.
void populate_fields(Builder &builder, const std::vector< field_t< Builder > > &fields, const std::vector< bb::fr > &values)
========== WRITE_VK UTILITIES ========== ///
Definition utils.cpp:78
std::vector< field_t< Builder > > fields_from_witnesses(Builder &builder, std::span< const uint32_t > witness_indices)
========== ACIR TO BARRETENBERG ========== ///
Definition utils.cpp:16
HonkProof create_mock_avm_proof_without_pub_inputs(const bool add_padding)
Create a mock AVM proof without public inputs that has the correct structure but is not in general va...
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
RecursionConstraint struct contains information required to recursively verify a proof.
static std::vector< std::vector< FF_ > > flat_to_columns(const std::vector< FF_ > &input)
Definition avm_io.hpp:65
Output type for recursive ultra verification.