{
  "id": 7903,
  "title": "EIP-7903: Remove Initcode Size Limit",
  "status": "Stagnant",
  "type": "Standards Track",
  "category": "Core",
  "summary": "This removes the 49,152-byte limit on initialization code (initcode) that was introduced by EIP-3860. The problem this solves is that the current limit makes it unnecessarily difficult to deploy large, complex smart contracts that need to create multiple sub-contracts in a single transaction. For example, if you want to deploy a sophisticated DeFi protocol that consists of several interconnected contracts, you might hit the initcode limit even though each final contract stays under the 24KB deployed code limit (EIP-170). This forces developers to split deployments across multiple transactions, which is more expensive, less efficient, and breaks the clean abstractions that high-level programming languages try to provide. By removing this artificial limit, the EIP allows for more flexible deployment patterns while still maintaining security through existing gas costs that scale with initcode size. The per-block gas limit already naturally restricts initcode to reasonable sizes (around 16MB at current gas limits), making the 49KB cap redundant. This change is fully backward compatible and only removes restrictions without changing how contracts work.",
  "impacts": [
    "Not a direct impact on regular usage. But users who investage how was the contract setup and verifying what they interact it will have it more straightforward.",
    "Developers will hugely benefit from this change, especially when deploying big set of contracts with complex initialization. No workarounds and less complexity, only straight forward setup even for complex projects.",
    "No direct impact on wallet devs. If wallets have onchain infrastracture, their developers might benefit from easier deployments.",
    "Explorers need to be able to display the bigger initcode.",
    "EVM-equivalent need to implement the change to follow the execution layer specification.",
    "Node operators shouldn't notice a direct change because the bigger initcode still fits in the same block size. Over the time, stored initcode will take bigger part of the disk space.",
    "No consensus changes expected for CL; only standard fork coordination.",
    "EL clients implementation is simple, only removes or changes the hardcoded size limit.",
    "Smoother deployment of big projects, no more extra tooling needed.",
    "Developer experience is much more straightforward and follows industry standarts."
  ],
  "discussion_url": "https://ethereum-magicians.org/t/remove-initcode-size-limit/23066",
  "source_markdown_url": "https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7903.md",
  "canonical_url": "/latest/eips/7903.json",
  "markdown_url": "/latest/eips/7903.md",
  "citations": [
    {
      "recordId": "eip-7903",
      "artifactPath": "normalized/7903.json",
      "url": "/records/proposal/eip-7903/normalized/7903.json",
      "label": "EIP-7903: Remove Initcode Size Limit",
      "snippet": "This removes the 49,152-byte limit on initialization code (initcode) that was introduced by EIP-3860. The problem this solves is that the current limit makes it unnecessarily difficult to deploy large, complex smart cont"
    }
  ]
}
