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> const& points)
20 : monomials_(points.size())
21 {
22 std::copy(points.begin(), points.end(), monomials_.begin());
23 }
24
25 ~MemGrumpkinCrs() override = default;
26 std::span<Grumpkin::AffineElement> get_monomial_points() override { return monomials_; }
27 size_t get_monomial_size() const override { return monomials_.size(); }
28 Grumpkin::AffineElement get_g1_identity() const override { return monomials_[0]; };
29
30 private:
32};
33
34} // namespace
35
36namespace bb::srs::factories {
37
39 : crs_(std::make_shared<MemGrumpkinCrs>(points))
40{
41 if (points.empty() || !points[0].on_curve()) {
42 throw_or_abort("invalid vector passed to MemGrumpkinCrsFactory");
43 }
44 vinfo(
45 "Initialized ", curve::Grumpkin::name, " prover CRS from memory with num points = ", crs_->get_monomial_size());
46}
47
49{
50 if (crs_->get_monomial_size() < degree) {
51 throw_or_abort(format("prover trying to get too many points in MemGrumpkinCrsFactory - ",
52 degree,
53 " is more than ",
54 crs_->get_monomial_size()));
55 }
56 return crs_;
57}
58
59} // namespace bb::srs::factories
static constexpr const char * name
Definition grumpkin.hpp:58
typename Group::affine_element AffineElement
Definition grumpkin.hpp:56
MemGrumpkinCrsFactory(const std::vector< curve::Grumpkin::AffineElement > &points)
std::shared_ptr< Crs< curve::Grumpkin > > crs_
std::shared_ptr< Crs< curve::Grumpkin > > get_crs(size_t degree) override
std::string format(Args... args)
Definition log.hpp:20
void vinfo(Args... args)
Definition log.hpp:76
Entry point for Barretenberg command-line interface.
STL namespace.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
void throw_or_abort(std::string const &err)