본문 바로가기
솔리디티

오버플로우, 언더플로우

by 멸치김밥 2022. 2. 16.
  • 오버플로우 Overflows 

오버플로우는 저장가능한 공간을 초과하는 경우를 뜻한다.

예를들어 uint8은 이진수 11111111이나 십진수255까지만 표현할 수 있는데 여기에 1을 더하면 0이 된다

시계가 23시가 지나면 0시가 되듯.

이러한 것을 오버플로우라고 한다.

 

 

  • 언더플로우 Underflows

언더플로우는 오버플로우와 반대로 0에서 -1을 하면 11111111(255) 가 되는것

 

uint8 num = 255; // 최대 255까지만 표현 가능
num++; // 0이 됨
num++; // 1

uint8 num2 = 0;
num2--; // 255
num2--; // 254

오버플로우와 언더플로우가 생기면 문제가 발생할 여지가 있을 수 있다.

수치가 더 커져야하는데 줄어들어버리거나

음수로 가야하는데 커져버리는 경우가 생기니.

그래서 OpenZeppelin라는 곳에서 SafeMath라는 라이브러리를 만들었다고 한다.

이를 이용하면 4가지 함수(add, sub, mul, div)를 사용할 수 있다.

 

'솔리디티' 카테고리의 다른 글

인터페이스 (interface)  (0) 2022.02.12
리믹스 이더리움으로 SimpleCoin 트랜잭션 만들어보기  (0) 2022.02.11
storage, memory  (0) 2022.02.11
구조체 (struct)  (0) 2022.02.10
컨트랙트 contract  (0) 2022.02.10

댓글