EIP-5478: CREATE2COPY Opcode Ethereum Improvement Proposals AllCoreNetworkingInterfaceERCMetaInformational 🚧 Stagnant Standards Track: Core EIP-5478: CREATE2COPY Opcode Reducing the gas cost of contract creation with existing code Authors Qi ZhouĀ (@qizhou) Created 2022-08-17 Discussion Link https://ethereum-magicians.org/t/eip-5478-reducing-the-gas-cost-of-contract-creation-with-existing-code/10419 Requires EIP-1014, EIP-2929 Table of Contents Abstract Motivation Specification Parameters Rationale Security Considerations Copyright Abstract Adding a new opcode, CREATE2COPY, that is identical to CREATE2 but with potentially much lower gas cost by accepting an additional argument existing_contract_address that already stored the code of the new contract. Motivation This EIP aims to reduce the smart contract creation cost of account abstraction (AA) contracts that have identical code. The major cost of creating an AA contract is the contract creation cost, especially data gas. For example, creating an AA contract with 10,000 bytes will consume 2,000,000 data gas. Considering the code for each user’s AA contract is the same, CREATE2COPY can reduce the data gas cost to 2600 (cold account) or even 100 (warm account) if the contract code already exists in the local storage. Specification Parameters Constant Value FORK_BLKNUM TBD CREATE_DATA_GAS_PER_BYTE 200 COLD_ACCOUNT_ACCESS_COST 2600 WARM_ACCOUNT_ACCESS_COST 100 If block.number >= FORK_BLKNUM, a new opcode is added (CREATE2COPY) at 0xf6, which takes 5 stack arguments: endowment, memory_start, memory_length, salt, existing_contract_address. CREATE2COPY behaves identically to CREATE2 (0xf5 as defined in EIP-1014), except that the code hash of the creating contract MUST be the same as that of existing_contract_address. CREATE2COPY has the same gas schema as CREATE2, but replacing the data gas from CREATE_DATA_GAS_PER_BYTE * CONTRACT_BYTES to the gas cost of EXTCODEHASH opcode, which is COLD_ACCOUNT_ACCESS_COST if the existing_contract_address is first-time accessed in the transaction or WARM_ACCOUNT_ACCESS_COST if existing_contract_address is already in the access list according to EIP-2929. If the code of the contract returned from the init code differs from that of existing_contract_address, the creation fails with the error ā€œmismatched contract creation code with existing codeā€, and will burn all gas for the contract creation. Rationale TBD Security Considerations Needs discussion. Copyright Copyright and related rights waived via CC0. Citation Please cite this document as: Qi ZhouĀ (@qizhou), "EIP-5478: CREATE2COPY Opcode [DRAFT]," Ethereum Improvement Proposals, no. 5478, August 2022. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-5478. 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.