Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
mem_grumpkin_crs_factory.cpp
Go to the documentation of this file.
5
6namespace {
7
8using namespace bb::curve;
9using namespace bb;
10using namespace bb::srs::factories;
11
12class MemGrumpkinCrs : public Crs<Grumpkin> {
13 public:
14 MemGrumpkinCrs(const MemGrumpkinCrs&) = delete;
15 MemGrumpkinCrs(MemGrumpkinCrs&&) noexcept = default;
16 MemGrumpkinCrs& operator=(const MemGrumpkinCrs&) = delete;
17 MemGrumpkinCrs& operator=(MemGrumpkinCrs&&) = delete;
18
19 MemGrumpkinCrs(std::vector<Grumpkin::AffineElement> points)
20 : monomials_(std::move(points))
21 {}
22
23 ~MemGrumpkinCrs() override = default;
24 std::span<Grumpkin::AffineElement> get_monomial_points() override { return monomials_; }
25 size_t get_monomial_size() const override { return monomials_.size(); }
26 Grumpkin::AffineElement get_g1_identity() const override { return monomials_[0]; };
27
28 private:
30};
31
32} // namespace
33
34namespace bb::srs::factories {
35
37 : crs_(std::make_shared<MemGrumpkinCrs>(std::move(points)))
38{}
39
41{
42 if (crs_->get_monomial_size() < degree) {
43 throw_or_abort(format("prover trying to get too many points in MemGrumpkinCrsFactory - ",
44 degree,
45 " is more than ",
46 crs_->get_monomial_size()));
47 }
48 return crs_;
49}
50
51} // namespace bb::srs::factories
typename Group::affine_element AffineElement
Definition grumpkin.hpp:65
std::shared_ptr< Crs< curve::Grumpkin > > crs_
MemGrumpkinCrsFactory(std::vector< curve::Grumpkin::AffineElement > points)
std::shared_ptr< Crs< curve::Grumpkin > > get_crs(size_t degree) override
std::string format(Args... args)
Definition log.hpp:23
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
STL namespace.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
void throw_or_abort(std::string const &err)