mirror of
https://github.com/status-im/EIPs.git
synced 2025-01-27 15:15:03 +00:00
EIP-1109: Remove call costs for precompiled contracts (#1109)
* Remove call costs for precompiled contracts * EIP number added and file name changed * Fixed discussion-to field * Fixed type and category fields * discussion-to field changed to ethereum-magicians * Change a bad change * Changed the discussion link
This commit is contained in:
parent
ecb2efbcd1
commit
b26ff65c53
55
EIPS/eip-1109.md
Normal file
55
EIPS/eip-1109.md
Normal file
@ -0,0 +1,55 @@
|
||||
---
|
||||
eip: 1109
|
||||
title: Remove CALL costs for precompiled contracts
|
||||
author: Jordi Baylina (@jbaylina)
|
||||
discussions-to: https://ethereum-magicians.org/t/eip-1109-remove-call-costs-for-precompiled-contracts/447
|
||||
status: Draft
|
||||
type: Standards Track
|
||||
category: Core
|
||||
created: 2018-05-22
|
||||
---
|
||||
|
||||
## Simple Summary
|
||||
|
||||
This EIP removes the gas costs of the CALL-like opcodes when calling precompiled contracts.
|
||||
|
||||
## Abstract
|
||||
|
||||
This EIP tries to resolve the problem of high gas consumption when calling precompiled contracts with a small gas cost. Setting the gas costs to 0 when calling a precompiled contract allows to define precompiled contracts whose effective cost when calling it is less than 700.
|
||||
|
||||
## Motivation
|
||||
|
||||
Each precompiled contract has an already defined a cost for calling it. It does not make sense to add the implicit extra gas cost of the CALL opcode.
|
||||
|
||||
As an example, SHA256 precompiled contract costs 60 and ECADD costs 500 (proposed to costs only 50 in [EIP1108](https://github.com/ethereum/EIPs/pull/1108) . When a precompiled contract is called, 700 gas is consumed just for the CALL opcode besides the costs of the precompiled contract.
|
||||
|
||||
This makes no sense, and right now it's impossible to define a precompiled contract whose effective cost for using it is less than 700.
|
||||
|
||||
## Specification
|
||||
|
||||
If `block.number >= XXXXX`, for each CALL, DELEGATECALL and CALLCODE opcode with a destination address < 256 use a Gcall (basic cost of the call) of 0 instead of 700.
|
||||
|
||||
The cost of the CALL opcode is calculated in exactly the same way that any normal call, including the cost for using a value different than 0 and for creating a new account. The only difference is that Gcall is not added when calculating Cextra.
|
||||
|
||||
## Rationale
|
||||
|
||||
This implementation is the one that needs less modification of the clients.
|
||||
|
||||
## Backwards Compatibility
|
||||
|
||||
This EIP is backwards compatible. Smart contracts that call precompiled contracts will cost less from now on. Smart contracts that relay in a high gas consumption for a specific code are not expected.
|
||||
|
||||
## Test Cases
|
||||
|
||||
- Normal call to a defined smart contract.
|
||||
- Call to undefined smart contract.
|
||||
- Call to defined smart contract with a value!=0 on the call.
|
||||
- Call to undefined smart contract with a value!=0 on the call.
|
||||
- Normal call with remaining gas<700 but gas>[the cost of the call].
|
||||
|
||||
## Implementation
|
||||
|
||||
Not implemented yet.
|
||||
|
||||
## Copyright
|
||||
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
|
Loading…
x
Reference in New Issue
Block a user