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

State clearing

EIP-158은 이더리움 상태 트리에서 빈 계정을 제거하는 상태 정리 메커니즘을 도입한 제안으로, 최종 승인되었습니다. 스폰지밥 DoS 공격으로 인해 불필요하게 생성된 수많은 빈 계정을 정리하기 위해 도입되었습니다.

문제 배경

2016년 DoS 공격에서 공격자들은 의도적으로 수많은 빈 계정(잔고 0, 논스 0, 코드 없음)을 생성했습니다. 이 빈 계정들이 상태 트리를 비대하게 만들어 노드 처리 성능을 저하시켰습니다.

빈 계정 정의

잔고가 0이고, 논스가 0이며, 코드가 없는 계정을 "빈 계정"으로 정의합니다. EIP-158은 이러한 계정들이 트랜잭션에 의해 "터치"될 때 상태에서 삭제되도록 규정합니다.

구현 세부 사항

빈 계정에 닿는 트랜잭션(이더 전송 포함)은 해당 계정을 상태에서 제거합니다. 이는 Spurious Dragon 하드포크에서 EIP-161과 함께 활성화되어 상태 크기를 크게 줄였습니다.

EIP-161과의 관계

EIP-158과 EIP-161은 함께 이더리움 상태 정리를 완성합니다. EIP-161은 새로운 빈 계정 생성을 방지하고, EIP-158은 기존 빈 계정을 점진적으로 제거합니다.

역사적 논란

이 EIP는 빈 계정 제거 과정에서 일부 엣지 케이스로 인해 논란이 있었습니다. 특히 특정 컨트랙트 주소에서 예기치 않은 동작이 관찰되어 세심한 분석이 필요했습니다.

공식 EIP 문서open_in_new