r1cs_gg_ppzksnark/ipp2/prover.hpp File Reference
#include <algorithm>
#include <vector>
#include <tuple>
#include <string>
#include <boost/iterator/zip_iterator.hpp>
#include <nil/crypto3/detail/pack_numeric.hpp>
#include <nil/crypto3/hash/algorithm/hash.hpp>
#include <nil/crypto3/hash/sha2.hpp>
#include <nil/crypto3/math/polynomial/basic_operations.hpp>
#include <nil/crypto3/algebra/multiexp/multiexp.hpp>
#include <nil/crypto3/algebra/multiexp/policies.hpp>
#include <nil/crypto3/algebra/algorithms/pair.hpp>
#include <nil/crypto3/zk/snark/systems/ppzksnark/r1cs_gg_ppzksnark/detail/basic_policy.hpp>
#include <nil/crypto3/zk/snark/systems/ppzksnark/r1cs_gg_ppzksnark/ipp2/proof.hpp>
#include <nil/crypto3/zk/snark/systems/ppzksnark/r1cs_gg_ppzksnark/ipp2/srs.hpp>
#include <nil/crypto3/zk/snark/systems/ppzksnark/r1cs_gg_ppzksnark/ipp2/transcript.hpp>
#include <nil/crypto3/zk/snark/systems/ppzksnark/r1cs_gg_ppzksnark/proof.hpp>
#include <nil/crypto3/zk/snark/systems/ppzksnark/r1cs_gg_ppzksnark/prover.hpp>
Include dependency graph for r1cs_gg_ppzksnark/ipp2/prover.hpp:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Classes | |
class | nil::crypto3::zk::snark::r1cs_gg_ppzksnark_prover< CurveType, ProvingMode::Aggregate > |
Namespaces | |
nil | |
nil::crypto3 | |
nil::crypto3::zk | |
nil::crypto3::zk::snark | |
Functions | |
template<typename CurveType , typename Hash = hashes::sha2<256>, typename InputTranscriptIncludeIterator , typename InputProofIterator > | |
std::enable_if< std::is_same< std::uint8_t, typename std::iterator_traits< InputTranscriptIncludeIterator >::value_type >::value &&std::is_same< typename std::iterator_traits< InputProofIterator >::value_type, r1cs_gg_ppzksnark_proof< CurveType > >::value, r1cs_gg_ppzksnark_aggregate_proof< CurveType > >::type | nil::crypto3::zk::snark::aggregate_proofs (const r1cs_gg_ppzksnark_aggregate_proving_srs< CurveType > &srs, InputTranscriptIncludeIterator tr_include_first, InputTranscriptIncludeIterator tr_include_last, InputProofIterator proofs_first, InputProofIterator proofs_last) |
Aggregate n zkSnark proofs, where n must be a power of two. More... | |
template<typename CurveType , typename InputRange , typename ValueType = typename std::iterator_traits<typename InputRange::iterator>::value_type> | |
std::enable_if< std::is_same< typename CurveType::template g1_type<>::value_type, ValueType >::value||std::is_same< typename CurveType::template g2_type<>::value_type, ValueType >::value||std::is_same< typename CurveType::scalar_field_type::value_type, ValueType >::value >::type | nil::crypto3::zk::snark::compress (InputRange &vec, std::size_t split, const typename CurveType::scalar_field_type::value_type &scalar) |
template<typename CurveType , typename Hash = hashes::sha2<256>, typename InputG1Iterator1 , typename InputG2Iterator , typename InputG1Iterator2 , typename InputScalarIterator > | |
std::enable_if< std::is_same< typename CurveType::template g1_type<>::value_type, typename std::iterator_traits< InputG1Iterator1 >::value_type >::value &&std::is_same< typename CurveType::template g2_type<>::value_type, typename std::iterator_traits< InputG2Iterator >::value_type >::value &&std::is_same< typename CurveType::scalar_field_type::value_type, typename std::iterator_traits< InputScalarIterator >::value_type >::value &&std::is_same< typename CurveType::template g1_type<>::value_type, typename std::iterator_traits< InputG1Iterator2 >::value_type >::value, std::tuple< gipa_proof< CurveType >, std::vector< typename CurveType::scalar_field_type::value_type >, std::vector< typename CurveType::scalar_field_type::value_type > > >::type | nil::crypto3::zk::snark::gipa_tipp_mipp (transcript< CurveType, Hash > &tr, InputG1Iterator1 a_first, InputG1Iterator1 a_last, InputG2Iterator b_first, InputG2Iterator b_last, InputG1Iterator2 c_first, InputG1Iterator2 c_last, const r1cs_gg_ppzksnark_ipp2_vkey< CurveType > &vkey_input, const r1cs_gg_ppzksnark_ipp2_wkey< CurveType > &wkey_input, InputScalarIterator r_first, InputScalarIterator r_last) |
template<typename FieldType , typename InputFieldValueIterator > | |
std::enable_if< std::is_same< typename std::iterator_traits< InputFieldValueIterator >::value_type, typename FieldType::value_type >::value, std::vector< typename FieldType::value_type > >::type | nil::crypto3::zk::snark::polynomial_coefficients_from_transcript (InputFieldValueIterator transcript_first, InputFieldValueIterator transcript_last, const typename FieldType::value_type &r_shift) |
template<typename FieldType , typename InputFieldValueIterator > | |
std::enable_if< std::is_same< typename std::iterator_traits< InputFieldValueIterator >::value_type, typename FieldType::value_type >::value, typename FieldType::value_type >::type | nil::crypto3::zk::snark::polynomial_evaluation_product_form_from_transcript (InputFieldValueIterator transcript_first, InputFieldValueIterator transcript_last, const typename FieldType::value_type &z, const typename FieldType::value_type &r_shift) |
template<typename GroupType , typename InputGroupIterator , typename InputScalarRange > | |
std::enable_if< std::is_same< typename GroupType::value_type, typename std::iterator_traits< InputGroupIterator >::value_type >::value &&std::is_same< typename GroupType::curve_type::scalar_field_type::value_type, typename std::iterator_traits< typename InputScalarRange::iterator >::value_type >::value, kzg_opening< GroupType > >::type | nil::crypto3::zk::snark::prove_commitment_key_kzg_opening (InputGroupIterator srs_powers_alpha_first, InputGroupIterator srs_powers_alpha_last, InputGroupIterator srs_powers_beta_first, InputGroupIterator srs_powers_beta_last, const InputScalarRange &poly, const typename GroupType::curve_type::scalar_field_type::value_type &eval_poly, const typename GroupType::curve_type::scalar_field_type::value_type &kzg_challenge) |
template<typename CurveType , typename InputG2Iterator , typename InputScalarIterator > | |
std::enable_if< std::is_same< typename CurveType::template g2_type<>::value_type, typename std::iterator_traits< InputG2Iterator >::value_type >::value &&std::is_same< typename CurveType::scalar_field_type::value_type, typename std::iterator_traits< InputScalarIterator >::value_type >::value, kzg_opening< typename CurveType::template g2_type<> > >::type | nil::crypto3::zk::snark::prove_commitment_v (InputG2Iterator srs_powers_alpha_first, InputG2Iterator srs_powers_alpha_last, InputG2Iterator srs_powers_beta_first, InputG2Iterator srs_powers_beta_last, InputScalarIterator transcript_first, InputScalarIterator transcript_last, const typename CurveType::scalar_field_type::value_type &kzg_challenge) |
template<typename CurveType , typename InputG1Iterator , typename InputScalarIterator > | |
std::enable_if< std::is_same< typename CurveType::template g1_type<>::value_type, typename std::iterator_traits< InputG1Iterator >::value_type >::value &&std::is_same< typename CurveType::scalar_field_type::value_type, typename std::iterator_traits< InputScalarIterator >::value_type >::value, kzg_opening< typename CurveType::template g1_type<> > >::type | nil::crypto3::zk::snark::prove_commitment_w (InputG1Iterator srs_powers_alpha_first, InputG1Iterator srs_powers_alpha_last, InputG1Iterator srs_powers_beta_first, InputG1Iterator srs_powers_beta_last, InputScalarIterator transcript_first, InputScalarIterator transcript_last, typename CurveType::scalar_field_type::value_type r_shift, const typename CurveType::scalar_field_type::value_type &kzg_challenge) |
template<typename CurveType , typename Hash = hashes::sha2<256>, typename InputG1Iterator1 , typename InputG2Iterator , typename InputG1Iterator2 , typename InputScalarIterator > | |
std::enable_if< std::is_same< typename CurveType::template g1_type<>::value_type, typename std::iterator_traits< InputG1Iterator1 >::value_type >::value &&std::is_same< typename CurveType::template g2_type<>::value_type, typename std::iterator_traits< InputG2Iterator >::value_type >::value &&std::is_same< typename CurveType::template g1_type<>::value_type, typename std::iterator_traits< InputG1Iterator2 >::value_type >::value &&std::is_same< typename CurveType::scalar_field_type::value_type, typename std::iterator_traits< InputScalarIterator >::value_type >::value, tipp_mipp_proof< CurveType > >::type | nil::crypto3::zk::snark::prove_tipp_mipp (const r1cs_gg_ppzksnark_aggregate_proving_srs< CurveType > &srs, transcript< CurveType, Hash > &tr, InputG1Iterator1 a_first, InputG1Iterator1 a_last, InputG2Iterator b_first, InputG2Iterator b_last, InputG1Iterator2 c_first, InputG1Iterator2 c_last, const r1cs_gg_ppzksnark_ipp2_wkey< CurveType > &wkey, InputScalarIterator r_first, InputScalarIterator r_last) |
template<typename FieldType > | |
std::vector< typename FieldType::value_type > | nil::crypto3::zk::snark::structured_scalar_power (std::size_t num, const typename FieldType::value_type &s) |