EIP-2677은 이더리움 컨트랙트 생성 시 사용되는 initcode의 크기를 2^14바이트(16384 bytes)로 제한하는 제안으로, 이후 Withdrawn(철회) 상태가 되었습니다. 유사한 목적의 EIP-3860이 대신 채택되었습니다.
제안 동기
initcode는 CREATE 또는 CREATE2 오퍼코드를 통해 새 컨트랙트를 배포할 때 실행되는 코드입니다. 크기 제한이 없는 initcode는 DoS 공격 벡터가 될 수 있으며, EVM 실행 비용 예측을 어렵게 만듭니다.
제한 메커니즘
EIP-2677은 initcode가 2^14 바이트를 초과할 경우 컨트랙트 생성이 실패하도록 제안했습니다. 또한 initcode의 가스 비용 계산 방식도 조정하여 실제 처리 비용을 더 정확하게 반영하도록 했습니다.
철회 이유
EIP-3860이 더 큰 제한(2^14 bytes가 아닌 2 * MAX_CODE_SIZE = 49152 bytes)과 더 상세한 가스 계산 방식으로 동일한 문제를 해결하는 후속 제안으로 등장했습니다. EIP-2677 작성자는 EIP-3860을 지지하며 자신의 제안을 철회했습니다.
역사적 의의
EIP-2677은 EIP-3860의 선구자로서, initcode 크기 제한의 필요성을 처음으로 공식적으로 제기했습니다. EIP-3860은 상하이 하드포크(EIP-4895)와 함께 2023년 활성화되어 EIP-2677이 제기한 문제를 해결했습니다.