Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
gate_data.hpp
Go to the documentation of this file.
1
// === AUDIT STATUS ===
2
// internal: { status: Complete, auditors: [Luke], commit: }
3
// external_1: { status: not started, auditors: [], commit: }
4
// external_2: { status: not started, auditors: [], commit: }
5
// =====================
6
7
#pragma once
8
#include "
barretenberg/ecc/curves/bn254/fr.hpp
"
9
#include <cstdint>
10
11
namespace
bb
{
12
13
// 3-wire addition gate: a*a_scaling + b*b_scaling + c*c_scaling + const_scaling = 0
14
template
<
typename
FF>
struct
add_triple_
{
15
uint32_t
a
;
16
uint32_t
b
;
17
uint32_t
c
;
18
FF
a_scaling
;
19
FF
b_scaling
;
20
FF
c_scaling
;
21
FF
const_scaling
;
22
};
23
24
// 4-wire addition gate: a*a_scaling + b*b_scaling + c*c_scaling + d*d_scaling + const_scaling = 0
25
template
<
typename
FF>
struct
add_quad_
{
26
uint32_t
a
;
27
uint32_t
b
;
28
uint32_t
c
;
29
uint32_t
d
;
30
FF
a_scaling
;
31
FF
b_scaling
;
32
FF
c_scaling
;
33
FF
d_scaling
;
34
FF
const_scaling
;
35
};
36
37
// 4-wire mul-add gate: a*b*mul_scaling + a*a_scaling + b*b_scaling + c*c_scaling + d*d_scaling + const_scaling = 0
38
template
<
typename
FF>
struct
mul_quad_
{
39
uint32_t
a
;
40
uint32_t
b
;
41
uint32_t
c
;
42
uint32_t
d
;
43
FF
mul_scaling
;
44
FF
a_scaling
;
45
FF
b_scaling
;
46
FF
c_scaling
;
47
FF
d_scaling
;
48
FF
const_scaling
;
49
};
50
51
// Arithmetic gate with standard selector naming: q_m*a*b + q_l*a + q_r*b + q_o*c + q_c = 0
52
template
<
typename
FF>
struct
arithmetic_triple_
{
53
uint32_t
a
;
54
uint32_t
b
;
55
uint32_t
c
;
56
FF
q_m
;
57
FF
q_l
;
58
FF
q_r
;
59
FF
q_o
;
60
FF
q_c
;
61
62
friend
bool
operator==
(
arithmetic_triple_<FF>
const
& lhs,
arithmetic_triple_<FF>
const
& rhs) =
default
;
63
};
64
65
using
arithmetic_triple
=
arithmetic_triple_<bb::fr>
;
66
67
// Goblin ECCVM operation: stores op type, point coordinates (split into limbs), and scalar
68
struct
ecc_op_tuple
{
69
uint32_t
op
;
70
uint32_t
x_lo
;
71
uint32_t
x_hi
;
72
uint32_t
y_lo
;
73
uint32_t
y_hi
;
74
uint32_t
z_1
;
75
uint32_t
z_2
;
76
bool
return_is_infinity
;
77
};
78
79
// Embedded curve point addition: (x1, y1) + sign_coefficient * (x2, y2) = (x3, y3)
80
template
<
typename
FF>
struct
ecc_add_gate_
{
81
uint32_t
x1
;
82
uint32_t
y1
;
83
uint32_t
x2
;
84
uint32_t
y2
;
85
uint32_t
x3
;
86
uint32_t
y3
;
87
FF
sign_coefficient
;
88
};
89
90
// Embedded curve point doubling: 2 * (x1, y1) = (x3, y3)
91
template
<
typename
FF>
struct
ecc_dbl_gate_
{
92
uint32_t
x1
;
93
uint32_t
y1
;
94
uint32_t
x3
;
95
uint32_t
y3
;
96
};
97
98
// Databus lookup gate: reads value at index from calldata/returndata
99
template
<
typename
FF>
struct
databus_lookup_gate_
{
100
uint32_t
index
;
101
uint32_t
value
;
102
};
103
104
// External gate data for poseidon2 external round
105
template
<
typename
FF>
struct
poseidon2_external_gate_
{
106
uint32_t
a
;
107
uint32_t
b
;
108
uint32_t
c
;
109
uint32_t
d
;
110
size_t
round_idx
;
111
};
112
113
// Internal gate data for poseidon2 internal round
114
template
<
typename
FF>
struct
poseidon2_internal_gate_
{
115
uint32_t
a
;
116
uint32_t
b
;
117
uint32_t
c
;
118
uint32_t
d
;
119
size_t
round_idx
;
120
};
121
}
// namespace bb
fr.hpp
bb
Entry point for Barretenberg command-line interface.
Definition
api.hpp:5
bb::add_quad_
Definition
gate_data.hpp:25
bb::add_quad_::a
uint32_t a
Definition
gate_data.hpp:26
bb::add_quad_::b
uint32_t b
Definition
gate_data.hpp:27
bb::add_quad_::const_scaling
FF const_scaling
Definition
gate_data.hpp:34
bb::add_quad_::a_scaling
FF a_scaling
Definition
gate_data.hpp:30
bb::add_quad_::c_scaling
FF c_scaling
Definition
gate_data.hpp:32
bb::add_quad_::d
uint32_t d
Definition
gate_data.hpp:29
bb::add_quad_::b_scaling
FF b_scaling
Definition
gate_data.hpp:31
bb::add_quad_::c
uint32_t c
Definition
gate_data.hpp:28
bb::add_quad_::d_scaling
FF d_scaling
Definition
gate_data.hpp:33
bb::add_triple_
Definition
gate_data.hpp:14
bb::add_triple_::a
uint32_t a
Definition
gate_data.hpp:15
bb::add_triple_::const_scaling
FF const_scaling
Definition
gate_data.hpp:21
bb::add_triple_::b_scaling
FF b_scaling
Definition
gate_data.hpp:19
bb::add_triple_::c_scaling
FF c_scaling
Definition
gate_data.hpp:20
bb::add_triple_::c
uint32_t c
Definition
gate_data.hpp:17
bb::add_triple_::a_scaling
FF a_scaling
Definition
gate_data.hpp:18
bb::add_triple_::b
uint32_t b
Definition
gate_data.hpp:16
bb::arithmetic_triple_
Definition
gate_data.hpp:52
bb::arithmetic_triple_::q_m
FF q_m
Definition
gate_data.hpp:56
bb::arithmetic_triple_::q_o
FF q_o
Definition
gate_data.hpp:59
bb::arithmetic_triple_::q_r
FF q_r
Definition
gate_data.hpp:58
bb::arithmetic_triple_::q_c
FF q_c
Definition
gate_data.hpp:60
bb::arithmetic_triple_::c
uint32_t c
Definition
gate_data.hpp:55
bb::arithmetic_triple_::operator==
friend bool operator==(arithmetic_triple_< FF > const &lhs, arithmetic_triple_< FF > const &rhs)=default
bb::arithmetic_triple_::a
uint32_t a
Definition
gate_data.hpp:53
bb::arithmetic_triple_::q_l
FF q_l
Definition
gate_data.hpp:57
bb::arithmetic_triple_::b
uint32_t b
Definition
gate_data.hpp:54
bb::databus_lookup_gate_
Definition
gate_data.hpp:99
bb::databus_lookup_gate_::value
uint32_t value
Definition
gate_data.hpp:101
bb::databus_lookup_gate_::index
uint32_t index
Definition
gate_data.hpp:100
bb::ecc_add_gate_
Definition
gate_data.hpp:80
bb::ecc_add_gate_::x1
uint32_t x1
Definition
gate_data.hpp:81
bb::ecc_add_gate_::x2
uint32_t x2
Definition
gate_data.hpp:83
bb::ecc_add_gate_::y2
uint32_t y2
Definition
gate_data.hpp:84
bb::ecc_add_gate_::y1
uint32_t y1
Definition
gate_data.hpp:82
bb::ecc_add_gate_::y3
uint32_t y3
Definition
gate_data.hpp:86
bb::ecc_add_gate_::x3
uint32_t x3
Definition
gate_data.hpp:85
bb::ecc_add_gate_::sign_coefficient
FF sign_coefficient
Definition
gate_data.hpp:87
bb::ecc_dbl_gate_
Definition
gate_data.hpp:91
bb::ecc_dbl_gate_::x1
uint32_t x1
Definition
gate_data.hpp:92
bb::ecc_dbl_gate_::y1
uint32_t y1
Definition
gate_data.hpp:93
bb::ecc_dbl_gate_::x3
uint32_t x3
Definition
gate_data.hpp:94
bb::ecc_dbl_gate_::y3
uint32_t y3
Definition
gate_data.hpp:95
bb::ecc_op_tuple
Definition
gate_data.hpp:68
bb::ecc_op_tuple::y_hi
uint32_t y_hi
Definition
gate_data.hpp:73
bb::ecc_op_tuple::return_is_infinity
bool return_is_infinity
Definition
gate_data.hpp:76
bb::ecc_op_tuple::x_hi
uint32_t x_hi
Definition
gate_data.hpp:71
bb::ecc_op_tuple::y_lo
uint32_t y_lo
Definition
gate_data.hpp:72
bb::ecc_op_tuple::x_lo
uint32_t x_lo
Definition
gate_data.hpp:70
bb::ecc_op_tuple::op
uint32_t op
Definition
gate_data.hpp:69
bb::ecc_op_tuple::z_1
uint32_t z_1
Definition
gate_data.hpp:74
bb::ecc_op_tuple::z_2
uint32_t z_2
Definition
gate_data.hpp:75
bb::field< bb::Bn254FrParams >
bb::mul_quad_
Definition
gate_data.hpp:38
bb::mul_quad_::b
uint32_t b
Definition
gate_data.hpp:40
bb::mul_quad_::const_scaling
FF const_scaling
Definition
gate_data.hpp:48
bb::mul_quad_::a
uint32_t a
Definition
gate_data.hpp:39
bb::mul_quad_::mul_scaling
FF mul_scaling
Definition
gate_data.hpp:43
bb::mul_quad_::c_scaling
FF c_scaling
Definition
gate_data.hpp:46
bb::mul_quad_::d_scaling
FF d_scaling
Definition
gate_data.hpp:47
bb::mul_quad_::d
uint32_t d
Definition
gate_data.hpp:42
bb::mul_quad_::b_scaling
FF b_scaling
Definition
gate_data.hpp:45
bb::mul_quad_::a_scaling
FF a_scaling
Definition
gate_data.hpp:44
bb::mul_quad_::c
uint32_t c
Definition
gate_data.hpp:41
bb::poseidon2_external_gate_
Definition
gate_data.hpp:105
bb::poseidon2_external_gate_::a
uint32_t a
Definition
gate_data.hpp:106
bb::poseidon2_external_gate_::d
uint32_t d
Definition
gate_data.hpp:109
bb::poseidon2_external_gate_::round_idx
size_t round_idx
Definition
gate_data.hpp:110
bb::poseidon2_external_gate_::c
uint32_t c
Definition
gate_data.hpp:108
bb::poseidon2_external_gate_::b
uint32_t b
Definition
gate_data.hpp:107
bb::poseidon2_internal_gate_
Definition
gate_data.hpp:114
bb::poseidon2_internal_gate_::a
uint32_t a
Definition
gate_data.hpp:115
bb::poseidon2_internal_gate_::d
uint32_t d
Definition
gate_data.hpp:118
bb::poseidon2_internal_gate_::c
uint32_t c
Definition
gate_data.hpp:117
bb::poseidon2_internal_gate_::round_idx
size_t round_idx
Definition
gate_data.hpp:119
bb::poseidon2_internal_gate_::b
uint32_t b
Definition
gate_data.hpp:116
src
barretenberg
honk
execution_trace
gate_data.hpp
Generated by
1.9.8