AlertSourceDiscuss
Skip to content

EIP-2488: Deprecate the CALLCODE opcode

🚧 StagnantCore

Stagnant

This EIP has had no recent activity for at least 6 months, and has automatically been marked as stagnant. This EIP should not be used in production.

If you are interested in helping move this EIP to final, create a PR to move this EIP back to Draft and add yourself as an author, and an EIP editor will help guide you through the process. Thank you!

AuthorsAlex Beregszaszi (@axic)
Created2019-12-20

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) 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 and related rights waived via CC0.

Citation

Please cite this document as:

Alex Beregszaszi, "EIP-2488: Deprecate the CALLCODE opcode[DRAFT]," Ethereum Improvement Proposals, no. 2488, 2019. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-2488.