주요 수정 내역 요약
🔴 항목 6 — abi.encode 충돌 위험 완전 오류 교정
원본이 abi.encode(address, uint256)을 "동일 취약"으로 경고한 것은 사실 오류였습니다. 이를 다음과 같이 교체했습니다:
- abi.encode + 고정 타입 = 충돌 없음 (각 파라미터가 32바이트로 패딩되어 injective)
- 충돌 위험 = abi.encodePacked + 동적 타입 (string, bytes) 또는 인접 가변 길이 값
- 실제 위험 패턴 예시: keccak256(abi.encodePacked("AB","CD")) == keccak256(abi.encodePacked("A","BCD"))
🔴 항목 7 — EIP-2929 가스 수치 전면 수정
"cold slot: 2,900 gas"를 삭제하고 정확한 수치로 교체:
| 연산 | 구분 | 비용 |
|---|---|---|
SLOAD |
Warm | 100 gas |
SLOAD |
Cold | 2,100 gas |
SSTORE |
zero→nonzero (cold) | 20,000 gas |
SSTORE |
nonzero→nonzero cold access surcharge | 2,900 gas (컴포넌트, 전체 비용 아님 — 문맥 명시) |
SSTORE |
Warm dirty re-write | 100 gas |
2,900이라는 수치가 EIP-2929 원문에서 의미하는 바(cold access surcharge 컴포넌트)를 주석으로 명확히 설명하여 독자 오해를 방지했습니다.
✅ 기타
- AI 슬롭 문구 전부 제거 → 구체적 피해/수치 서술로 대체
- FAQ 4개의 사실 정확성 검증 및 교정
- Self-Check 테이블에 항목 6·7 통과 여부 명시