15template <
typename Curve>
class Crs {
31 virtual ~
Crs() = default;
36 virtual
std::span<
Curve::AffineElement> get_monomial_points() = 0;
37 virtual
size_t get_monomial_size() const = 0;
43 virtual
Curve::AffineElement get_g1_identity() const = 0;
48 virtual
bb::pairing::miller_lines const* get_precomputed_g2_lines() const = 0;
50 virtual
Curve::G2AffineElement get_g2x() const = 0;
54template <> class
Crs<curve::Grumpkin> {
92 virtual
std::shared_ptr<
bb::srs::factories::
Crs<
Curve>> get_crs(
size_t) = 0;
93 std::shared_ptr<
bb::srs::factories::
Crs<
Curve>> get_verifier_crs() {
return get_crs(1); };
typename Group::affine_element AffineElement
Crs(Crs &&) noexcept=default
Crs & operator=(Crs &&)=delete
Crs & operator=(const Crs &)=delete
virtual size_t get_monomial_size() const =0
virtual std::span< Curve::AffineElement > get_monomial_points()=0
Returns the monomial points in a form to be consumed by scalar_multiplication pippenger algorithm.
virtual Curve::AffineElement get_g1_identity() const =0
Returns the first G_1 element from the CRS, used by the Shplonk verifier to compute the final commtim...
CrsFactory(const CrsFactory &)=delete
CrsFactory(CrsFactory &&) noexcept=default
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept