8#include "../columns.hpp"
17 static constexpr std::string_view
NAME =
"LOOKUP_ADDRESS_DERIVATION_SALTED_INITIALIZATION_HASH_POSEIDON2_0";
22 static constexpr Column COUNTS = Column::lookup_address_derivation_salted_initialization_hash_poseidon2_0_counts;
23 static constexpr Column INVERSES = Column::lookup_address_derivation_salted_initialization_hash_poseidon2_0_inv;
24 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
25 ColumnAndShifts::address_derivation_partial_address_domain_separator,
26 ColumnAndShifts::address_derivation_salt,
27 ColumnAndShifts::address_derivation_init_hash,
28 ColumnAndShifts::address_derivation_salted_init_hash,
29 ColumnAndShifts::address_derivation_const_two
31 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
32 ColumnAndShifts::poseidon2_hash_input_0,
33 ColumnAndShifts::poseidon2_hash_input_1,
34 ColumnAndShifts::poseidon2_hash_input_2,
35 ColumnAndShifts::poseidon2_hash_output,
36 ColumnAndShifts::poseidon2_hash_num_perm_rounds_rem
42template <
typename FF_>
49 static constexpr std::string_view
NAME =
"LOOKUP_ADDRESS_DERIVATION_SALTED_INITIALIZATION_HASH_POSEIDON2_1";
54 static constexpr Column COUNTS = Column::lookup_address_derivation_salted_initialization_hash_poseidon2_1_counts;
55 static constexpr Column INVERSES = Column::lookup_address_derivation_salted_initialization_hash_poseidon2_1_inv;
56 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
57 ColumnAndShifts::address_derivation_deployer_addr,
58 ColumnAndShifts::precomputed_zero,
59 ColumnAndShifts::precomputed_zero,
60 ColumnAndShifts::address_derivation_salted_init_hash
62 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
63 ColumnAndShifts::poseidon2_hash_input_0,
64 ColumnAndShifts::poseidon2_hash_input_1,
65 ColumnAndShifts::poseidon2_hash_input_2,
66 ColumnAndShifts::poseidon2_hash_output
72template <
typename FF_>
79 static constexpr std::string_view
NAME =
"LOOKUP_ADDRESS_DERIVATION_PARTIAL_ADDRESS_POSEIDON2";
84 static constexpr Column COUNTS = Column::lookup_address_derivation_partial_address_poseidon2_counts;
85 static constexpr Column INVERSES = Column::lookup_address_derivation_partial_address_poseidon2_inv;
86 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
87 ColumnAndShifts::address_derivation_sel,
88 ColumnAndShifts::address_derivation_partial_address_domain_separator,
89 ColumnAndShifts::address_derivation_class_id,
90 ColumnAndShifts::address_derivation_salted_init_hash,
91 ColumnAndShifts::address_derivation_partial_address
93 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
94 ColumnAndShifts::poseidon2_hash_start,
95 ColumnAndShifts::poseidon2_hash_input_0,
96 ColumnAndShifts::poseidon2_hash_input_1,
97 ColumnAndShifts::poseidon2_hash_input_2,
98 ColumnAndShifts::poseidon2_hash_output
104template <
typename FF_>
111 static constexpr std::string_view
NAME =
"LOOKUP_ADDRESS_DERIVATION_PUBLIC_KEYS_HASH_POSEIDON2_0";
116 static constexpr Column COUNTS = Column::lookup_address_derivation_public_keys_hash_poseidon2_0_counts;
117 static constexpr Column INVERSES = Column::lookup_address_derivation_public_keys_hash_poseidon2_0_inv;
118 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
119 ColumnAndShifts::address_derivation_public_keys_hash_domain_separator,
120 ColumnAndShifts::address_derivation_nullifier_key_x,
121 ColumnAndShifts::address_derivation_nullifier_key_y,
122 ColumnAndShifts::address_derivation_public_keys_hash,
123 ColumnAndShifts::address_derivation_const_five
125 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
126 ColumnAndShifts::poseidon2_hash_input_0,
127 ColumnAndShifts::poseidon2_hash_input_1,
128 ColumnAndShifts::poseidon2_hash_input_2,
129 ColumnAndShifts::poseidon2_hash_output,
130 ColumnAndShifts::poseidon2_hash_num_perm_rounds_rem
136template <
typename FF_>
143 static constexpr std::string_view
NAME =
"LOOKUP_ADDRESS_DERIVATION_PUBLIC_KEYS_HASH_POSEIDON2_1";
148 static constexpr Column COUNTS = Column::lookup_address_derivation_public_keys_hash_poseidon2_1_counts;
149 static constexpr Column INVERSES = Column::lookup_address_derivation_public_keys_hash_poseidon2_1_inv;
150 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
151 ColumnAndShifts::precomputed_zero,
152 ColumnAndShifts::address_derivation_incoming_viewing_key_x,
153 ColumnAndShifts::address_derivation_incoming_viewing_key_y,
154 ColumnAndShifts::address_derivation_public_keys_hash,
155 ColumnAndShifts::address_derivation_const_four
157 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
158 ColumnAndShifts::poseidon2_hash_input_0,
159 ColumnAndShifts::poseidon2_hash_input_1,
160 ColumnAndShifts::poseidon2_hash_input_2,
161 ColumnAndShifts::poseidon2_hash_output,
162 ColumnAndShifts::poseidon2_hash_num_perm_rounds_rem
168template <
typename FF_>
175 static constexpr std::string_view
NAME =
"LOOKUP_ADDRESS_DERIVATION_PUBLIC_KEYS_HASH_POSEIDON2_2";
180 static constexpr Column COUNTS = Column::lookup_address_derivation_public_keys_hash_poseidon2_2_counts;
181 static constexpr Column INVERSES = Column::lookup_address_derivation_public_keys_hash_poseidon2_2_inv;
182 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
183 ColumnAndShifts::precomputed_zero,
184 ColumnAndShifts::address_derivation_outgoing_viewing_key_x,
185 ColumnAndShifts::address_derivation_outgoing_viewing_key_y,
186 ColumnAndShifts::address_derivation_public_keys_hash,
187 ColumnAndShifts::address_derivation_const_three
189 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
190 ColumnAndShifts::poseidon2_hash_input_0,
191 ColumnAndShifts::poseidon2_hash_input_1,
192 ColumnAndShifts::poseidon2_hash_input_2,
193 ColumnAndShifts::poseidon2_hash_output,
194 ColumnAndShifts::poseidon2_hash_num_perm_rounds_rem
200template <
typename FF_>
207 static constexpr std::string_view
NAME =
"LOOKUP_ADDRESS_DERIVATION_PUBLIC_KEYS_HASH_POSEIDON2_3";
212 static constexpr Column COUNTS = Column::lookup_address_derivation_public_keys_hash_poseidon2_3_counts;
213 static constexpr Column INVERSES = Column::lookup_address_derivation_public_keys_hash_poseidon2_3_inv;
214 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
215 ColumnAndShifts::precomputed_zero,
216 ColumnAndShifts::address_derivation_tagging_key_x,
217 ColumnAndShifts::address_derivation_tagging_key_y,
218 ColumnAndShifts::address_derivation_public_keys_hash,
219 ColumnAndShifts::address_derivation_const_two
221 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
222 ColumnAndShifts::poseidon2_hash_input_0,
223 ColumnAndShifts::poseidon2_hash_input_1,
224 ColumnAndShifts::poseidon2_hash_input_2,
225 ColumnAndShifts::poseidon2_hash_output,
226 ColumnAndShifts::poseidon2_hash_num_perm_rounds_rem
232template <
typename FF_>
239 static constexpr std::string_view
NAME =
"LOOKUP_ADDRESS_DERIVATION_PUBLIC_KEYS_HASH_POSEIDON2_4";
244 static constexpr Column COUNTS = Column::lookup_address_derivation_public_keys_hash_poseidon2_4_counts;
245 static constexpr Column INVERSES = Column::lookup_address_derivation_public_keys_hash_poseidon2_4_inv;
246 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
247 ColumnAndShifts::precomputed_zero,
248 ColumnAndShifts::precomputed_zero,
249 ColumnAndShifts::precomputed_zero,
250 ColumnAndShifts::address_derivation_public_keys_hash
252 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
253 ColumnAndShifts::poseidon2_hash_input_0,
254 ColumnAndShifts::poseidon2_hash_input_1,
255 ColumnAndShifts::poseidon2_hash_input_2,
256 ColumnAndShifts::poseidon2_hash_output
262template <
typename FF_>
269 static constexpr std::string_view
NAME =
"LOOKUP_ADDRESS_DERIVATION_PREADDRESS_POSEIDON2";
274 static constexpr Column COUNTS = Column::lookup_address_derivation_preaddress_poseidon2_counts;
275 static constexpr Column INVERSES = Column::lookup_address_derivation_preaddress_poseidon2_inv;
276 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
277 ColumnAndShifts::address_derivation_sel,
278 ColumnAndShifts::address_derivation_preaddress_domain_separator,
279 ColumnAndShifts::address_derivation_public_keys_hash,
280 ColumnAndShifts::address_derivation_partial_address,
281 ColumnAndShifts::address_derivation_preaddress
283 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
284 ColumnAndShifts::poseidon2_hash_start,
285 ColumnAndShifts::poseidon2_hash_input_0,
286 ColumnAndShifts::poseidon2_hash_input_1,
287 ColumnAndShifts::poseidon2_hash_input_2,
288 ColumnAndShifts::poseidon2_hash_output
294template <
typename FF_>
301 static constexpr std::string_view
NAME =
"LOOKUP_ADDRESS_DERIVATION_PREADDRESS_SCALAR_MUL";
306 static constexpr Column COUNTS = Column::lookup_address_derivation_preaddress_scalar_mul_counts;
307 static constexpr Column INVERSES = Column::lookup_address_derivation_preaddress_scalar_mul_inv;
308 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
309 ColumnAndShifts::address_derivation_preaddress,
310 ColumnAndShifts::address_derivation_g1_x,
311 ColumnAndShifts::address_derivation_g1_y,
312 ColumnAndShifts::precomputed_zero,
313 ColumnAndShifts::address_derivation_preaddress_public_key_x,
314 ColumnAndShifts::address_derivation_preaddress_public_key_y,
315 ColumnAndShifts::precomputed_zero
317 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
318 ColumnAndShifts::scalar_mul_scalar, ColumnAndShifts::scalar_mul_point_x, ColumnAndShifts::scalar_mul_point_y,
319 ColumnAndShifts::scalar_mul_point_inf, ColumnAndShifts::scalar_mul_res_x, ColumnAndShifts::scalar_mul_res_y,
320 ColumnAndShifts::scalar_mul_res_inf
326template <
typename FF_>
333 static constexpr std::string_view
NAME =
"LOOKUP_ADDRESS_DERIVATION_ADDRESS_ECADD";
338 static constexpr Column COUNTS = Column::lookup_address_derivation_address_ecadd_counts;
339 static constexpr Column INVERSES = Column::lookup_address_derivation_address_ecadd_inv;
340 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
341 ColumnAndShifts::address_derivation_preaddress_public_key_x,
342 ColumnAndShifts::address_derivation_preaddress_public_key_y,
343 ColumnAndShifts::precomputed_zero,
344 ColumnAndShifts::address_derivation_incoming_viewing_key_x,
345 ColumnAndShifts::address_derivation_incoming_viewing_key_y,
346 ColumnAndShifts::precomputed_zero,
347 ColumnAndShifts::address_derivation_address,
348 ColumnAndShifts::address_derivation_address_y,
349 ColumnAndShifts::precomputed_zero
351 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
352 ColumnAndShifts::ecc_p_x, ColumnAndShifts::ecc_p_y, ColumnAndShifts::ecc_p_is_inf,
353 ColumnAndShifts::ecc_q_x, ColumnAndShifts::ecc_q_y, ColumnAndShifts::ecc_q_is_inf,
354 ColumnAndShifts::ecc_r_x, ColumnAndShifts::ecc_r_y, ColumnAndShifts::ecc_r_is_inf
360template <
typename FF_>
This file contains the template for the generic lookup that can be specialized to enforce various loo...
static constexpr Column SRC_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr std::string_view NAME
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column COUNTS
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column COUNTS
static constexpr std::string_view RELATION_NAME
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column INVERSES
static constexpr std::string_view NAME
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr Column INVERSES
static constexpr std::string_view RELATION_NAME
static constexpr Column DST_SELECTOR
static constexpr Column SRC_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column COUNTS
static constexpr std::string_view RELATION_NAME
static constexpr Column DST_SELECTOR
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column COUNTS
static constexpr Column INVERSES
static constexpr Column SRC_SELECTOR
static constexpr Column INVERSES
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column COUNTS
static constexpr Column DST_SELECTOR
static constexpr Column SRC_SELECTOR
static constexpr std::string_view NAME
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view NAME
static constexpr std::string_view RELATION_NAME
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr Column COUNTS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr Column SRC_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column INVERSES
static constexpr std::string_view NAME
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view RELATION_NAME
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view NAME
static constexpr Column COUNTS
static constexpr Column SRC_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view RELATION_NAME
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column COUNTS