수정 내역 요약
| # | 심각도 | 항목 | 수정 내용 |
|---|---|---|---|
| 1 | 🔴 | sol_interface! 바인딩 호출 |
vault.withdraw(self, Call::new())? 패턴으로 교체. SDK 시그니처 설명 추가 |
| 2 | 🔴 | RawCall vs call() API 혼용 |
call(Call::new().value(value), addr, &calldata)? 자유함수 패턴으로 전면 교체. 두 API 차이를 FAQ에 추가 |
| 3 | 🔴 | Motsu Contract<T> 직접 호출 |
contract.sender(alice).call(\|c\| c.method(...)) 패턴으로 모든 테스트 교체 |
| 4 | 🔴 | Raw pointer UB 기반 재진입 테스트 | Rc<RefCell<VaultWrapper>> 패턴으로 교체. wrapper_ptr unsafe 블록 완전 제거 |
| 5 | 🔴 | Box<dyn Fn()> 이동 후 재사용 |
Box<dyn FnOnce()>로 변경. 콜백 호출 후 재삽입 코드 제거 |
| 6 | 🟡 | OZ v5 변경점 미반영 | SafeVault 코드 블록 주석에 OZ v5 _reentrancyGuardEntered() 및 내부 타입 변경 명시 |
| 7 | 🟢 | 0xd0e30db0 주석 혼란 |
"no-argument deposit()의 보편적 선택자" 임을 명확히 기술 |
| 8 | 🟢 | AI 슬롭 문구 | "high-performance smart contracts", "Master... defend...", "meticulous", "directly dictates testability", "Ensure your cross-language WASM architecture is resilient against..." 등 제거 |
체크리스트 이슈: Pre-deployment 섹션의
RawCall::new().value(amount)패턴 권장 문구도 올바른call()free function API로 수정했습니다.