From 0052ec34ab9f495a324800284f460f334c25e73c Mon Sep 17 00:00:00 2001 From: "e.tatuzova" Date: Mon, 4 Mar 2024 00:17:30 +0400 Subject: [PATCH] Crypto3 and libs/actor/zk updated #83 --- .../nil/proof-generator/arg_parser.hpp | 10 ++--- .../arithmetization_params.hpp | 16 ++++--- .../include/nil/proof-generator/prover.hpp | 4 +- bin/proof-generator/src/arg_parser.cpp | 45 ++++++++++++++----- bin/proof-generator/src/main.cpp | 8 ++-- libs/actor/zk | 2 +- libs/crypto3 | 2 +- 7 files changed, 58 insertions(+), 29 deletions(-) diff --git a/bin/proof-generator/include/nil/proof-generator/arg_parser.hpp b/bin/proof-generator/include/nil/proof-generator/arg_parser.hpp index b02ee113..50e2e467 100644 --- a/bin/proof-generator/include/nil/proof-generator/arg_parser.hpp +++ b/bin/proof-generator/include/nil/proof-generator/arg_parser.hpp @@ -42,11 +42,11 @@ namespace nil { boost::log::trivial::severity_level log_level = boost::log::trivial::severity_level::info; bool skip_verification = false; bool verification_only = false; - CurvesVariant elliptic_curve_type = type_identity{}; - HashesVariant hash_type = type_identity>{}; - LambdaParam lambda = all_lambda_params[0]; - GrindParam grind = all_grind_params[0]; - std::size_t component_constant_columns = 5; + CurvesVariant elliptic_curve_type = type_identity {}; + HashesVariant hash_type; + columns_params columns = all_columns_params[0]; + lambda_param lambda = all_lambda_params[0]; + grind_param grind = all_grind_params[0]; std::size_t expand_factor = 2; }; diff --git a/bin/proof-generator/include/nil/proof-generator/arithmetization_params.hpp b/bin/proof-generator/include/nil/proof-generator/arithmetization_params.hpp index 96e24380..a7032b8a 100644 --- a/bin/proof-generator/include/nil/proof-generator/arithmetization_params.hpp +++ b/bin/proof-generator/include/nil/proof-generator/arithmetization_params.hpp @@ -21,8 +21,11 @@ #include #include +#include + #include #include +#include #include @@ -39,16 +42,17 @@ namespace nil { // Add more params as needed. }; - using CurveTypes = std::tuple; + using CurveTypes = std::tuple< + nil::crypto3::algebra::curves::pallas + // Add more curves as needed. + >; using HashTypes = std::tuple< nil::crypto3::hashes::keccak_1600<256>, - nil::crypto3::hashes::poseidon> + nil::crypto3::hashes::sha2<256>, + nil::crypto3::hashes::poseidon> // Add more hashes as needed. - >; + >; } // namespace proof_generator } // namespace nil diff --git a/bin/proof-generator/include/nil/proof-generator/prover.hpp b/bin/proof-generator/include/nil/proof-generator/prover.hpp index 794ca308..20d3432e 100644 --- a/bin/proof-generator/include/nil/proof-generator/prover.hpp +++ b/bin/proof-generator/include/nil/proof-generator/prover.hpp @@ -299,6 +299,7 @@ namespace nil { using TTypeBase = nil::marshalling::field_type; using ConstraintMarshalling = nil::crypto3::marshalling::types::plonk_constraint_system; + { auto marshalled_value = detail::decode_marshalling_from_file(circuit_file_); if (!marshalled_value) { @@ -322,8 +323,7 @@ namespace nil { nil::crypto3::marshalling::types::make_assignment_table( *marshalled_table ); - public_inputs_ = assignment_table.public_inputs(); - table_description_.emplace(table_description); + table_description_ = table_description; // Lambdas and grinding bits should be passed threw preprocessor directives std::size_t table_rows_log = std::ceil(std::log2(table_description_->rows_amount)); diff --git a/bin/proof-generator/src/arg_parser.cpp b/bin/proof-generator/src/arg_parser.cpp index 8a032a30..ee41e2e8 100644 --- a/bin/proof-generator/src/arg_parser.cpp +++ b/bin/proof-generator/src/arg_parser.cpp @@ -240,16 +240,39 @@ namespace nil { GENERATE_READ_OPERATOR(CURVE_TYPES, CurvesVariant) #undef X -#define HASH_TYPES \ - X(nil::crypto3::hashes::keccak_1600<256>, "keccak") \ - X(nil::crypto3::hashes::poseidon>, \ - "poseidon") -#define X(type, name) TYPE_TO_STRING(type, name) - GENERATE_WRITE_OPERATOR(HASH_TYPES, HashesVariant) -#undef X -#define X(type, name) STRING_TO_TYPE(type, name) - GENERATE_READ_OPERATOR(HASH_TYPES, HashesVariant) -#undef X +std::ostream& operator<<(std::ostream& strm, const HashesVariant& variant) { + strm << std::visit( + [&strm](auto&& arg) -> std::string { + using SelectedType = std::decay_t; + if constexpr (std::is_same_v>>) return "keccak"; + if constexpr (std::is_same_v>>) return "sha2"; + if constexpr (std::is_same_v>>>) return "sha2"; + strm.setstate(std::ios_base::failbit); + return ""; + }, + variant + ); + return strm; +} + +std::istream& operator>>(std::istream& strm, HashesVariant& variant) { + std::string str; + strm >> str; + if(str == "keccak") { + variant = std::variant_alternative_t<0, HashesVariant>(); + return strm; + } + if(str == "sha2") { + variant = std::variant_alternative_t<1, HashesVariant>(); + return strm; + } + if(str == "poseidon") { + variant = std::variant_alternative_t<2, HashesVariant>(); + return strm; + } + strm.setstate(std::ios_base::failbit); + return strm; +} + } // namespace proof_generator } // namespace nil diff --git a/bin/proof-generator/src/main.cpp b/bin/proof-generator/src/main.cpp index 21820588..85116df6 100644 --- a/bin/proof-generator/src/main.cpp +++ b/bin/proof-generator/src/main.cpp @@ -68,8 +68,9 @@ int grind_param_wrapper(const ProverOptions& prover_options) { return ret; } -template -int hash_wrapper(const ProverOptions& prover_options) { +template +int hash_wrapper(const prover_options& prover_options) { + std::cout << "Hash wrapper" << std::endl; int ret; auto run_prover_wrapper_void = [&prover_options, &ret]() { using HashType = typename HashTypeIdentity::type; @@ -104,7 +105,8 @@ int initial_wrapper(const ProverOptions& prover_options) { } int main(int argc, char* argv[]) { - std::optional prover_options = nil::proof_generator::parse_args(argc, argv); + std::optional prover_options = nil::proof_generator::parse_args(argc, argv); + std::cout << prover_options->circuit_file_path << std::endl; if (!prover_options) { // Action has already taken a place (help, version, etc.) return 0; diff --git a/libs/actor/zk b/libs/actor/zk index 92923be8..24a4481f 160000 --- a/libs/actor/zk +++ b/libs/actor/zk @@ -1 +1 @@ -Subproject commit 92923be84628ab60f9179b43f49679e4d86ff011 +Subproject commit 24a4481ffb6a411483cacdcede71efde0a121cce diff --git a/libs/crypto3 b/libs/crypto3 index d9f4661d..7f3f8e98 160000 --- a/libs/crypto3 +++ b/libs/crypto3 @@ -1 +1 @@ -Subproject commit d9f4661d01510f5221ecc179c4253c7798719a99 +Subproject commit 7f3f8e9857b1dbb1f00cf567bbbb38795a8d586e