MegaETH contract size limits — 512 KB max bytecode, 536 KB max initcode, inherited from MiniRex.
This page specifies MegaETH's limits on deployed contract bytecode size and initcode size. It defines the contract-size limits inherited from MiniRex.
Motivation
Contract size and initcode size directly affect execution cost, state footprint, and validation overhead. MegaETH raises these limits to accommodate larger deployments, but the protocol must still define explicit maximum values so all nodes reject oversized contracts consistently.
Specification
A node MUST enforce the following limits:
Limit
Value
Maximum deployed contract size
MAX_CONTRACT_SIZE
Maximum initcode size
MAX_INITCODE_SIZE
If deployed runtime bytecode exceeds MAX_CONTRACT_SIZE, the node MUST reject the deployment. If initcode exceeds MAX_INITCODE_SIZE, the node MUST reject the creation transaction or creation opcode execution.
Additional bytes allowed above the contract-size limit for initcode
MAX_INITCODE_SIZE
548,864 bytes
Maximum initcode size
Rationale
Why raise the contract limits? MegaETH allows substantially larger contracts than standard Ethereum. The enlarged limits support deployment patterns that would otherwise exceed Ethereum's contract-size constraints.
Spec History
MiniRex introduced the enlarged contract and initcode limits.