EIP 1108: Reduce alt_bn128 precompile gas costs
Author | Antonio Salazar Cardozo |
---|---|
Status | Draft |
Type | Standards Track |
Category | Core |
Created | 2018-05-21 |
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.
Motivation
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.
Specification
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.