barretenberg
Loading...
Searching...
No Matches
block_constraint.hpp
1#pragma once
2#include "barretenberg/dsl/types.hpp"
3#include "barretenberg/stdlib/primitives/field/field.hpp"
4#include <cstdint>
5#include <vector>
6
7namespace acir_format {
8
9struct MemOp {
10 uint8_t access_type;
11 poly_triple index;
12 poly_triple value;
13};
14
15enum BlockType {
16 ROM = 0,
17 RAM = 1,
18};
19
21 std::vector<poly_triple> init;
22 std::vector<MemOp> trace;
23 BlockType type;
24};
25
26template <typename Builder>
27void create_block_constraints(Builder& builder,
28 const BlockConstraint constraint,
29 bool has_valid_witness_assignments = true);
30
31template <typename B> inline void read(B& buf, MemOp& mem_op)
32{
33 using serialize::read;
34 read(buf, mem_op.access_type);
35 read(buf, mem_op.index);
36 read(buf, mem_op.value);
37}
38
39template <typename B> inline void write(B& buf, MemOp const& mem_op)
40{
41 using serialize::write;
42 write(buf, mem_op.access_type);
43 write(buf, mem_op.index);
44 write(buf, mem_op.value);
45}
46
47template <typename B> inline void read(B& buf, BlockConstraint& constraint)
48{
49 using serialize::read;
50 read(buf, constraint.init);
51 read(buf, constraint.trace);
52 uint8_t type;
53 read(buf, type);
54 constraint.type = static_cast<BlockType>(type);
55}
56
57template <typename B> inline void write(B& buf, BlockConstraint const& constraint)
58{
59 using serialize::write;
60 write(buf, constraint.init);
61 write(buf, constraint.trace);
62 write(buf, static_cast<uint8_t>(constraint.type));
63}
64} // namespace acir_format
Definition: ultra_circuit_builder.hpp:31
Definition: block_constraint.hpp:20
Definition: block_constraint.hpp:9