EIP-170: Contract code size limit Ethereum Improvement Proposals AllCoreNetworkingInterfaceERCMetaInformational Standards Track: Core EIP-170: Contract code size limit Authors Vitalik Buterin (@vbuterin) Created 2016-11-04 Table of Contents Hard fork Parameters Specification Rationale References Hard fork Spurious Dragon Parameters MAX_CODE_SIZE: 0x6000 (2**14 + 2**13) FORK_BLKNUM: 2,675,000 CHAIN_ID: 1 (Mainnet) Specification If block.number >= FORK_BLKNUM, then if contract creation initialization returns data with length of more than MAX_CODE_SIZE bytes, contract creation fails with an out of gas error. Rationale Currently, there remains one slight quadratic vulnerability in Ethereum: when a contract is called, even though the call takes a constant amount of gas, the call can trigger O(n) cost in terms of reading the code from disk, preprocessing the code for VM execution, and also adding O(n) data to the Merkle proof for the block’s proof-of-validity. At current gas levels, this is acceptable even if suboptimal. At the higher gas levels that could be triggered in the future, possibly very soon due to dynamic gas limit rules, this would become a greater concern—not nearly as serious as recent denial of service attacks, but still inconvenient especially for future light clients verifying proofs of validity or invalidity. The solution is to put a hard cap on the size of an object that can be saved to the blockchain, and do so non-disruptively by setting the cap at a value slightly higher than what is feasible with current gas limits. References EIP-170 issue and discussion: https://github.com/ethereum/EIPs/issues/170 pyethereum implementation: https://github.com/ethereum/pyethereum/blob/5217294871283d8dc4fb3ca9d8a78c7d416490e8/ethereum/messages.py#L397 Citation Please cite this document as: Vitalik Buterin (@vbuterin), "EIP-170: Contract code size limit," Ethereum Improvement Proposals, no. 170, November 2016. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-170. Ethereum Improvement Proposals Ethereum Improvement Proposals ethereum/EIPs Ethereum Improvement Proposals (EIPs) describe standards for the Ethereum platform, including core protocol specifications, client APIs, and contract standards.