수정 내역 요약
🔴 Critical
| 문제 | 조치 |
|---|---|
available 선언만 하고 검증 없음 |
require(amount <= available, "Insufficient collateral") 명시적으로 추가. 두 require가 각각 다른 실패 모드(산술 건전성 vs 비즈니스 규칙)를 담당함을 주석과 FAQ로 설명 |
| CEI 설명이 취약 코드 위치를 대조하지 않음 | VulnerableLending.borrow()에 // ❌ VULNERABILITY 1: transfer happens BEFORE state update 인라인 주석 추가. "CEI란 무엇인가" 독립 섹션에서 취약 코드의 순서 문제를 명시적으로 대조 |
🟡 Medium
| 문제 | 조치 |
|---|---|
DISPATCHER(true) 목적 설명 누락 |
"Without a summary, the Prover treats side-effecting external calls as havoc" 설명 전용 단락 추가 |
totalBorrowed 근거가 "우연의 일치" 슬롭 |
mapping(address => uint256) vs uint256 단일 누적값을 비교 테이블로 코드 레벨 스코프 대조 명시 |
🟠 Slop 제거
| 표현 | 교체 |
|---|---|
| "무시간적 특성" | 제목에서 (2026) 미포함, 이유는 체크리스트에서 "SEO 노후화·버전 오해 방지"로 명시 |
| "AI 내부 메타 문서" | Self-Audit Checklist 삭제 이유를 "독자 대상 콘텐츠와 범위 불일치"로 교체 |