EIP-2929는 상태 접근 오프코드(SLOAD, CALL 등)의 가스 비용을 증가시켜 서비스 거부(DoS) 공격 벡터를 줄이는 제안입니다. 베를린(Berlin) 하드포크에서 활성화된 Final 표준입니다.
도입 배경
이더리움 상태 접근 오프코드들의 가스 비용이 실제 처리 비용에 비해 너무 낮아 DoS 공격에 취약했습니다. 2016년 Shanghai DoS 공격이 이 취약점을 악용했으며, 이후 가스 비용 조정의 필요성이 지속적으로 제기되었습니다. EIP-2929는 상태 접근 비용의 구조적 개선을 목표로 합니다.
주요 변경사항
SLOAD의 가스 비용이 800에서 2,100으로 증가했습니다. CALL, BALANCE, EXT* 오프코드들도 유사하게 비용이 증가했습니다. 트랜잭션 내에서 이미 접근한 주소와 스토리지는 warm 상태로 표시되어 이후 접근 시 낮은 비용이 적용됩니다.
접근 목록 메커니즘
트랜잭션 시작 시 warm 접근 목록이 초기화되며, 이후 처음 접근하는 주소/슬롯은 cold 비용이 적용됩니다. 이 메커니즘은 EIP-2930의 선택적 접근 목록과 연계하여 가스 최적화를 가능하게 합니다. 트랜잭션 발신자와 수신자 주소는 자동으로 warm 상태로 처리됩니다.
실제 영향
이 변경으로 일부 계약의 가스 비용이 증가하여 초기에는 호환성 문제가 발생했습니다. OpenZeppelin 등 주요 라이브러리들이 신규 가스 비용에 맞게 업데이트되었습니다. 장기적으로 이더리움 네트워크의 DoS 저항성이 크게 향상되었습니다.
베를린 하드포크 포함
EIP-2929는 2021년 4월 베를린 하드포크에서 EIP-2930, EIP-2565와 함께 활성화되었습니다. 이 하드포크는 이더리움의 가스 비용 모델을 더 정확하게 만드는 중요한 이정표였습니다. 후속 하드포크들도 이 기반 위에서 추가적인 가스 최적화를 진행했습니다.