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

Classes

class  stdlib_field_conversion
 

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 >
 
using BuilderTypes = testing::Types< UltraCircuitBuilder, MegaCircuitBuilder >
 

Functions

 TYPED_TEST_SUITE (stdlib_field_conversion, BuilderTypes)
 
 TYPED_TEST (stdlib_field_conversion, FieldConversionFr)
 Field conversion test for fr<Builder>
 
 TYPED_TEST (stdlib_field_conversion, FieldConversionGrumpkinFr)
 Field conversion test for fq<Builder>
 
 TYPED_TEST (stdlib_field_conversion, FieldConversionBN254AffineElement)
 Field conversion test for bn254_element<Builder>
 
 TYPED_TEST (stdlib_field_conversion, FieldConversionGrumpkinAffineElement)
 Field conversion test for grumpkin_element<Builder>
 
 TYPED_TEST (stdlib_field_conversion, DeserializePointAtInfinity)
 
 TYPED_TEST (stdlib_field_conversion, FieldConversionArrayBn254Fr)
 Field conversion test for std::array<fr<Builder>, N>
 
 TYPED_TEST (stdlib_field_conversion, FieldConversionArrayGrumpkinFr)
 Field conversion test for std::array<fq<Builder>, N>
 
 TYPED_TEST (stdlib_field_conversion, FieldConversionUnivariateBn254Fr)
 Field conversion test for Univariate<fr<Builder>, N>
 
 TYPED_TEST (stdlib_field_conversion, FieldConversionUnivariateGrumpkinFr)
 Field conversion test for Univariate<fq<Builder>, N>
 
 TYPED_TEST (stdlib_field_conversion, GateCountScalarDeserialization)
 Measure gate counts for scalar (fr) deserialization.
 
 TYPED_TEST (stdlib_field_conversion, GateCountBigfieldDeserialization)
 Measure gate counts for bigfield deserialization.
 
 TYPED_TEST (stdlib_field_conversion, GateCountMultipleBigfieldDeserialization)
 Measure gate counts for multiple bigfield deserializations.
 
 TYPED_TEST (stdlib_field_conversion, GateCountBN254PointDeserialization)
 Measure gate counts for BN254 point deserialization.
 
 TYPED_TEST (stdlib_field_conversion, GateCountMultipleBN254PointDeserialization)
 Measure gate counts for multiple BN254 point deserializations.
 
 TYPED_TEST (stdlib_field_conversion, GateCountGrumpkinPointDeserialization)
 Measure gate counts for Grumpkin point deserialization.
 
 TYPED_TEST (stdlib_field_conversion, GateCountArrayDeserialization)
 Measure gate counts for array deserialization.
 
 TYPED_TEST (stdlib_field_conversion, GateCountUnivariateDeserialization)
 Measure gate counts for univariate deserialization.
 
 TYPED_TEST (stdlib_field_conversion, BigfieldDeserializationFailsOnLimbOverflow)
 Failure test for deserializing limbs that exceed their range bounds.
 
 TYPED_TEST (stdlib_field_conversion, BothCodecsRejectPointAtInfinityAlias)
 Test that both codecs reject point with alias coordinates.
 
 TYPED_TEST (stdlib_field_conversion, BothCodecsAcceptCanonicalRejectAlias)
 Test that both codecs accept canonical values and reject aliases.
 

Typedef Documentation

◆ bn254_element

◆ BuilderTypes

◆ fq

Definition at line 12 of file field_conversion.test.cpp.

◆ fr

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

Definition at line 11 of file field_conversion.test.cpp.

◆ grumpkin_element

Definition at line 14 of file field_conversion.test.cpp.

Function Documentation

◆ TYPED_TEST() [1/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
BigfieldDeserializationFailsOnLimbOverflow   
)

Failure test for deserializing limbs that exceed their range bounds.

The encoding uses low_limb (136 bits) and high_limb (118 bits). This test verifies that a high_limb value exceeding 2^118 is rejected by both codecs. Native codec uses BB_ASSERT, circuit codec uses in-circuit range constraints.

Definition at line 449 of file field_conversion.test.cpp.

◆ TYPED_TEST() [2/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
BothCodecsAcceptCanonicalRejectAlias   
)

Test that both codecs accept canonical values and reject aliases.

With assert_is_in_field, only canonical values < Fq::modulus are accepted.

  • q - 1: Maximum canonical value (accepted)
  • q: Smallest alias (rejected)
  • Large value between q and 2^254: Also rejected (not just boundary)

