Skip to main content
Version: v3.x

Pairing

A library implementing the alt_bn128 elliptic curve operations.

PRIME_Q​

uint256 PRIME_Q

G1Point​

struct G1Point {
uint256 x;
uint256 y;
}

G2Point​

struct G2Point {
uint256[2] x;
uint256[2] y;
}

PairingAddFailed​

error PairingAddFailed()

custom errors

PairingMulFailed​

error PairingMulFailed()

PairingOpcodeFailed​

error PairingOpcodeFailed()

negate​

function negate(struct Pairing.G1Point point) internal pure returns (struct Pairing.G1Point)

The negation of point, i.e. point.plus(point.negate()) should be zero.

plus​

function plus(struct Pairing.G1Point p1, struct Pairing.G1Point p2) internal view returns (struct Pairing.G1Point r)

r Returns the sum of two points of G1.

scalarMul​

function scalarMul(struct Pairing.G1Point point, uint256 s) internal view returns (struct Pairing.G1Point r)

r Return the product of a point on G1 and a scalar, i.e. point == point.scalarMul(1) and point.plus(point) == point.scalarMul(2) for all points point.

pairing​

function pairing(struct Pairing.G1Point a1, struct Pairing.G2Point a2, struct Pairing.G1Point b1, struct Pairing.G2Point b2, struct Pairing.G1Point c1, struct Pairing.G2Point c2, struct Pairing.G1Point d1, struct Pairing.G2Point d2) internal view returns (bool isValid)

Return Values​

NameTypeDescription
isValidboolThe result of computing the pairing check e(p1[0], p2[0]) * .... * e(p1[n], p2[n]) == 1 For example, pairing([P1(), P1().negate()], [P2(), P2()]) should return true.