@@ -181,6 +181,7 @@ void fill_vector_value(std::vector<ValueType> &table_values, const ContainerType
181181template <typename Endianness, typename ArithmetizationType, typename BlueprintFieldType>
182182void print_assignment_table (const assignment_proxy<ArithmetizationType> &table_proxy,
183183 print_table_kind print_kind,
184+ std::uint32_t ComponentConstantColumns, std::uint32_t ComponentSelectorColumns,
184185 std::ostream &out = std::cout) {
185186 using AssignmentTableType = assignment_proxy<ArithmetizationType>;
186187 std::uint32_t usable_rows_amount;
@@ -193,13 +194,13 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
193194 const auto lookup_constant_cols = table_proxy.get_lookup_constant_cols ();
194195 const auto lookup_selector_cols = table_proxy.get_lookup_selector_cols ();
195196 if (print_kind == print_table_kind::PRIVATE) {
196- constant_size = constant_size - table_proxy. get_lookup_constant_amount () ;
197- selector_size = selector_size - table_proxy. get_lookup_selector_amount () ;
197+ constant_size = ComponentConstantColumns ;
198+ selector_size = ComponentSelectorColumns ;
198199 total_columns = witness_size + constant_size + selector_size;
199200 usable_rows_amount = table_proxy.get_used_rows ().size ();
200201 } else if (print_kind == print_table_kind::SHARED) {
201- constant_size = table_proxy. get_lookup_constant_amount () ;
202- selector_size = table_proxy. get_lookup_selector_amount () ;
202+ constant_size = constant_size - ComponentConstantColumns ;
203+ selector_size = selector_size - ComponentSelectorColumns ;
203204 total_columns = shared_size + public_input_size + constant_size + selector_size;
204205 std::uint32_t max_shared_size = 0 ;
205206 std::uint32_t max_public_inputs_size = 0 ;
@@ -290,32 +291,18 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
290291 fill_vector_value<typename AssignmentTableType::field_type::value_type, column_type>
291292 (table_values, table_proxy.shared (i), padded_rows_amount);
292293 }
293- for (const auto &i : table_proxy. get_lookup_constant_cols () ) {
294+ for (std:: uint32_t i = 0 ; i < constant_size; i++ ) {
294295 fill_vector_value<typename AssignmentTableType::field_type::value_type, column_type>
295- (table_values, table_proxy.constant (i), padded_rows_amount);
296+ (table_values, table_proxy.constant (i + ComponentConstantColumns ), padded_rows_amount);
296297 }
297- for (const auto &i : table_proxy. get_lookup_selector_cols () ) {
298+ for (std:: uint32_t i = 0 ; i < selector_size; i++ ) {
298299 fill_vector_value<typename AssignmentTableType::field_type::value_type, column_type>
299- (table_values, table_proxy.selector (i), padded_rows_amount);
300+ (table_values, table_proxy.selector (i + ComponentSelectorColumns ), padded_rows_amount);
300301 }
301302 } else {
302303 const std::uint32_t padding = padded_rows_amount - usable_rows_amount;
303304 const auto & rows = table_proxy.get_used_rows ();
304305
305- std::vector<std::uint32_t > constant_cols;
306- const auto & lookup_constant_cols = table_proxy.get_lookup_constant_cols ();
307- for (std::uint32_t i = 0 ; i < table_proxy.constants_amount (); i++) {
308- if (lookup_constant_cols.find (i) == lookup_constant_cols.end ()) {
309- constant_cols.push_back (i);
310- }
311- }
312- std::vector<std::uint32_t > selector_cols;
313- const auto & lookup_selector_cols = table_proxy.get_lookup_selector_cols ();
314- for (std::uint32_t i = 0 ; i < table_proxy.selectors_amount (); i++) {
315- if (lookup_selector_cols.find (i) == lookup_selector_cols.end ()) {
316- selector_cols.push_back (i);
317- }
318- }
319306 for ( std::size_t i = 0 ; i < AssignmentTableType::arithmetization_params::witness_columns; i++ ){
320307 const auto column_size = table_proxy.witness_column_size (i);
321308 for (const auto & j : rows){
@@ -329,7 +316,7 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
329316 table_values.push_back (0 );
330317 }
331318 }
332- for ( const auto & i : constant_cols ) {
319+ for (std:: uint32_t i = 0 ; i < ComponentConstantColumns; i++ ) {
333320 const auto column_size = table_proxy.constant_column_size (i);
334321 for (const auto & j : rows){
335322 if (j < column_size) {
@@ -342,7 +329,8 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
342329 table_values.push_back (0 );
343330 }
344331 }
345- for (const auto & i : selector_cols) {
332+ const auto & lookup_selector_cols = table_proxy.get_lookup_selector_cols ();
333+ for (std::uint32_t i = 0 ; i < ComponentSelectorColumns; i++) {
346334 const auto column_size = table_proxy.selector_column_size (i);
347335 for (const auto & j : rows) {
348336 if (j < column_size) {
@@ -382,10 +370,15 @@ int curve_dependent_main(std::string bytecode_file_name,
382370 std::uint32_t max_num_provers) {
383371 using BlueprintFieldType = typename CurveType::base_field_type;
384372
373+ constexpr std::size_t ComponentConstantColumns = 5 ;
374+ constexpr std::size_t LookupConstantColumns = 30 ;
375+ constexpr std::size_t ComponentSelectorColumns = 30 ;
376+ constexpr std::size_t LookupSelectorConstantColumns = 5 ;
377+
385378 constexpr std::size_t WitnessColumns = 15 ;
386379 constexpr std::size_t PublicInputColumns = 1 ;
387- constexpr std::size_t ConstantColumns = 30 ;
388- constexpr std::size_t SelectorColumns = 35 ;
380+ constexpr std::size_t ConstantColumns = ComponentConstantColumns + LookupConstantColumns ;
381+ constexpr std::size_t SelectorColumns = ComponentSelectorColumns + LookupSelectorConstantColumns ;
389382
390383 using ArithmetizationParams =
391384 zk::snark::plonk_arithmetization_params<WitnessColumns, PublicInputColumns, ConstantColumns, SelectorColumns>;
@@ -442,24 +435,18 @@ int curve_dependent_main(std::string bytecode_file_name,
442435 // pack lookup tables
443436 if (parser_instance.circuits [0 ].get_reserved_tables ().size () > 0 ) {
444437 std::vector <std::size_t > lookup_columns_indices;
445- const auto & lookup_tables = parser_instance.circuits [0 ].get_reserved_tables ();
446438 const std::uint32_t max_usable_rows = 500000 ;
447- // looking for free constant columns
448- std::uint32_t max_used_col = 0 ;
449- for (std::size_t i = 0 ; i < ConstantColumns; i++) {
450- if (parser_instance.assignments [0 ].constant_column_size (i) != 0 ) {
451- max_used_col = i;
452- }
453- }
454- lookup_columns_indices.resize (ConstantColumns - max_used_col - 1 );
455- std::iota (lookup_columns_indices.begin (), lookup_columns_indices.end (), max_used_col + 1 ); // fill max_used_col + 1, max_used_col + 2, ...
439+ lookup_columns_indices.resize (LookupConstantColumns);
440+ // fill ComponentConstantColumns, ComponentConstantColumns + 1, ...
441+ std::iota (lookup_columns_indices.begin (), lookup_columns_indices.end (), ComponentConstantColumns);
456442
457443 auto usable_rows_amount = zk::snark::pack_lookup_tables_horizontal (
458444 parser_instance.circuits [0 ].get_reserved_indices (),
459445 parser_instance.circuits [0 ].get_reserved_tables (),
460446 parser_instance.circuits [0 ].get (),
461447 parser_instance.assignments [0 ].get (),
462448 lookup_columns_indices,
449+ ComponentSelectorColumns,
463450 parser_instance.assignments [0 ].allocated_rows (),
464451 max_usable_rows
465452 );
@@ -479,7 +466,7 @@ int curve_dependent_main(std::string bytecode_file_name,
479466 print_assignment_table<
480467 nil::marshalling::option::big_endian,
481468 ArithmetizationType, BlueprintFieldType
482- >(parser_instance.assignments [0 ], print_kind, shared_otable);
469+ >(parser_instance.assignments [0 ], print_kind, ComponentConstantColumns, ComponentSelectorColumns, shared_otable);
483470
484471 shared_otable.close ();
485472
@@ -495,7 +482,7 @@ int curve_dependent_main(std::string bytecode_file_name,
495482 print_assignment_table<
496483 nil::marshalling::option::big_endian,
497484 ArithmetizationType, BlueprintFieldType
498- >(it, print_table_kind::PRIVATE, otable);
485+ >(it, print_table_kind::PRIVATE, ComponentConstantColumns, ComponentSelectorColumns, otable);
499486
500487
501488// nil::blueprint::profiling_assignment_table(parser_instance.assignmnt, desc.usable_rows_amount, otable);
0 commit comments