Definition at line 531 of file field_conversion.test.cpp.

◆ TYPED_TEST() [3/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
BothCodecsRejectPointAtInfinityAlias   
)

Test that both codecs reject point with alias coordinates.

Specific case from audit: (x=modulus, y=modulus) should be rejected by both. For Ultra, the on-curve check is in the main circuit. For Mega (goblin), the on-curve check is delegated to ECCVM (see ECCVMTranscriptRelationImpl), so the main circuit will pass.

Definition at line 490 of file field_conversion.test.cpp.

◆ TYPED_TEST() [4/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
DeserializePointAtInfinity   
)

Definition at line 221 of file field_conversion.test.cpp.

◆ TYPED_TEST() [5/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
FieldConversionArrayBn254Fr   
)

Field conversion test for std::array<fr<Builder>, N>

Definition at line 251 of file field_conversion.test.cpp.

◆ TYPED_TEST() [6/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
FieldConversionArrayGrumpkinFr   
)

Field conversion test for std::array<fq<Builder>, N>

Definition at line 275 of file field_conversion.test.cpp.

◆ TYPED_TEST() [7/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
FieldConversionBN254AffineElement   
)

Field conversion test for bn254_element<Builder>

Definition at line 121 of file field_conversion.test.cpp.

◆ TYPED_TEST() [8/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
FieldConversionFr   
)

Field conversion test for fr<Builder>

Definition at line 85 of file field_conversion.test.cpp.

◆ TYPED_TEST() [9/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
FieldConversionGrumpkinAffineElement   
)

Field conversion test for grumpkin_element<Builder>

Definition at line 178 of file field_conversion.test.cpp.

◆ TYPED_TEST() [10/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
FieldConversionGrumpkinFr   
)

Field conversion test for fq<Builder>

Definition at line 106 of file field_conversion.test.cpp.

◆ TYPED_TEST() [11/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
FieldConversionUnivariateBn254Fr   
)

Field conversion test for Univariate<fr<Builder>, N>

Definition at line 301 of file field_conversion.test.cpp.

◆ TYPED_TEST() [12/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
FieldConversionUnivariateGrumpkinFr   
)

Field conversion test for Univariate<fq<Builder>, N>

Definition at line 316 of file field_conversion.test.cpp.

◆ TYPED_TEST() [13/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
GateCountArrayDeserialization   
)

Measure gate counts for array deserialization.

Arrays of scalars add no gates

Definition at line 411 of file field_conversion.test.cpp.

◆ TYPED_TEST() [14/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
GateCountBigfieldDeserialization   
)

Measure gate counts for bigfield deserialization.

Definition at line 356 of file field_conversion.test.cpp.

◆ TYPED_TEST() [15/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
GateCountBN254PointDeserialization   
)

Measure gate counts for BN254 point deserialization.

Includes bigfield reconstruction + point-at-infinity check + on-curve validation

Definition at line 375 of file field_conversion.test.cpp.

◆ TYPED_TEST() [16/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
GateCountGrumpkinPointDeserialization   
)

Measure gate counts for Grumpkin point deserialization.

Includes point-at-infinity check + on-curve validation

Definition at line 401 of file field_conversion.test.cpp.

◆ TYPED_TEST() [17/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
GateCountMultipleBigfieldDeserialization   
)

Measure gate counts for multiple bigfield deserializations.

Range constraints are batched, making subsequent bigfields much cheaper

Definition at line 366 of file field_conversion.test.cpp.

◆ TYPED_TEST() [18/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
GateCountMultipleBN254PointDeserialization   
)

Measure gate counts for multiple BN254 point deserializations.

Definition at line 388 of file field_conversion.test.cpp.

◆ TYPED_TEST() [19/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
GateCountScalarDeserialization   
)

Measure gate counts for scalar (fr) deserialization.

Must be zero gates, as it's the "native" field type of our circuits.

Definition at line 347 of file field_conversion.test.cpp.

◆ TYPED_TEST() [20/20]

bb::stdlib::field_conversion_tests::TYPED_TEST ( stdlib_field_conversion  ,
GateCountUnivariateDeserialization   
)

Measure gate counts for univariate deserialization.

Same as array - no gates added

Definition at line 429 of file field_conversion.test.cpp.

◆ TYPED_TEST_SUITE()

bb::stdlib::field_conversion_tests::TYPED_TEST_SUITE ( stdlib_field_conversion  ,
BuilderTypes   
)