🔑 코인 투자 추천 링크 🔑
정밀도 손실 - 소수점 이하를 반올림하여 0으로
모든 ERC20 토큰을 지원하면서, 이러한 토큰들은 서로 다른 소수 자리를 가질 수 있음.
예를들어 USDC와 USDC는 6개의 소수자리를 가짐. (계산시 조심해야 함)
분자가 분모보다 작으면 결과가 0이 되는 상황을 피해야 함
반올림과 관련된 문제는 다음과 같은 방법으로 피할 수 있음
- 필요한대로 반올림/버림 라이브러리 사용
- 결과가 0이 아니거나 분모가 분자보다 작거나 같음을 요구
- 분자를 먼저 나눈 다음 곱하는 대신에 연산을 리팩토링하여 정밀도 손실이 증폭되는 상황 피하기
테스트소스
https://github.com/SunWeb3Sec/DeFiVulnLabs/blob/main/src/test/Precision-loss.sol
취약코드
테스트결과
참고문서
https://web3sec.notion.site/Precision-Loss-Rounded-down-to-zero-9d67b54681b3461fb574c5a745582b03
댓글