@@ -66,7 +66,7 @@ using namespace nil::blueprint;
6666template <typename Endianness, typename ArithmetizationType, typename ConstraintSystemType>
6767void print_circuit (const circuit_proxy<ArithmetizationType> &circuit_proxy,
6868 const assignment_proxy<ArithmetizationType> &table_proxy,
69- bool rename_required, std::ostream &out = std::cout) {
69+ std::ostream &out = std::cout) {
7070 using TTypeBase = nil::marshalling::field_type<Endianness>;
7171 using plonk_constraint_system = nil::marshalling::types::bundle<
7272 TTypeBase, std::tuple<
@@ -90,31 +90,28 @@ void print_circuit(const circuit_proxy<ArithmetizationType> &circuit_proxy,
9090 const auto & copy_constraints = circuit_proxy.copy_constraints ();
9191 typename ConstraintSystemType::copy_constraints_container_type used_copy_constraints;
9292 const auto & used_copy_constraints_idx = circuit_proxy.get_used_copy_constraints ();
93- for (const auto &it : used_copy_constraints_idx) {
94- used_copy_constraints.push_back (copy_constraints[it]);
95- }
96-
97- if (rename_required) {
98- const auto & used_rows = table_proxy.get_used_rows ();
99- std::uint32_t local_row = 0 ;
100- for (const auto &row : used_rows) {
101- for (auto &constraint : used_copy_constraints) {
102- const auto first_var = constraint.first ;
103- const auto second_var = constraint.second ;
104- if ((first_var.type == variable_type::column_type::witness ||
105- first_var.type == variable_type::column_type::constant) &&
106- first_var.rotation == row) {
107- constraint.first = variable_type (first_var.index , local_row, first_var.relative ,
108- first_var.type );
109- }
110- if ((second_var.type == variable_type::column_type::witness ||
111- second_var.type == variable_type::column_type::constant) &&
112- second_var.rotation == row) {
113- constraint.second = variable_type (second_var.index , local_row,
114- second_var.relative , second_var.type );
115- }
93+ if (circuit_proxy.get_id () > 0 ) {
94+ const auto start_row = table_proxy.get_start_row ();
95+ for (const auto &it : used_copy_constraints_idx) {
96+ auto first_var = copy_constraints[it].first ;
97+ auto second_var = copy_constraints[it].second ;
98+ if (first_var.type == variable_type::column_type::witness ||
99+ first_var.type == variable_type::column_type::constant) {
100+ ASSERT (first_var.rotation >= start_row);
101+ first_var =
102+ variable_type (first_var.index , first_var.rotation - start_row, first_var.relative , first_var.type );
103+ }
104+ if (second_var.type == variable_type::column_type::witness ||
105+ second_var.type == variable_type::column_type::constant) {
106+ ASSERT (second_var.rotation >= start_row);
107+ second_var = variable_type (second_var.index , second_var.rotation - start_row, second_var.relative ,
108+ second_var.type );
116109 }
117- local_row++;
110+ used_copy_constraints.push_back ({first_var, second_var});
111+ }
112+ } else {
113+ for (const auto &it : used_copy_constraints_idx) {
114+ used_copy_constraints.push_back (copy_constraints[it]);
118115 }
119116 }
120117
@@ -203,8 +200,9 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
203200 for (const auto &i : lookup_selector_cols) {
204201 max_selector_size = std::max (max_selector_size, table_proxy.selector_column_size (i));
205202 }
206- usable_rows_amount = table_proxy.get_used_rows ().size ();
207- usable_rows_amount = std::max ({usable_rows_amount, max_shared_size, max_public_inputs_size, max_constant_size, max_selector_size});
203+ max_selector_size = std::max (max_selector_size, (std::uint32_t )table_proxy.get_used_selector_rows ().size ());
204+ usable_rows_amount = std::max ({table_proxy.get_num_private_rows (),
205+ max_shared_size, max_public_inputs_size, max_constant_size, max_selector_size});
208206 } else { // FULL
209207 total_columns = AssignmentTableType::arithmetization_params::total_columns;
210208 std::uint32_t max_witness_size = 0 ;
@@ -269,16 +267,14 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
269267 it += padded_rows_amount;
270268 }
271269 } else {
272- const auto & rows = table_proxy.get_used_rows ();
273270 const auto & selector_rows = table_proxy.get_used_selector_rows ();
274- const std::uint32_t padding = padded_rows_amount - rows.size ();
275271 std::uint32_t idx = 0 ;
276272 auto it = table_values.begin ();
277273 // witness
278274 for ( std::size_t i = 0 ; i < AssignmentTableType::arithmetization_params::witness_columns; i++ ){
279275 const auto column_size = table_proxy.witness_column_size (i);
280276 std::uint32_t offset = 0 ;
281- for (const auto & j : rows ){
277+ for (std:: size_t j = table_proxy. get_start_row (); j < table_proxy. get_num_private_rows (); j++ ){
282278 if (j < column_size) {
283279 table_values[idx + offset] = table_proxy.witness (i, j);
284280 offset++;
@@ -304,7 +300,7 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
304300 for (std::uint32_t i = 0 ; i < ComponentConstantColumns; i++) {
305301 const auto column_size = table_proxy.constant_column_size (i);
306302 std::uint32_t offset = 0 ;
307- for (const auto & j : rows ){
303+ for (std:: size_t j = table_proxy. get_start_row (); j < table_proxy. get_num_private_rows (); j++ ){
308304 if (j < column_size) {
309305 table_values[idx + offset] = table_proxy.constant (i, j);
310306 offset++;
@@ -323,11 +319,9 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
323319 for (std::uint32_t i = 0 ; i < ComponentSelectorColumns; i++) {
324320 const auto column_size = table_proxy.selector_column_size (i);
325321 std::uint32_t offset = 0 ;
326- for (const auto & j : rows ){
322+ for (const auto & j : selector_rows ){
327323 if (j < column_size) {
328- if (selector_rows.find (j) != selector_rows.end ()) {
329- table_values[idx + offset] = table_proxy.selector (i, j);
330- }
324+ table_values[idx + offset] = table_proxy.selector (i, j);
331325 offset++;
332326 }
333327 }
@@ -502,7 +496,7 @@ int curve_dependent_main(std::string bytecode_file_name,
502496 }
503497
504498 print_circuit<nil::marshalling::option::big_endian, ArithmetizationType, ConstraintSystemType>(
505- parser_instance.circuits [0 ], parser_instance.assignments [0 ], false , ocircuit);
499+ parser_instance.circuits [0 ], parser_instance.assignments [0 ], ocircuit);
506500 ocircuit.close ();
507501 } else if (parser_instance.assignments .size () > 1 ) {
508502 for (std::uint32_t idx = 0 ; idx < parser_instance.assignments .size (); idx++) {
@@ -531,7 +525,7 @@ int curve_dependent_main(std::string bytecode_file_name,
531525
532526 ASSERT_MSG (idx < parser_instance.circuits .size (), " Not found circuit" );
533527 print_circuit<nil::marshalling::option::big_endian, ArithmetizationType, ConstraintSystemType>(
534- parser_instance.circuits [idx], parser_instance.assignments [idx], (idx > 0 ), ocircuit);
528+ parser_instance.circuits [idx], parser_instance.assignments [idx], ocircuit);
535529
536530 ocircuit.close ();
537531 }
0 commit comments