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;
22 MemBn254Crs(
std::vector<
Curve::AffineElement> points,
g2::affine_element const& g2_point)
24 , precomputed_g2_lines(
25 static_cast<pairing::miller_lines*>(aligned_alloc(64, sizeof(
bb::pairing::miller_lines) * 2)))
26 , monomials_(
std::move(points))
28 if (monomials_.empty() || !monomials_[0].on_curve()) {
29 throw_or_abort(
"invalid g1_identity passed to MemBn254CrsFactory");
35 ~MemBn254Crs()
override { aligned_free(precomputed_g2_lines); }
39 size_t get_monomial_size()
const override {
return monomials_.size(); }
43 pairing::miller_lines const* get_precomputed_g2_lines()
const override {
return precomputed_g2_lines; }
57 : crs_(
std::make_shared<MemBn254Crs>(
std::move(points), g2_point))
64 if (
crs_->get_monomial_size() < degree) {
66 "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_
MemBn254CrsFactory(std::vector< g1::affine_element > points, g2::affine_element const &g2_point)
std::shared_ptr< Crs< curve::BN254 > > get_crs(size_t degree) override
std::string format(Args... args)
constexpr void precompute_miller_lines(const g2Projective &Q, miller_lines &lines)
Precomputation of Miller lines for a point Q in G2.
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
void throw_or_abort(std::string const &err)