Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::stdlib::field_conversion Namespace Reference

Typedefs

template<typename Builder >
using fr = field_t< Builder >
 
template<typename Builder >
using fq = bigfield< Builder, bb::Bn254FqParams >
 
template<typename Builder >
using bn254_element = element< Builder, fq< Builder >, fr< Builder >, curve::BN254::Group >
 
template<typename Builder >
using grumpkin_element = cycle_group< Builder >
 

Functions

template<typename Builder >
fq< Builderconvert_to_grumpkin_fr (Builder &builder, const fr< Builder > &f)
 Converts a challenge to a fq<Builder>
 
template fq< UltraCircuitBuilderconvert_to_grumpkin_fr< UltraCircuitBuilder > (UltraCircuitBuilder &builder, const fr< UltraCircuitBuilder > &f)
 
template fq< MegaCircuitBuilderconvert_to_grumpkin_fr< MegaCircuitBuilder > (MegaCircuitBuilder &builder, const fr< MegaCircuitBuilder > &f)
 
template<typename Builder , typename T >
convert_challenge (Builder &builder, const fr< Builder > &challenge)
 
template<typename Builder >
std::vector< fr< Builder > > convert_goblin_fr_to_bn254_frs (const goblin_field< Builder > &input)
 
template<typename Builder >
std::vector< fr< Builder > > convert_grumpkin_fr_to_bn254_frs (const fq< Builder > &input)
 
template<typename Builder , typename T >
constexpr size_t calc_num_bn254_frs ()
 Calculates the size of a types (in their native form) in terms of fr<Builder>s.
 
template<typename Builder , typename T >
convert_from_bn254_frs (Builder &builder, std::span< const fr< Builder > > fr_vec)
 Conversions from vector of fr<Builder> elements to transcript types.
 
template<typename Builder , typename T >
std::vector< fr< Builder > > convert_to_bn254_frs (const T &val)
 Conversion from transcript values to fr<Builder>s.
 
template<typename TargetType , typename Builder >
TargetType deserialize_from_frs (Builder &builder, std::span< fr< Builder > > elements, size_t &num_frs_read)
 Deserialize an object of specified type from a buffer of field elements; update provided read count in place.
 

Typedef Documentation

◆ bn254_element

Definition at line 21 of file field_conversion.hpp.

◆ fq

Definition at line 20 of file field_conversion.hpp.

◆ fr

template<typename Builder >
using bb::stdlib::field_conversion::fr = typedef field_t<Builder>

Definition at line 19 of file field_conversion.hpp.

◆ grumpkin_element

Definition at line 22 of file field_conversion.hpp.

Function Documentation

◆ calc_num_bn254_frs()

template<typename Builder , typename T >
constexpr size_t bb::stdlib::field_conversion::calc_num_bn254_frs ( )
constexpr

Calculates the size of a types (in their native form) in terms of fr<Builder>s.

We want to support the following types: fr<Builder>, fq<Builder>, bn254_element<Builder>, grumpkin_element<Builder, bb::Univariate<FF, N>, std::array<FF, N>, for FF = fr<Builder> or fq<Builder>, and N is arbitrary

Template Parameters
Builder
T
Returns
constexpr size_t

Definition at line 64 of file field_conversion.hpp.

◆ convert_challenge()

template<typename Builder , typename T >
T bb::stdlib::field_conversion::convert_challenge ( Builder builder,
const fr< Builder > &  challenge 
)
inline

Definition at line 29 of file field_conversion.hpp.

◆ convert_from_bn254_frs()

template<typename Builder , typename T >
T bb::stdlib::field_conversion::convert_from_bn254_frs ( Builder builder,
std::span< const fr< Builder > >  fr_vec 
)

Conversions from vector of fr<Builder> elements to transcript types.

We want to support the following types: fr<Builder>, fq<Builder>, bn254_element<Builder>, grumpkin_element<Builder, bb::Univariate<FF, N>, std::array<FF, N>, for FF = fr<Builder> or fq<Builder>, and N is arbitrary

Template Parameters
Builder
T
Parameters
builder
fr_vec
Returns
T
Todo:
https://github.com/AztecProtocol/barretenberg/issues/1065 optimize validate_on_curve and check points reconstructed from the transcript

Definition at line 94 of file field_conversion.hpp.

◆ convert_goblin_fr_to_bn254_frs()

template<typename Builder >
std::vector< fr< Builder > > bb::stdlib::field_conversion::convert_goblin_fr_to_bn254_frs ( const goblin_field< Builder > &  input)
inline

Definition at line 39 of file field_conversion.hpp.

◆ convert_grumpkin_fr_to_bn254_frs()

template<typename Builder >
std::vector< fr< Builder > > bb::stdlib::field_conversion::convert_grumpkin_fr_to_bn254_frs ( const fq< Builder > &  input)
inline

Definition at line 47 of file field_conversion.hpp.

◆ convert_to_bn254_frs()

template<typename Builder , typename T >
std::vector< fr< Builder > > bb::stdlib::field_conversion::convert_to_bn254_frs ( const T &  val)

Conversion from transcript values to fr<Builder>s.

We want to support the following types: bool, size_t, uint32_t, uint64_t, fr<Builder>, fq<Builder>, bn254_element<Builder>, grumpkin_element<Builder,, bb::Univariate<FF, N>, std::array<FF, N>, for FF = fr<Builder>/fq<Builder>, and N is arbitrary.

Template Parameters
Builder
T
Parameters
val
Returns
std::vector<fr<Builder>>

Definition at line 161 of file field_conversion.hpp.

◆ convert_to_grumpkin_fr()

template<typename Builder >
fq< Builder > bb::stdlib::field_conversion::convert_to_grumpkin_fr ( Builder builder,
const fr< Builder > &  f 
)

Converts a challenge to a fq<Builder>

We sometimes need challenges that are a bb::fq element, so we need to convert the bb::fr challenge to a bb::fq type. We do this by in a similar fashion to the convert_from_bn254_frs function that converts to a fq<Builder>. In fact, we do call that function that the end, but we first have to split the fr<Builder> into two pieces, one that is the 136 lower bits and one that is the 118 higher bits. Then, we can split these two pieces into their bigfield limbs through convert_from_bn254_frs, which is actually just a bigfield constructor that takes in two two-limb frs.

TODO(https://github.com/AztecProtocol/barretenberg/issues/850): audit this function more carefully

Template Parameters
Builder

Definition at line 24 of file field_conversion.cpp.

◆ convert_to_grumpkin_fr< MegaCircuitBuilder >()

◆ convert_to_grumpkin_fr< UltraCircuitBuilder >()

◆ deserialize_from_frs()

template<typename TargetType , typename Builder >
TargetType bb::stdlib::field_conversion::deserialize_from_frs ( Builder builder,
std::span< fr< Builder > >  elements,
size_t &  num_frs_read 
)

Deserialize an object of specified type from a buffer of field elements; update provided read count in place.

Template Parameters
TargetTypeType to reconstruct from buffer of field elements
Parameters
builder
elementsBuffer of field elements
num_frs_readIndex at which to read into buffer

Definition at line 205 of file field_conversion.hpp.