Tech/EIPs/#170
EIP 170카테고리 · 코어유형 · 표준 트랙상태 · 최종

Contract code size limit

EIP-170은 이더리움 스마트 컨트랙트 코드의 최대 크기를 24,576바이트(약 24KB)로 제한하는 규칙을 도입한 제안으로, 최종 승인되었습니다. 코드 크기에 비례한 가스 비용 없이 매우 큰 컨트랙트를 통한 DoS 공격 가능성을 차단했습니다.

문제 배경

이전에는 컨트랙트 코드 크기에 대한 공식 제한이 없었습니다. 매우 큰 코드를 가진 컨트랙트는 EXTCODECOPY 등의 연산 시 예상보다 훨씬 많은 처리 시간이 필요해 DoS 벡터로 활용될 수 있었습니다.

제한 수치의 근거

24,576바이트 제한은 당시 대부분의 실제 컨트랙트가 이 크기 이하였으며, 이 크기까지의 코드 배포 가스 비용이 합리적임을 고려하여 결정되었습니다. 300만 가스 블록 한도와도 균형을 이룹니다.

개발자 영향

이 제한으로 인해 복잡한 Solidity 컨트랙트 작성 시 "컨트랙트 크기 초과" 오류가 발생하는 경우가 생겼습니다. 개발자들은 라이브러리, 프록시 패턴, 다이아몬드 패턴 등을 통해 코드를 분산시키는 방식으로 대응했습니다.

활성화

EIP-170은 Spurious Dragon 하드포크(2016)에서 활성화되었습니다. 이 제한은 현재도 적용 중이며 EVM 기반 네트워크 전반에서 표준으로 자리 잡았습니다.

한계 도전

DeFi 복잡성이 증가함에 따라 많은 프로토콜이 24KB 제한에 도전하고 있습니다. EIP-170의 제한은 이더리움 컨트랙트 아키텍처 패턴에 지속적인 영향을 미치고 있습니다.

공식 EIP 문서open_in_new