EIP 1108: Reduce alt_bn128 precompile gas costs Source

AuthorAntonio Salazar Cardozo
TypeStandards Track
Requires 196, 197

Short Description

Recent changes to the underlying library used by the official Go reference implementation led to significant performance gains for the ECADD, ECMUL, and pairing check precompiled contracts on the alt_bn128 elliptic curve.

What is more, the performance boost for those operations can be also observed for Parity client.

Faster operations on Ethereum clients should be reflected in reduced gas costs.


Recently, the underlying library used by the official Go reference implementation to implement the ECADD (at address 0x06), ECMUL (at address 0x07), and pairing check (at address 0x08) precompiled contracts was shifted to Cloudflare’s bn256 library. Based on the initial PR that introduced this change, and corroborated in a later note, the computational cost of ECADD, ECMUL, and pairing checks (excepting the constant) has dropped roughly an order of magnitude across the board.

Also, optimisations in the bn library used by the Parity client led to a significant performance boost we benchmarked and compared against the previous results.


Following is a table with the current gas cost and new gas cost:

Contract Address Current Gas Cost Updated Gas Cost
ECADD 0x06 500[1] 150
ECMUL 0x07 40 000[1] 6 000
Pairing check 0x08 80 000 * k + 100 000[2] 28 300 * k + 35 450

The gas costs for ECADD and ECMUL are updates to the costs listed in EIP-196, while the gas costs for the pairing check are updates to the cost listed in EIP-197. Updated gas costs have been adjusted to the less performant client which is Parity, according to benchmarks[3].

[1]- Per EIP-196.

[2]- Per EIP-197.

[3]- Parity benchmarks.