forked from byt3bit/mimc-feistel_snark
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathr1_constraint.cpp
More file actions
106 lines (83 loc) · 1.92 KB
/
r1_constraint.cpp
File metadata and controls
106 lines (83 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#ifndef SNARKCS_CPP_
#define SNARKCS_CPP_
template<typename field_t>
constraint<field_t>::constraint()
{
}
template<typename field_t>
void constraint<field_t>::clear()
{
A.clear();
B.clear();
C.clear();
}
template<typename field_t>
void constraint<field_t>::reset_constraint(const linear_combination<field_t> a,
const linear_combination<field_t> b,
const linear_combination<field_t> c)
{
A.clear();
B.clear();
C.clear();
A = a;
B = b;
C = c;
}
template<typename field_t>
void constraint_system<field_t>::add_constraint(const constraint<field_t> constr)
{
constraints.emplace_back(constr);
}
template<typename field_t>
constraint<field_t>& constraint_system<field_t>::operator[](const size_t i)
{
return constraints[i];
}
template<typename field_t>
snarkcs<field_t>::snarkcs() {}
template<typename field_t>
void snarkcs<field_t>::add_constraint(const constraint<field_t> constr)
{
r1_constraints.add_constraint(constr);
}
template<typename field_t>
void snarkcs<field_t>::add_witness(const field_t w)
{
witness.push_back(w);
}
template< typename field_t >
void snarkcs<field_t>::add_witness(std::initializer_list< field_t > l)
{
for(auto t: l)
this->witness.emplace_back(t);
}
template<typename field_t>
void snarkcs<field_t>::print_constraints() const
{
for(size_t i = 0; i < r1_constraints.constraints.size();i++)
{
std::cout<<r1_constraints.constraints[i]<<std::endl;
}
}
template<typename field_t>
void snarkcs<field_t>::print_witness() const
{
for(auto w: witness)
std::cout<<field_rep(w)<<std::endl;
}
template<typename field_t>
void snarkcs<field_t>::pop_constraint()
{
r1_constraints.constraints.pop_back();
}
template<typename field_t>
const size_t snarkcs<field_t>::constraint_size() const
{
return r1_constraints.constraints.size();
}
template<typename field_t>
const size_t snarkcs<field_t>::witness_size() const
{
return witness.size();
}
#endif