13class MemBn254Crs :
public Crs<curve::BN254> {
17 MemBn254Crs(
const MemBn254Crs&) =
delete;
18 MemBn254Crs(MemBn254Crs&&) noexcept = default;
19 MemBn254Crs& operator=(const MemBn254Crs&) = delete;
20 MemBn254Crs& operator=(MemBn254Crs&&) = delete;
24 , precomputed_g2_lines(
25 static_cast<pairing::miller_lines*>(aligned_alloc(64, sizeof(
bb::pairing::miller_lines) * 2)))
26 , monomials_(points.size())
28 if (points.empty() || !points[0].on_curve()) {
29 throw_or_abort(
"invalid g1_identity passed to MemBn254CrsFactory");
31 std::copy(points.begin(), points.end(), monomials_.begin());
36 ~MemBn254Crs()
override { aligned_free(precomputed_g2_lines); }
40 size_t get_monomial_size()
const override {
return monomials_.size(); }
44 pairing::miller_lines const* get_precomputed_g2_lines()
const override {
return precomputed_g2_lines; }
59 : crs_(
std::make_shared<MemBn254Crs>(points, g2_point))
66 if (
crs_->get_monomial_size() < degree) {
68 "prover trying to get too many points in MemBn254CrsFactory! ",
crs_->get_monomial_size(),
" vs ", degree));
static constexpr const char * name
group class. Represents an elliptic curve group element. Group is parametrised by Fq and Fr
static constexpr element one
std::shared_ptr< Crs< curve::BN254 > > crs_
std::shared_ptr< Crs< curve::BN254 > > get_crs(size_t degree) override
MemBn254CrsFactory(std::vector< g1::affine_element > const &points, g2::affine_element const &g2_point)
std::string format(Args... args)
constexpr void precompute_miller_lines(const g2::element &Q, miller_lines &lines)
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
void throw_or_abort(std::string const &err)