HomeEIPs
EIPsEIP-2046
EIP-2046

Reduced gas cost for static calls made to precompiles

StagnantStandards Track: Core
Created: 2019-05-17
Requires: EIP-214, EIP-1352
Alex Beregszaszi (@axic)
DiscussionsOriginal linkEdit
1 min read

EIP-2046 proposes to reduce the gas cost of calling precompiled contracts using STATICCALL from 700 to 40, which should allow more efficient use of precompiles as well as precompiles with a total cost below 700. This change is backwards compatible and should not affect contracts created and deployed before the Byzantium hard fork. The cost reduction is not proposed to be reduced to 0 to prevent malicious proxy contracts from doing any state changing operation.

Video
Anyone may contribute to propose contents.
Go propose
Original

Simple Summary

This change reduces the gas cost of using precompiled contracts.

Abstract

Reduce the base gas cost of calling precompiles using STATICCALL from 700 to 40. This should allow more efficient use of precompiles as well as precompiles with a total cost below 700.

Motivation

The Spurious Dragon hard fork increased the cost of calls significantly to account for loading contract code from the state without making an exception for precompiles, whose "code" is always loaded.

This made use of certain precompiles impractical.

FIXME: extend this with recent reasoning about ECC repricings.

Specification

After block HF the STATICCALL (0xfa) instruction charges different basic gas cost (Gcall in Yellow Paper's notation) depending on the destination address provided:

  • for precompiles (address range as per EIP-1352) the cost is 40
  • for every other address the cost remains unchanged (700)

Rationale

Only the STATICCALL instruction was changed to reduce the impact of the change. This should not be a limiting factor, given precompiles (currently) do not have a state and cannot change the state. However, contracts created and deployed before Byzantium likely will not use STATICCALL and as a result this change will not reduce their costs.

Contrary to EIP-1109 gas reduction to 0 is not proposed. The cost 40 is kept as a cost representing the context switching needed.

Backwards Compatibility

This EIP should be backwards compatible. The only effect is that the cost is reduced. Since the cost is not reduced to zero, it should not be possible for a malicious proxy contract, when deployed before the HF, to do any state changing operation.

Test Cases

TBA

Implementation

TBA

References

This has been previously suggested as part of EIP-1109 and EIP-1231. However EIP-1109 was later changed to a very different approach. The author has suggested to change EIP-1109.

Acknowledgements

Jordi Baylina (@jbaylina) and Matthew Di Ferrante (@mattdf) who have proposed this before.

Copyright and related rights waived via CC0.

Further reading
Anyone may contribute to propose contents.
Go propose
Adopted by projects
Anyone may contribute to propose contents.
Go propose

Not miss a beat of EIPs' update?

Subscribe EIPs Fun to receive the latest updates of EIPs Good for Buidlers to follow up.

View all
Serve Ethereum Builders, Scale the Community.
Resources
GitHub
Supported by