Skip to content

Commit

Permalink
remove template parameter from preprocessed public data #20
Browse files Browse the repository at this point in the history
  • Loading branch information
SK0M0R0H committed Mar 14, 2022
1 parent 6a09432 commit c771165
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,25 +84,26 @@ namespace nil {
redshift_proof<FieldType, CommitmentSchemeTypeWitness, CommitmentSchemeTypePermutation,
CommitmentSchemeTypeQuotient, CommitmentSchemeTypePublic>;

template<typename CommitmentSchemeTypePublic>
struct preprocessed_public_data_type {
typedef typename RedshiftParams::commitment_scheme_public_type
commitment_scheme_public_type;

struct public_precommitments {
std::vector<typename CommitmentSchemeTypePublic::precommitment_type> id_permutation;
std::vector<typename CommitmentSchemeTypePublic::precommitment_type> sigma_permutation;
std::array<typename CommitmentSchemeTypePublic::precommitment_type, public_input_columns> public_input;
std::array<typename CommitmentSchemeTypePublic::precommitment_type, constant_columns> constant;
std::array<typename CommitmentSchemeTypePublic::precommitment_type, selector_columns> selector;
std::array<typename CommitmentSchemeTypePublic::precommitment_type, 2> special_selectors;
std::vector<typename commitment_scheme_public_type::precommitment_type> id_permutation;
std::vector<typename commitment_scheme_public_type::precommitment_type> sigma_permutation;
std::array<typename commitment_scheme_public_type::precommitment_type, public_input_columns> public_input;
std::array<typename commitment_scheme_public_type::precommitment_type, constant_columns> constant;
std::array<typename commitment_scheme_public_type::precommitment_type, selector_columns> selector;
std::array<typename commitment_scheme_public_type::precommitment_type, 2> special_selectors;
};

struct public_commitments {
std::vector<typename CommitmentSchemeTypePublic::commitment_type> id_permutation;
std::vector<typename CommitmentSchemeTypePublic::commitment_type> sigma_permutation;
std::array<typename CommitmentSchemeTypePublic::commitment_type, public_input_columns> public_input;
std::array<typename CommitmentSchemeTypePublic::commitment_type, constant_columns> constant;
std::array<typename CommitmentSchemeTypePublic::commitment_type, selector_columns> selector;
std::array<typename CommitmentSchemeTypePublic::commitment_type, 2> special_selectors;
std::vector<typename commitment_scheme_public_type::commitment_type> id_permutation;
std::vector<typename commitment_scheme_public_type::commitment_type> sigma_permutation;
std::array<typename commitment_scheme_public_type::commitment_type, public_input_columns> public_input;
std::array<typename commitment_scheme_public_type::commitment_type, constant_columns> constant;
std::array<typename commitment_scheme_public_type::commitment_type, selector_columns> selector;
std::array<typename commitment_scheme_public_type::commitment_type, 2> special_selectors;
};

// both prover and verifier use this data
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,13 @@ namespace nil {
constexpr static const typename FieldType::value_type delta = algebra::fields::arithmetic_params<FieldType>::multiplicative_generator;

typedef commitments::list_polynomial_commitment_params<MerkleTreeHashType, TranscriptHashType, Lambda, R, M>
commitment_params_type;
commitment_params_type;

constexpr static const std::size_t opening_points_public = 1;
typedef commitments::list_polynomial_commitment<FieldType,
commitment_params_type,
opening_points_public>
commitment_scheme_public_type;
};
} // namespace snark
} // namespace zk
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ namespace nil {

static inline prover_result_type prove_eval(
typename policy_type::constraint_system_type &constraint_system,
const typename policy_type::preprocessed_public_data_type<CommitmentSchemeTypePublic> preprocessed_data,
const typename policy_type::preprocessed_public_data_type preprocessed_data,
const plonk_polynomial_table<FieldType, ParamsType::witness_columns,
ParamsType::public_input_columns, ParamsType::constant_columns,
ParamsType::selector_columns> &column_polynomials,
Expand Down Expand Up @@ -154,7 +154,7 @@ namespace nil {
}

static inline std::array<typename FieldType::value_type, argument_size> verify_eval(
const typename policy_type::preprocessed_public_data_type<CommitmentSchemeTypePublic> preprocessed_data,
const typename policy_type::preprocessed_public_data_type preprocessed_data,
// y
const typename FieldType::value_type &challenge,
// f(y):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,15 +93,17 @@ namespace nil {

} // namespace detail

template<typename FieldType, typename ParamsType,
typename CommitmentSchemeTypePublic>
template<typename FieldType, typename ParamsType>
class redshift_public_preprocessor {
typedef detail::redshift_policy<FieldType, ParamsType> policy_type;

typedef typename policy_type::preprocessed_public_data_type<CommitmentSchemeTypePublic>::public_precommitments
typedef typename ParamsType::commitment_scheme_public_type
commitment_scheme_public_type;

typedef typename policy_type::preprocessed_public_data_type::public_precommitments
public_precommitments_type;

typedef typename policy_type::preprocessed_public_data_type<CommitmentSchemeTypePublic>::public_commitments
typedef typename policy_type::preprocessed_public_data_type::public_commitments
public_commitments_type;

static math::polynomial<typename FieldType::value_type>
Expand Down Expand Up @@ -276,38 +278,38 @@ namespace nil {
std::vector<math::polynomial<typename FieldType::value_type>> &sigma_perm_polys,
math::polynomial<typename FieldType::value_type> &q_last,
math::polynomial<typename FieldType::value_type> &q_blind,
const typename CommitmentSchemeTypePublic::params_type &commitment_params
const typename commitment_scheme_public_type::params_type &commitment_params
) {

std::vector<typename CommitmentSchemeTypePublic::precommitment_type> id_permutation(id_perm_polys.size());
std::vector<typename commitment_scheme_public_type::precommitment_type> id_permutation(id_perm_polys.size());
for(std::size_t i = 0; i < id_permutation.size(); i++) {
id_permutation[i] = CommitmentSchemeTypePublic::precommit(
id_permutation[i] = commitment_scheme_public_type::precommit(
id_perm_polys[i], commitment_params.D[0]);
}

std::vector<typename CommitmentSchemeTypePublic::precommitment_type> sigma_permutation(sigma_perm_polys.size());
std::vector<typename commitment_scheme_public_type::precommitment_type> sigma_permutation(sigma_perm_polys.size());
for(std::size_t i = 0; i < sigma_permutation.size(); i++) {
sigma_permutation[i] = CommitmentSchemeTypePublic::precommit(
sigma_permutation[i] = commitment_scheme_public_type::precommit(
sigma_perm_polys[i], commitment_params.D[0]);
}

std::array<typename CommitmentSchemeTypePublic::precommitment_type, ParamsType::public_input_columns>
public_input_precommitments = CommitmentSchemeTypePublic::template precommit<ParamsType::public_input_columns>(
std::array<typename commitment_scheme_public_type::precommitment_type, ParamsType::public_input_columns>
public_input_precommitments = commitment_scheme_public_type::template precommit<ParamsType::public_input_columns>(
public_table.public_inputs(), commitment_params.D[0]);

std::array<typename CommitmentSchemeTypePublic::precommitment_type, ParamsType::constant_columns>
constant_precommitments = CommitmentSchemeTypePublic::template precommit<ParamsType::constant_columns>(
std::array<typename commitment_scheme_public_type::precommitment_type, ParamsType::constant_columns>
constant_precommitments = commitment_scheme_public_type::template precommit<ParamsType::constant_columns>(
public_table.constants(), commitment_params.D[0]);

std::array<typename CommitmentSchemeTypePublic::precommitment_type, ParamsType::selector_columns>
selector_precommitments = CommitmentSchemeTypePublic::template precommit<ParamsType::selector_columns>(
std::array<typename commitment_scheme_public_type::precommitment_type, ParamsType::selector_columns>
selector_precommitments = commitment_scheme_public_type::template precommit<ParamsType::selector_columns>(
public_table.selectors(), commitment_params.D[0]);

std::array<typename CommitmentSchemeTypePublic::precommitment_type, 2>
std::array<typename commitment_scheme_public_type::precommitment_type, 2>
special_selector_precommitments;
special_selector_precommitments[0] = CommitmentSchemeTypePublic::precommit(
special_selector_precommitments[0] = commitment_scheme_public_type::precommit(
q_last, commitment_params.D[0]);
special_selector_precommitments[1] = CommitmentSchemeTypePublic::precommit(
special_selector_precommitments[1] = commitment_scheme_public_type::precommit(
q_blind, commitment_params.D[0]);

return public_precommitments_type {
Expand All @@ -324,40 +326,40 @@ namespace nil {
const public_precommitments_type &precommitments
) {

std::vector<typename CommitmentSchemeTypePublic::commitment_type> id_permutation(precommitments.id_permutation.size());
std::vector<typename commitment_scheme_public_type::commitment_type> id_permutation(precommitments.id_permutation.size());
for(std::size_t i = 0; i < id_permutation.size(); i++) {
id_permutation[i] = CommitmentSchemeTypePublic::commit(
id_permutation[i] = commitment_scheme_public_type::commit(
precommitments.id_permutation[i]);
}

std::vector<typename CommitmentSchemeTypePublic::commitment_type> sigma_permutation(precommitments.sigma_permutation.size());
std::vector<typename commitment_scheme_public_type::commitment_type> sigma_permutation(precommitments.sigma_permutation.size());
for(std::size_t i = 0; i < sigma_permutation.size(); i++) {
sigma_permutation[i] = CommitmentSchemeTypePublic::commit(
sigma_permutation[i] = commitment_scheme_public_type::commit(
precommitments.sigma_permutation[i]);
}

std::array<typename CommitmentSchemeTypePublic::commitment_type, ParamsType::public_input_columns>
std::array<typename commitment_scheme_public_type::commitment_type, ParamsType::public_input_columns>
public_input_commitments;
for (std::size_t i = 0; i < ParamsType::public_input_columns; i++) {
public_input_commitments[i] = CommitmentSchemeTypePublic::commit(precommitments.public_input[i]);
public_input_commitments[i] = commitment_scheme_public_type::commit(precommitments.public_input[i]);
}

std::array<typename CommitmentSchemeTypePublic::commitment_type, ParamsType::constant_columns>
std::array<typename commitment_scheme_public_type::commitment_type, ParamsType::constant_columns>
constant_commitments;
for (std::size_t i = 0; i < ParamsType::constant_columns; i++) {
constant_commitments[i] = CommitmentSchemeTypePublic::commit(precommitments.constant[i]);
constant_commitments[i] = commitment_scheme_public_type::commit(precommitments.constant[i]);
}

std::array<typename CommitmentSchemeTypePublic::commitment_type, ParamsType::selector_columns>
std::array<typename commitment_scheme_public_type::commitment_type, ParamsType::selector_columns>
selector_commitments;
for (std::size_t i = 0; i < ParamsType::selector_columns; i++) {
selector_commitments[i] = CommitmentSchemeTypePublic::commit(precommitments.selector[i]);
selector_commitments[i] = commitment_scheme_public_type::commit(precommitments.selector[i]);
}

std::array<typename CommitmentSchemeTypePublic::commitment_type, 2>
std::array<typename commitment_scheme_public_type::commitment_type, 2>
special_selector_commitments;
for (std::size_t i = 0; i < ParamsType::selector_columns; i++) {
special_selector_commitments[i] = CommitmentSchemeTypePublic::commit(precommitments.special_selectors[i]);
special_selector_commitments[i] = commitment_scheme_public_type::commit(precommitments.special_selectors[i]);
}

return public_commitments_type {
Expand All @@ -370,11 +372,11 @@ namespace nil {
};
}

static inline typename policy_type::preprocessed_public_data_type<CommitmentSchemeTypePublic> process(
static inline typename policy_type::preprocessed_public_data_type process(
typename policy_type::constraint_system_type &constraint_system,
const typename policy_type::variable_assignment_type::public_table_type &public_assignment,
const plonk_table_description<FieldType> &table_description,
const typename CommitmentSchemeTypePublic::params_type &commitment_params,
const typename commitment_scheme_public_type::params_type &commitment_params,
std::vector<std::size_t> columns_with_copy_constraints) {

std::size_t N_rows = constraint_system.rows_amount();
Expand Down Expand Up @@ -429,10 +431,10 @@ namespace nil {
public_commitments_type public_commitments =
commitments(public_precommitments);

typename policy_type::preprocessed_public_data_type<CommitmentSchemeTypePublic>::common_data_type
typename policy_type::preprocessed_public_data_type::common_data_type
common_data {basic_domain, Z, lagrange_0, public_commitments};

return typename policy_type::preprocessed_public_data_type<CommitmentSchemeTypePublic>(
return typename policy_type::preprocessed_public_data_type(
{public_polynomial_table, _permutation_polynomials, _identity_polynomials,
q_last, q_blind, public_precommitments, common_data});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ namespace nil {
constexpr static const std::size_t f_parts = 4;

static inline math::polynomial<typename FieldType::value_type> quotient_polynomial(
const typename policy_type::preprocessed_public_data_type<commitment_scheme_public_input_type> preprocessed_public_data,
const typename policy_type::preprocessed_public_data_type preprocessed_public_data,
std::array<math::polynomial<typename FieldType::value_type>, f_parts>
F,
transcript::fiat_shamir_heuristic_sequential<transcript_hash_type>
Expand All @@ -129,7 +129,7 @@ namespace nil {
commitment_scheme_permutation_type,
commitment_scheme_quotient_type,
commitment_scheme_public_input_type>
process(typename policy_type::preprocessed_public_data_type<commitment_scheme_public_input_type> preprocessed_public_data,
process(typename policy_type::preprocessed_public_data_type preprocessed_public_data,
const typename policy_type::preprocessed_private_data_type preprocessed_private_data,
typename policy_type::constraint_system_type &constraint_system,
const typename policy_type::variable_assignment_type &assignments,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ namespace nil {
constexpr static const std::size_t f_parts = 4;

public:
static inline bool process(const typename policy_type::preprocessed_public_data_type<commitment_scheme_public_input_type> preprocessed_public_data,
static inline bool process(const typename policy_type::preprocessed_public_data_type preprocessed_public_data,
typename policy_type::template proof_type<commitment_scheme_witness_type,
commitment_scheme_permutation_type,
commitment_scheme_quotient_type,
Expand Down
Loading

0 comments on commit c771165

Please sign in to comment.