Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
recursion_constraint.hpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: Planned, auditors: [], commit: }
3// external_1: { status: not started, auditors: [], commit: }
4// external_2: { status: not started, auditors: [], commit: }
5// =====================
6
7#pragma once
21#include <cstdint>
22#include <vector>
23
24namespace acir_format {
25
26using namespace bb;
27using namespace stdlib;
28
29// Used to specify the type of recursive verifier via the proof_type specified by the RecursiveAggregation opcode from
30// ACIR
31// Keep this enum values in sync with their noir counterpart constants defined in
32// noir-projects/noir-protocol-circuits/crates/types/src/constants.nr
34
61 std::vector<uint32_t> key;
62 std::vector<uint32_t> proof;
63 std::vector<uint32_t> public_inputs;
64 uint32_t key_hash;
65 uint32_t proof_type;
67
68 friend bool operator==(RecursionConstraint const& lhs, RecursionConstraint const& rhs) = default;
69};
70
98template <typename Builder>
101 GateCounter<Builder>& gate_counter,
102 std::vector<size_t>& gates_per_opcode,
103 [[maybe_unused]] const std::shared_ptr<IVCBase>& ivc_base,
104 const std::pair<std::vector<RecursionConstraint>, std::vector<size_t>>& honk_recursion_data,
105 const std::pair<std::vector<RecursionConstraint>, std::vector<size_t>>& avm_recursion_data,
106 const std::pair<std::vector<RecursionConstraint>, std::vector<size_t>>& hn_recursion_data,
107 const std::pair<std::vector<RecursionConstraint>, std::vector<size_t>>& chonk_recursion_data);
108
121 std::vector<size_t>& gates_per_opcode,
122 const std::pair<std::vector<RecursionConstraint>, std::vector<size_t>>& hn_recursion_data,
123 const std::shared_ptr<IVCBase>& ivc_base);
124
125} // namespace acir_format
Utility class for tracking the gate count of acir constraints.
AluTraceBuilder builder
Definition alu.test.cpp:124
void process_hn_recursion_constraints(MegaCircuitBuilder &builder, GateCounter< MegaCircuitBuilder > &gate_counter, std::vector< size_t > &gates_per_opcode, const std::pair< std::vector< RecursionConstraint >, std::vector< size_t > > &hn_recursion_data, const std::shared_ptr< IVCBase > &ivc_base)
Process HyperNova recursion constraints and complete kernel logic.
HonkRecursionConstraintsOutput< MegaCircuitBuilder > create_recursion_constraints(MegaCircuitBuilder &builder, GateCounter< MegaCircuitBuilder > &gate_counter, std::vector< size_t > &gates_per_opcode, const std::shared_ptr< IVCBase > &ivc_base, const std::pair< std::vector< RecursionConstraint >, std::vector< size_t > > &honk_recursion_data, const std::pair< std::vector< RecursionConstraint >, std::vector< size_t > > &avm_recursion_data, const std::pair< std::vector< RecursionConstraint >, std::vector< size_t > > &hn_recursion_data, const std::pair< std::vector< RecursionConstraint >, std::vector< size_t > > &chonk_recursion_data)
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
Container for the output of multiple recursive verifications.
RecursionConstraint struct contains information required to recursively verify a proof.
WitnessOrConstant< bb::fr > predicate
friend bool operator==(RecursionConstraint const &lhs, RecursionConstraint const &rhs)=default