Skip to content

Commit 905b062

Browse files
committed
add used_rows and to_be_shared reading/writing
1 parent 359994e commit 905b062

File tree

1 file changed

+56
-5
lines changed

1 file changed

+56
-5
lines changed

bin/assigner/src/main.cpp

Lines changed: 56 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,12 @@ int curve_dependent_main(std::string bytecode_file_name,
680680
}
681681

682682
using var = crypto3::zk::snark::plonk_variable<typename AssignmentTableType::field_type::value_type>;
683+
683684
std::vector<table_piece<var>> table_pieces = {}; // we create table pieces in any case and pass into assigner by reference
685+
std::vector<std::vector<std::uint32_t>> all_used_rows;
686+
int provers_amount;
687+
std::vector<std::pair<std::uint32_t, var>> to_be_shared;
688+
684689
if (gen_mode.has_fast_tbl()) { // if we are generating tables in a fast way then need to parse table_pieces from file
685690

686691
std::ifstream inp_json(table_pieces_file_name);
@@ -693,11 +698,31 @@ int curve_dependent_main(std::string bytecode_file_name,
693698
std::string str((std::istreambuf_iterator<char>(inp_json)),
694699
std::istreambuf_iterator<char>());
695700
auto parsed = boost::json::parse(str);
696-
boost::json::array arr = parsed.as_array();
701+
boost::json::object obj = parsed.as_object();
697702

703+
boost::json::array arr = obj["table_pieces"].as_array();
698704
for (const auto& item : arr) {
699705
table_pieces.emplace_back(item.as_object());
700706
}
707+
708+
provers_amount = obj["provers_amount"].as_int64();
709+
710+
boost::json::array used_rows_json = obj["used_rows"].as_array();
711+
for (const auto& row : used_rows_json) {
712+
std::vector<std::uint32_t> current_used_rows = {};
713+
for (const auto& elem : row.as_array()) {
714+
current_used_rows.push_back(elem.as_int64());
715+
}
716+
all_used_rows.push_back(current_used_rows);
717+
}
718+
719+
boost::json::array to_be_shared_json = obj["to_be_shared"].as_array();
720+
for (const auto& pair_json : to_be_shared_json) {
721+
boost::json::object pair_obj = pair_json.as_object();
722+
std::uint32_t first = pair_obj["first"].as_int64();
723+
var second = var(pair_obj["second"].as_object());
724+
to_be_shared.emplace_back(first, second);
725+
}
701726
}
702727

703728
auto assigner_instance_creation_start = std::chrono::high_resolution_clock::now();
@@ -767,6 +792,8 @@ int curve_dependent_main(std::string bytecode_file_name,
767792
public_input_json_value.as_array(),
768793
private_input_json_value.as_array(),
769794
all_constant_columns,
795+
all_used_rows,
796+
to_be_shared,
770797
table_pieces
771798
)
772799
) {
@@ -781,14 +808,38 @@ int curve_dependent_main(std::string bytecode_file_name,
781808
return 0;
782809
}
783810

784-
if (gen_mode.has_circuit()) { // if we are generation circuit then we are generation table pieces in the same time. Need to write itno file
811+
if (gen_mode.has_circuit()) {
812+
813+
boost::json::object top_level_json;
814+
top_level_json["provers_amount"] = assigner_instance.assignments.size();
815+
785816
boost::json::array pieces_json;
786-
// for (const auto& piece : nil::blueprint::table_pieces) {
787-
for (const auto& piece : table_pieces) {
817+
for (const auto& piece : assigner_instance.get_table_pieces()) {
788818
pieces_json.push_back(piece.to_json());
789819
}
820+
top_level_json["table_pieces"] = pieces_json;
821+
822+
boost::json::array used_rows_json;
823+
for (std::size_t i = 0; i < assigner_instance.assignments.size(); i++) {
824+
boost::json::array current_row;
825+
for (const auto& r : assigner_instance.assignments[i].get_used_rows()) {
826+
current_row.push_back(r);
827+
}
828+
used_rows_json.push_back(current_row);
829+
}
830+
top_level_json["used_rows"] = used_rows_json;
831+
832+
boost::json::array to_be_shared_json;
833+
834+
for (const auto& pair : assigner_instance.get_to_be_shared()) {
835+
boost::json::object pair_json;
836+
pair_json["first"] = pair.first;
837+
pair_json["second"] = pair.second.to_json();
838+
to_be_shared_json.push_back(pair_json);
839+
}
840+
top_level_json["to_be_shared"] = to_be_shared_json;
790841

791-
std::string serialized = boost::json::serialize(pieces_json);
842+
std::string serialized = boost::json::serialize(top_level_json);
792843

793844
std::ofstream file(table_pieces_file_name);
794845
file << serialized;

0 commit comments

Comments
 (0)