Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
circuit_schema.cpp
Go to the documentation of this file.
1#include "circuit_schema.hpp"
2
4
13CircuitSchema unpack_from_file(const std::string& filename)
14{
15 std::ifstream fin;
16 fin.open(filename, std::ios::ate | std::ios::binary);
17 if (!fin.is_open()) {
18 throw std::invalid_argument("file not found");
19 }
20 if (fin.tellg() == -1) {
21 throw std::invalid_argument("something went wrong");
22 }
23
24 uint64_t fsize = static_cast<uint64_t>(fin.tellg());
25 fin.seekg(0, std::ios_base::beg);
26
27 CircuitSchema cir;
28 char* encoded_data = new char[fsize];
29 fin.read(encoded_data, static_cast<std::streamsize>(fsize));
30 msgpack::unpack(encoded_data, fsize).get().convert(cir);
31 return cir;
32}
33
41CircuitSchema unpack_from_buffer(const msgpack::sbuffer& buf)
42{
43 CircuitSchema cir;
44 msgpack::unpack(buf.data(), buf.size()).get().convert(cir);
45 return cir;
46}
47
62{
63 info("variable_names = [");
64 for (uint32_t i = 0; i < static_cast<uint32_t>(cir.variables.size()); i++) {
65 if (cir.vars_of_interest.contains(i)) {
66 info('"', cir.vars_of_interest[i], "\",");
67 } else {
68 info("\"v", i, "\",");
69 }
70 }
71 info("]");
72 info("public = [");
73 for (auto i : cir.public_inps) {
74 info("[", i, ", ", cir.variables[i], "],");
75 }
76 info("]");
77 info("gates = [");
78
79 for (size_t i = 0; i < cir.selectors.size(); i++) {
80 info("[",
81 "[",
82 cir.selectors[0][i][0],
83 ", ",
84 cir.selectors[0][i][1],
85 ", ",
86 cir.selectors[0][i][2],
87 ", ",
88 cir.selectors[0][i][3],
89 ", ",
90 cir.selectors[0][i][4],
91 "], [",
92 cir.wires[0][i][0],
93 ", ",
94 cir.wires[0][i][1],
95 ", ",
96 cir.wires[0][i][2],
97 "]],");
98 }
99 info("]");
100}
101} // namespace smt_circuit_schema
void info(Args... args)
Definition log.hpp:70
uint8_t const * buf
Definition data_store.hpp:9
CircuitSchema unpack_from_file(const std::string &filename)
Get the CircuitSchema object.
CircuitSchema unpack_from_buffer(const msgpack::sbuffer &buf)
Get the CircuitSchema object.
void print_schema_for_use_in_python(CircuitSchema &cir)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
Serialized state of a circuit.
std::unordered_map< uint32_t, std::string > vars_of_interest
std::vector< uint32_t > public_inps
std::vector< std::vector< std::vector< bb::fr > > > selectors
std::vector< std::vector< std::vector< uint32_t > > > wires