3#include "barretenberg/ecc/curves/bn254/bn254.hpp"
4#include "barretenberg/ecc/curves/grumpkin/grumpkin.hpp"
5#include "barretenberg/ecc/scalar_multiplication/point_table.hpp"
6#include "barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp"
7#include "crs_factory.hpp"
11namespace barretenberg::srs::factories {
21 std::shared_ptr<barretenberg::srs::factories::ProverCrs<Curve>> get_prover_crs(
size_t degree)
override;
23 std::shared_ptr<barretenberg::srs::factories::VerifierCrs<Curve>> get_verifier_crs(
size_t degree = 0)
override;
28 std::shared_ptr<barretenberg::srs::factories::ProverCrs<Curve>> prover_crs_;
29 std::shared_ptr<barretenberg::srs::factories::VerifierCrs<Curve>> verifier_crs_;
34 FileProverCrs(
const size_t num_points, std::string
const& path)
35 : num_points(num_points)
37 monomials_ = scalar_multiplication::point_table_alloc<typename Curve::AffineElement>(num_points);
40 scalar_multiplication::generate_pippenger_point_table<Curve>(monomials_.get(), monomials_.get(), num_points);
45 [[nodiscard]]
size_t get_monomial_size()
const {
return num_points; }
49 std::shared_ptr<typename Curve::AffineElement[]> monomials_;
63 Curve::G2AffineElement get_g2x()
const override {
return g2_x; };
65 Curve::AffineElement
get_first_g1()
const override {
return first_g1; };
68 Curve::AffineElement first_g1;
69 Curve::G2AffineElement g2_x;
79 Curve::AffineElement* get_monomial_points()
const override;
80 size_t get_monomial_size()
const override;
81 Curve::AffineElement
get_first_g1()
const override {
return first_g1; };
84 Curve::AffineElement first_g1;
86 std::shared_ptr<Curve::AffineElement[]> monomials_;
89extern template class FileProverCrs<curve::BN254>;
90extern template class FileProverCrs<curve::Grumpkin>;
Definition: crs_factory.hpp:72
Definition: file_crs_factory.hpp:16
Definition: file_crs_factory.hpp:32
Curve::AffineElement * get_monomial_points()
Returns the monomial points in a form to be consumed by scalar_multiplication pippenger algorithm.
Definition: file_crs_factory.hpp:43
pairing::miller_lines const * get_precomputed_g2_lines() const override
As the G_2 element of the CRS is fixed, we can precompute the operations performed on it during the p...
Definition: file_crs_factory.hpp:64
Curve::AffineElement get_first_g1() const override
Returns the first G_1 element from the CRS, used by the Shplonk verifier to compute the final commtim...
Definition: file_crs_factory.hpp:65
Curve::AffineElement get_first_g1() const override
Returns the first G_1 element from the CRS, used by the Shplonk verifier to compute the final commtim...
Definition: file_crs_factory.hpp:81
Definition: file_crs_factory.hpp:52
Definition: crs_factory.hpp:18
Definition: crs_factory.hpp:30
Definition: grumpkin.hpp:36
Definition: pairing.hpp:27