Skip to content

Commit

Permalink
Update EIP-2537: rename PAIRING to PAIRING_CHECK; introduce PAIRING_P…
Browse files Browse the repository at this point in the history
…RODUCT precomiple

Merged by EIP-Bot.
  • Loading branch information
zhenfeizhang authored Jun 19, 2024
1 parent 4fb310b commit 9ccf12c
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions EIPS/eip-2537.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ The motivation of this precompile is to add a cryptographic primitive that allow
| BLS12_G2ADD | 0x0e | precompile address |
| BLS12_G2MUL | 0x0f | precompile address |
| BLS12_G2MSM | 0x10 | precompile address |
| BLS12_PAIRING | 0x11 | precompile address |
| BLS12_PAIRING_CHECK | 0x11 | precompile address |
| BLS12_MAP_FP_TO_G1 | 0x12 | precompile address |
| BLS12_MAP_FP2_TO_G2 | 0x13 | precompile address |

Expand All @@ -45,7 +45,7 @@ If `block.timestamp >= FORK_TIMESTAMP` we introduce *nine* separate precompiles
- BLS12_G2ADD - to perform point addition in G2 (curve over quadratic extension of the base prime field) with a gas cost of `800` gas
- BLS12_G2MUL - to perform point multiplication in G2 (curve over quadratic extension of the base prime field) with a gas cost of `45000` gas
- BLS12_G2MSM - to perform multi-scalar-multiplication (MSM) in G2 (curve over quadratic extension of the base prime field) with a gas cost formula defined in the corresponding section
- BLS12_PAIRING - to perform a pairing operations between a set of *pairs* of (G1, G2) points a gas cost formula defined in the corresponding section
- BLS12_PAIRING_CHECK - to perform a pairing operations between a set of *pairs* of (G1, G2) points a gas cost formula defined in the corresponding section
- BLS12_MAP_FP_TO_G1 - maps base field element into the G1 point with a gas cost of `5500` gas
- BLS12_MAP_FP2_TO_G2 - maps extension field element into the G2 point with a gas cost of `75000` gas

Expand Down Expand Up @@ -115,7 +115,7 @@ On inputs that can not be a valid encodings of field elements the precompile *mu

#### Encoding of points in G1/G2:

Points of G1 and G2 are encoded as byte concatenation of the respective encodings of the `x` and `y` coordinates. Total encoding length for a G1 point is thus `128` bytes and for a G2 point is `256` bytes.
Points of G1 and G2 are encoded as byte concatenation of the respective encodings of the `x` and `y` coordinates. Total encoding length for a G1 point is thus `128` bytes and for a G2 point is `256` bytes.

#### Point of infinity encoding:

Expand Down Expand Up @@ -203,9 +203,9 @@ Error cases:
- An input is on the G2 elliptic curve but not in the correct subgroup
- Input has invalid length

#### ABI for pairing
#### ABI for pairing check

Pairing call expects `384*k` (`k` being a **positive** integer) bytes as an inputs that is interpreted as byte concatenation of `k` slices. Each slice has the following structure:
Pairing check call expects `384*k` (`k` being a **positive** integer) bytes as an inputs that is interpreted as byte concatenation of `k` slices. Each slice has the following structure:

- `128` bytes of G1 point encoding
- `256` bytes of G2 point encoding
Expand Down Expand Up @@ -285,9 +285,9 @@ Discounts table as a vector of pairs `[k, discount]`:

`max_discount = 174`

#### Pairing operation
#### Pairing check operation

The cost of the pairing operation is `43000*k + 65000` where `k` is a number of pairs.
The cost of the pairing check operation is `43000*k + 65000` where `k` is a number of pairs.

#### Fp-to-G1 mapping operation

Expand Down

0 comments on commit 9ccf12c

Please sign in to comment.