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
10#include <cstdint>
11#include <vector>
12
13namespace acir_format {
14
15// Used to specify the type of recursive verifier via the proof_type specified by the RecursiveAggregation opcode from
16// ACIR
17// Keep this enum values in sync with their noir counterpart constants defined in
18// noir-protocol-circuits/crates/types/src/constants.nr
20
58 std::vector<uint32_t> key;
59 std::vector<uint32_t> proof;
60 std::vector<uint32_t> public_inputs;
61 uint32_t key_hash;
62 uint32_t proof_type;
63
64 friend bool operator==(RecursionConstraint const& lhs, RecursionConstraint const& rhs) = default;
65
66 template <typename Builder>
68 const std::vector<uint32_t>& witness_indices)
69 {
71 result.reserve(witness_indices.size());
72 for (const auto& idx : witness_indices) {
74 }
75 return result;
76 }
77};
78
79template <typename B> inline void read(B& buf, RecursionConstraint& constraint)
80{
81 using serialize::read;
82 read(buf, constraint.key);
83 read(buf, constraint.proof);
84 read(buf, constraint.public_inputs);
85 read(buf, constraint.key_hash);
86}
87
88template <typename B> inline void write(B& buf, RecursionConstraint const& constraint)
89{
90 using serialize::write;
91 write(buf, constraint.key);
92 write(buf, constraint.proof);
93 write(buf, constraint.public_inputs);
94 write(buf, constraint.key_hash);
95}
96
97} // namespace acir_format
AluTraceBuilder builder
Definition alu.test.cpp:123
uint8_t const * buf
Definition data_store.hpp:9
void write(B &buf, MemOp const &mem_op)
void read(B &buf, MemOp &mem_op)
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)
friend bool operator==(RecursionConstraint const &lhs, RecursionConstraint const &rhs)=default