diff --git a/include/nil/crypto3/zk/snark/systems/plonk/placeholder/detail/transcript_initialization_context.hpp b/include/nil/crypto3/zk/snark/systems/plonk/placeholder/detail/transcript_initialization_context.hpp index e7f31e063..692d55c07 100644 --- a/include/nil/crypto3/zk/snark/systems/plonk/placeholder/detail/transcript_initialization_context.hpp +++ b/include/nil/crypto3/zk/snark/systems/plonk/placeholder/detail/transcript_initialization_context.hpp @@ -57,11 +57,13 @@ namespace nil { std::size_t rows_amount, std::size_t usable_rows_amount, const typename commitment_scheme_type::params_type& commitment_params, - const std::string& application_id) + const std::string& application_id, + const typename field_type::value_type& delta) : rows_amount(rows_amount) , usable_rows_amount(usable_rows_amount) , commitment_params(commitment_params) , application_id(application_id) + , delta(delta) { } // All fields below this line must be included in the transcript initilization, including @@ -71,13 +73,13 @@ namespace nil { constexpr static const std::size_t constant_columns = PlaceholderParamsType::constant_columns; constexpr static const std::size_t selector_columns = PlaceholderParamsType::selector_columns; - constexpr static const typename field_type::value_type delta = PlaceholderParamsType::delta; std::size_t rows_amount; std::size_t usable_rows_amount; // Commitment params. All fields of this data structure must be included on marshalling, // including some static constexpr parameters. + const typename field_type::value_type delta; typename commitment_scheme_type::params_type commitment_params; constexpr static const typename field_type::value_type modulus = field_type::modulus; @@ -93,12 +95,14 @@ namespace nil { std::size_t rows_amount, std::size_t usable_rows_amount, const typename PlaceholderParamsType::commitment_scheme_type::params_type& commitment_params, - const std::string& application_id) { + const std::string& application_id, + const typename PlaceholderParamsType::field_type::value_type& delta) { nil::crypto3::zk::snark::detail::transcript_initialization_context context( rows_amount, usable_rows_amount, commitment_params, - application_id + application_id, + delta ); // Marshall the initialization context and push it to the transcript. diff --git a/include/nil/crypto3/zk/snark/systems/plonk/placeholder/params.hpp b/include/nil/crypto3/zk/snark/systems/plonk/placeholder/params.hpp index f0808d9bf..f92a29e5b 100644 --- a/include/nil/crypto3/zk/snark/systems/plonk/placeholder/params.hpp +++ b/include/nil/crypto3/zk/snark/systems/plonk/placeholder/params.hpp @@ -46,9 +46,6 @@ namespace nil { constexpr static const std::size_t constant_columns = ArithmetizationParams::constant_columns; constexpr static const std::size_t selector_columns = ArithmetizationParams::selector_columns; - constexpr static const typename FieldType::value_type delta = - algebra::fields::arithmetic_params::multiplicative_generator; - using arithmetization_params = ArithmetizationParams; using field_type = FieldType; using public_input_type = std::array, arithmetization_params::public_input_columns>; @@ -66,8 +63,6 @@ namespace nil { using field_type = typename CircuitParams::field_type; - constexpr static const typename field_type::value_type delta = CircuitParams::delta; - using arithmetization_params = typename CircuitParams::arithmetization_params; using constraint_system_type = typename CircuitParams::constraint_system_type; using assignment_table_type = typename CircuitParams::assignment_table_type; diff --git a/include/nil/crypto3/zk/snark/systems/plonk/placeholder/preprocessor.hpp b/include/nil/crypto3/zk/snark/systems/plonk/placeholder/preprocessor.hpp index b937a9383..412139ebd 100644 --- a/include/nil/crypto3/zk/snark/systems/plonk/placeholder/preprocessor.hpp +++ b/include/nil/crypto3/zk/snark/systems/plonk/placeholder/preprocessor.hpp @@ -437,7 +437,9 @@ namespace nil { const plonk_table_description &table_description, typename ParamsType::commitment_scheme_type &commitment_scheme, - std::size_t columns_with_copy_constraints + std::size_t columns_with_copy_constraints, + // TODO(martun): move delta back to placeholder_params, once template arguments are reduced. + const typename FieldType::value_type& delta=algebra::fields::arithmetic_params::multiplicative_generator ) { PROFILE_PLACEHOLDER_SCOPE("Placeholder public preprocessor"); @@ -458,11 +460,11 @@ namespace nil { std::vector id_perm_polys = identity_polynomials(columns_with_copy_constraints, basic_domain->get_domain_element(1), - ParamsType::delta, basic_domain); + delta, basic_domain); std::vector sigma_perm_polys = permutation_polynomials(columns_with_copy_constraints, basic_domain->get_domain_element(1), - ParamsType::delta, permutation, basic_domain); + delta, permutation, basic_domain); polynomial_dfs_type lagrange_0 = lagrange_polynomial(basic_domain, 0); @@ -500,7 +502,8 @@ namespace nil { N_rows, table_description.usable_rows_amount, commitment_scheme.get_commitment_params(), - "Default application dependent transcript initialization string"); + "Default application dependent transcript initialization string", + delta); typename preprocessed_data_type::verification_key vk = {constraint_system_with_params_hash, public_commitments.fixed_values}; typename preprocessed_data_type::common_data_type common_data ( diff --git a/include/nil/crypto3/zk/snark/systems/plonk/placeholder/prover.hpp b/include/nil/crypto3/zk/snark/systems/plonk/placeholder/prover.hpp index 0d88baa2b..42bd93926 100644 --- a/include/nil/crypto3/zk/snark/systems/plonk/placeholder/prover.hpp +++ b/include/nil/crypto3/zk/snark/systems/plonk/placeholder/prover.hpp @@ -45,7 +45,6 @@ #include #include #include -#include namespace nil { namespace crypto3 { diff --git a/include/nil/crypto3/zk/snark/systems/plonk/placeholder/verifier.hpp b/include/nil/crypto3/zk/snark/systems/plonk/placeholder/verifier.hpp index acd227ef3..05ca01591 100644 --- a/include/nil/crypto3/zk/snark/systems/plonk/placeholder/verifier.hpp +++ b/include/nil/crypto3/zk/snark/systems/plonk/placeholder/verifier.hpp @@ -38,7 +38,6 @@ #include #include #include -#include namespace nil { namespace crypto3 { diff --git a/test/transcript/transcript.cpp b/test/transcript/transcript.cpp index 0ccd9198a..e961ecd3e 100644 --- a/test/transcript/transcript.cpp +++ b/test/transcript/transcript.cpp @@ -79,9 +79,9 @@ BOOST_AUTO_TEST_CASE(zk_poseidon_transcript_init_test) { auto ch2 = tr.challenge(); int ch_int = tr.int_challenge(); - BOOST_CHECK_EQUAL(ch1.data, field_type::value_type(0x7f034babb3066560c2597048bdbbd61327f13734ebe59a225e0c162e869e8f4_cppui256).data); - BOOST_CHECK_EQUAL(ch2.data, field_type::value_type(0x3a60c875ae6475d5ac1d73178284ee752e8ad78066aa688752b1436960948b93_cppui256).data); - BOOST_CHECK_EQUAL(ch_int, 0x7574); + BOOST_CHECK_EQUAL(ch1.data, field_type::value_type(0x27B1BE8A820DE1A5E91A441F59F29D42D9DB9FC7778A0852819F331D5CD60B43_cppui256).data); + BOOST_CHECK_EQUAL(ch2.data, field_type::value_type(0x12096E03B2ADEC9B317042D36F048C06AF123EED4A3FC040579E66DCE46C0AEE_cppui256).data); + BOOST_CHECK_EQUAL(ch_int, 0x6296); } BOOST_AUTO_TEST_CASE(zk_poseidon_transcript_no_init_test) {