[Block Chain] - Integer overflow 그리고 underflow
새로운 Token 을 상장하기 위해서는 Contract 를 검토해야 한다.
해당 Token이 어떤 로직으로 작동하며, 보안상 취약점이나 비정상적인 동작 가능성이 있는지를 Contract 를 통해 확인할 수 있다.
그래서 새로운 Token 을 상장하기 위해서는 Contract 를 통해 "계약"을 확인해야 한다.
Smart Contract 검토 목적
Contract 검토 내용
- Tokenomics 구조 파악 : 발행량, 공급량, 디플레이션 구조 등
- 소유권(Ownership) 및 관리자 권한 : 특정 주소에 과도한 권한이 집중되어 있는지
- 이벤트 및 트랜잭션 로그 확인: 정상적인 기록 구조가 있는지
- 위험 로직 존재 여부 : 거래 중단, 밴 기능, 과도한 세금(Tax), 자동 유동성 이동 등
네트워크별 차이
토큰은 배포된 네트워크(예: Ethereum, BSC, Polygon 등)에 따라 동작 방식이 다르고 특징이 있다.
- 일부 토큰은 ETH 또는 native token을 자동으로 swap 하는 로직이 포함될 수 있다.
- Owner가 언제든지 Transfer를 중단하거나, 사용자 자산을 회수할 수 있는 함수를 보유할 수 있다.
- 일반적인 ERC-20 토큰 외에도 Reflection, Rebase, Auto-Liquidity 등 복잡한 로직이 포함될 수 있다.
Overflow와 Underflow
최근 Transfer 함수를 리뷰하다 Underflow 가 발생할 수 있는 코드를 봤다.
하지만 코드의 동작 방식을 보니 Underflow 가 발생할 수 있는 가능성은 없었지만 Underflow 로 인해 데이터가 조작될 수 있다는 가능성을 알게 되었다.
찾아보니 Integer Overflow 와 Underflow는 스마트 컨트랙트에서 잘 알려진 취약점 중 하나였다.
이는 자료형으로 인해 정수값 계산이 범위를 벗어나는 경우를 말한다.
uint8 a = 255;
a = a + 1; // 결과: 0 (오버플로우 발생)
uint8 b = 0;
b = b - 1; // 결과: 255 (언더플로우 발생)
아래 글을 보면 이런 취약점으로 코인 하나가 나락으로 가는걸 볼 수 있었다.
https://cryptojobslist.com/blog/two-vulnerable-erc20-contracts-deep-dive-beautychain-smartmesh
Why you should verify the tokens you own: A deep dive into two vulnerable ERC20 contracts
Two crypto tokens, BeautyChain and SmartMesh, crashed due to smart contract exploits. We break down the attacks, offer Solidity examples, and discuss lessons on smart contract security.
cryptojobslist.com
단순히 실수로 나락가면 안되니까.. 잘 해야겠다.
웹이나 서버를 개발하고 인프라를 했을 당시에는 대학에서 배운 것들이 역시 쓸모 있었네~~ 싶었는데
이상한 세계에 들어와보니까 설마 했던 영역까지 쓸모가 있을줄은 몰랐다.
쓸모 있을줄 알았으면 더 빡세게 공부해야 했었는데
공부할게 더 생겨서 미쳐버리겠따~~~~