88 if (!map.contains(std::string(domain_separator))) {
90 std::string(domain_separator),
91 Group::derive_generators(domain_separator, num_generators +
generator_offset, 0),
95 GeneratorList& generators = map.at(std::string(domain_separator));
class that stores precomputed generators used for Pedersen commitments and Pedersen hashes
std::vector< AffineElement > GeneratorList
bool initialized_precomputed_generators
typename Curve::Group Group
typename Curve::AffineElement AffineElement
static constexpr size_t DEFAULT_NUM_GENERATORS
constexpr generator_data()=default
static constexpr std::string_view DEFAULT_DOMAIN_SEPARATOR
static generator_data * get_default_generators()
GeneratorView get(const size_t num_generators, const size_t generator_offset=0, const std::string_view domain_separator=DEFAULT_DOMAIN_SEPARATOR) const
std::span< AffineElement const > GeneratorView
static constinit generator_data default_data
static constexpr std::span< const AffineElement > precomputed_generators
We precompute and hard-code a small number of generators. For small pedersen commitments + pedersen h...
std::optional< std::map< std::string, GeneratorList > > generator_map
typename grumpkin::g1 Group
typename Group::affine_element AffineElement
constexpr std::span< const typename Group::affine_element > get_precomputed_generators()
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::string domain_separator
generator_data< Curve > * generators
GeneratorContext(size_t hash_index)
GeneratorContext()=default
GeneratorContext(size_t _offset, std::string_view _domain_separator)