barretenberg
Loading...
Searching...
No Matches
mem_prover_crs.hpp
1#pragma once
2
3#include "barretenberg/ecc/scalar_multiplication/point_table.hpp"
4#include "barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp"
5#include "barretenberg/srs/factories/crs_factory.hpp"
6
7namespace barretenberg::srs::factories {
8// Common to both Grumpkin and Bn254, and generally curves regardless of pairing-friendliness
9template <typename Curve> class MemProverCrs : public ProverCrs<Curve> {
10 public:
11 MemProverCrs(std::vector<typename Curve::AffineElement> const& points)
12 : num_points(points.size())
13 , monomials_(scalar_multiplication::point_table_alloc<typename Curve::AffineElement>(points.size()))
14 {
15 std::copy(points.begin(), points.end(), monomials_.get());
16 scalar_multiplication::generate_pippenger_point_table<Curve>(monomials_.get(), monomials_.get(), num_points);
17 }
18
19 typename Curve::AffineElement* get_monomial_points() override { return monomials_.get(); }
20
21 size_t get_monomial_size() const override { return num_points; }
22
23 private:
24 size_t num_points;
25 std::shared_ptr<typename Curve::AffineElement[]> monomials_;
26};
27
28} // namespace barretenberg::srs::factories
Definition: mem_prover_crs.hpp:9
Curve::AffineElement * get_monomial_points() override
Returns the monomial points in a form to be consumed by scalar_multiplication pippenger algorithm.
Definition: mem_prover_crs.hpp:19
Definition: crs_factory.hpp:18