본문 바로가기
블록체인교육/블록체인보안

[블록체인 보안] 스마트컨트랙트 취약성(토큰의 소수점이슈)

by Danny_Kim 2023. 8. 25.

🔑 코인 투자 추천 링크 🔑

  1. 비트코인, 알트코인 투자 노하우 모두 공개
  2. OKX 거래소 - 20% 수수료 할인
  3. 플립스터 거래소 - USDT 15% 이자
  4. 해시키 거래소 - HSK 에어드랍

정밀도 손실 - 소수점 이하를 반올림하여 0으로

 

모든 ERC20 토큰을 지원하면서, 이러한 토큰들은 서로 다른 소수 자리를 가질 수 있음.

예를들어 USDC와 USDC는 6개의 소수자리를 가짐. (계산시 조심해야 함)

 

분자가 분모보다 작으면 결과가 0이 되는 상황을 피해야 함

반올림과 관련된 문제는 다음과 같은 방법으로 피할 수 있음

  1. 필요한대로 반올림/버림 라이브러리 사용
  2. 결과가 0 아니거나 분모가 분자보다 작거나 같음을 요구
  3. 분자를 먼저 나눈 다음 곱하는 대신에 연산을 리팩토링하여 정밀도 손실이 증폭되는 상황 피하기

 

테스트소스

https://github.com/SunWeb3Sec/DeFiVulnLabs/blob/main/src/test/Precision-loss.sol

 

취약코드

 

 

테스트결과

 

참고문서

https://web3sec.notion.site/Precision-Loss-Rounded-down-to-zero-9d67b54681b3461fb574c5a745582b03

🔑 코인 투자 추천 링크 🔑

  1. 비트코인, 알트코인 투자 노하우 모두 공개
  2. OKX 거래소 - 20% 수수료 할인
  3. 플립스터 거래소 - USDT 15% 이자
  4. 해시키 거래소 - HSK 에어드랍

댓글