DCIPs/EIPS/eip-2488.md

59 lines
1.6 KiB
Markdown

---
eip: 2488
title: Deprecate the CALLCODE opcode
author: Alex Beregszaszi (@axic)
discussions-to: https://ethereum-magicians.org/t/eip-2488-deprecate-the-callcode-opcode/3957
status: Stagnant
type: Standards Track
category: Core
created: 2019-12-20
requires: 7
---
## Abstract
Deprecate `CALLCODE` in a *somewhat* backwards compatible way, by making it always return failure.
## Motivation
`CALLCODE` was part of the Frontier release of Ethereum. In the first few weeks/months it became clear
that it cannot accomplish its intended design goal. This was rectified with introducing `DELEGATECALL`
([EIP-7](./eip-7.md)) in the Homestead update (early 2016).
`CALLCODE` became never utilized, but it still puts a burden on EVM implementations.
Disabling it will not improve the situation for any client whose goal is to sync from genesis, but would
help light clients or clients planning to sync from a later point in time.
## Specification
If `block.number >= FORK_BLOCK`, the `CALLCODE` (`0xf2`) instruction always returns `0`, which signals failure.
## Rationale
It would be possible just to remove the opcode and exceptionally abort if it is encountered.
However, by returning failure, the contract has a chance to act on it and potentially recover.
## Backwards Compatibility
This is a breaking change and has a potential to break contracts. The author expects no contracts of any value
should be affected.
TODO: validate this claim.
## Security Considerations
TBA
## Test Cases
TBA
## Implementation
TBA
## Copyright
Copyright and related rights waived via [CC0](../LICENSE.md).