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: not started, auditors: [], date: YYYY-MM-DD }
3// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5// =====================
6
7#pragma once
11#include <cstdint>
12#include <vector>
13
14namespace acir_format {
15
16// Used to specify the type of recursive verifier via the proof_type specified by the RecursiveAggregation opcode from
17// ACIR
18// Keep this enum values in sync with their noir counterpart constants defined in
19// noir-protocol-circuits/crates/types/src/constants.nr
21
59 std::vector<uint32_t> key;
60 std::vector<uint32_t> proof;
61 std::vector<uint32_t> public_inputs;
62 uint32_t key_hash;
63 uint32_t proof_type;
65
66 friend bool operator==(RecursionConstraint const& lhs, RecursionConstraint const& rhs) = default;
67
68 template <typename Builder>
70 const std::vector<uint32_t>& witness_indices)
71 {
73 result.reserve(witness_indices.size());
74 for (const auto& idx : witness_indices) {
76 }
77 return result;
78 }
79};
80
81template <typename B> inline void read(B& buf, RecursionConstraint& constraint)
82{
83 using serialize::read;
84 read(buf, constraint.key);
85 read(buf, constraint.proof);
86 read(buf, constraint.public_inputs);
87 read(buf, constraint.key_hash);
88 read(buf, constraint.predicate);
89}
90
91template <typename B> inline void write(B& buf, RecursionConstraint const& constraint)
92{
93 using serialize::write;
94 write(buf, constraint.key);
95 write(buf, constraint.proof);
96 write(buf, constraint.public_inputs);
97 write(buf, constraint.key_hash);
98 write(buf, constraint.predicate);
99}
100
101} // namespace acir_format
AluTraceBuilder builder
Definition alu.test.cpp:123
uint8_t const * buf
Definition data_store.hpp:9
void write(std::vector< uint8_t > &buf, ClientIVC::VerificationKey const &vk)
void read(uint8_t const *&it, ClientIVC::VerificationKey &vk)
void read(auto &it, msgpack_concepts::HasMsgPack auto &obj)
Automatically derived read for any object that defines .msgpack() (implicitly defined by MSGPACK_FIEL...
void write(auto &buf, const msgpack_concepts::HasMsgPack auto &obj)
Automatically derived write for any object that defines .msgpack() (implicitly defined by MSGPACK_FIE...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
RecursionConstraint struct contains information required to recursively verify a proof!
static std::vector< bb::stdlib::field_t< Builder > > fields_from_witnesses(Builder &builder, const std::vector< uint32_t > &witness_indices)
WitnessOrConstant< bb::fr > predicate
friend bool operator==(RecursionConstraint const &lhs, RecursionConstraint const &rhs)=default