|
Barretenberg
The ZK-SNARK library at the core of Aztec
|
An object storing two EC points that represent the inputs to a pairing check. More...
#include <pairing_points.hpp>
Public Types | |
| using | Builder = typename Curve::Builder |
| using | Group = Curve::Group |
| using | Fq = Curve::BaseField |
| using | Fr = Curve::ScalarField |
| using | value_type = Group |
Public Member Functions | |
| Group & | P0 () |
| Group & | P1 () |
| const Group & | P0 () const |
| const Group & | P1 () const |
| PairingPoints ()=default | |
| PairingPoints (const Group &p0, const Group &p1) | |
| auto & | operator[] (size_t idx) |
| const auto & | operator[] (size_t idx) const |
| auto | begin () |
| auto | end () |
| auto | begin () const |
| auto | end () const |
| Curve::bool_ct | operator== (PairingPoints const &other) const |
| void | aggregate (PairingPoints const &other) |
| Compute a linear combination of the present pairing points with an input set of pairing points. | |
| uint32_t | set_public () |
| Set the witness indices for the pairing points to public. | |
| void | fix_witness () |
| Record the witness values of pairing points' coordinates in the selectors. | |
| bool | check () const |
| Perform native pairing check on the witness values. | |
Static Public Member Functions | |
| static constexpr size_t | size () |
| static PairingPoints | aggregate_multiple (std::vector< PairingPoints > &pairing_points, bool handle_edge_cases=true) |
| Aggregate multiple PairingPoints using random linear combination. | |
| static uint32_t | set_default_to_public (Builder *builder) |
| Set the witness indices for the default limbs of the pairing points to public. | |
| static PairingPoints | construct_default () |
| Construct default pairing points. | |
Public Attributes | |
| std::array< Group, 2 > | _points |
| bool | has_data = false |
| uint32_t | tag_index = 0 |
Static Public Attributes | |
| static constexpr size_t | PUBLIC_INPUTS_SIZE = PAIRING_POINTS_SIZE |
| static constexpr size_t | SIZE = 2 |
An object storing two EC points that represent the inputs to a pairing check.
The points may represent the output of a single partial recursive verification or the linear combination of multiple sets of pairing points.
TODO(https://github.com/AztecProtocol/barretenberg/issues/1421): Proper tests for PairingPoints
| Builder_ |
Definition at line 58 of file pairing_points.hpp.
| using bb::stdlib::recursion::PairingPoints< Curve >::Builder = typename Curve::Builder |
Definition at line 59 of file pairing_points.hpp.
| using bb::stdlib::recursion::PairingPoints< Curve >::Fq = Curve::BaseField |
Definition at line 61 of file pairing_points.hpp.
| using bb::stdlib::recursion::PairingPoints< Curve >::Fr = Curve::ScalarField |
Definition at line 62 of file pairing_points.hpp.
| using bb::stdlib::recursion::PairingPoints< Curve >::Group = Curve::Group |
Definition at line 60 of file pairing_points.hpp.
| using bb::stdlib::recursion::PairingPoints< Curve >::value_type = Group |
Definition at line 68 of file pairing_points.hpp.
|
default |
|
inline |
Definition at line 83 of file pairing_points.hpp.
|
inline |
Compute a linear combination of the present pairing points with an input set of pairing points.
The linear combination is done with a recursion separator that is the hash of the two sets of pairing points.
| other | |
| recursion_separator |
Definition at line 213 of file pairing_points.hpp.
|
inlinestatic |
Aggregate multiple PairingPoints using random linear combination.
The pairing points are aggregated using challenges generated as the consecutive hashes of the pairing points being aggregated. Computes: P_agg = P₀ + r₁·P₁ + r₂·P₂ + ... + rₙ₋₁·Pₙ₋₁ where r₁,...,rₙ₋₁ are 128-bit challenges derived from hashing all input points.
| pairing_points | Vector of pairing points to aggregate (requires size > 1) |
| handle_edge_cases | If true, batch_mul handles edge cases where points might be zero or challenges might cause numerical issues. If false, assumes all points are non-zero and non-colliding (saves circuit gates). |
Safety of handle_edge_cases=false:
Definition at line 136 of file pairing_points.hpp.
|
inline |
Definition at line 104 of file pairing_points.hpp.
|
inline |
Definition at line 110 of file pairing_points.hpp.
|
inline |
Perform native pairing check on the witness values.
Extracts native values from P0 and P1 and performs the pairing verification.
Definition at line 282 of file pairing_points.hpp.
|
inlinestatic |
Construct default pairing points.
Definition at line 323 of file pairing_points.hpp.
|
inline |
Definition at line 109 of file pairing_points.hpp.
|
inline |
Definition at line 111 of file pairing_points.hpp.
|
inline |
Record the witness values of pairing points' coordinates in the selectors.
Definition at line 271 of file pairing_points.hpp.
|
inline |
Definition at line 114 of file pairing_points.hpp.
|
inline |
Definition at line 99 of file pairing_points.hpp.
|
inline |
Definition at line 100 of file pairing_points.hpp.
|
inline |
Definition at line 76 of file pairing_points.hpp.
|
inline |
Definition at line 78 of file pairing_points.hpp.
|
inline |
Definition at line 77 of file pairing_points.hpp.
|
inline |
Definition at line 79 of file pairing_points.hpp.
|
inlinestatic |
Set the witness indices for the default limbs of the pairing points to public.
Optimized version that directly sets precomputed Fr limb values as public inputs, avoiding expensive bigfield operations. The default pairing points satisfy the pairing equation.
Definition at line 297 of file pairing_points.hpp.
|
inline |
Set the witness indices for the pairing points to public.
Definition at line 260 of file pairing_points.hpp.
|
inlinestaticconstexpr |
Definition at line 112 of file pairing_points.hpp.
| std::array<Group, 2> bb::stdlib::recursion::PairingPoints< Curve >::_points |
Definition at line 71 of file pairing_points.hpp.
| bool bb::stdlib::recursion::PairingPoints< Curve >::has_data = false |
Definition at line 73 of file pairing_points.hpp.
|
staticconstexpr |
Definition at line 65 of file pairing_points.hpp.
|
staticconstexpr |
Definition at line 69 of file pairing_points.hpp.
| uint32_t bb::stdlib::recursion::PairingPoints< Curve >::tag_index = 0 |
Definition at line 74 of file pairing_points.hpp.