Safe Math 구조
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a / b;
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
자료형 uint256에 대해서 SafeMath 라이브러리를 사용하도록 선언할 수있다.
using SafeMath for uint256;
함수내에서 연산자 + 와 -가 사용되는 부분을 안전한 연산자로 바꿀 수 있다.
만약 오버/언더 플로가 발생한면 require문에서 제어하여 오류메세지가 나타나게 된다.
SafeMath문에서 internal과 pure
- internal은 함수가 컨트랙트 내부에서만 사용될 수 있도록 제한할 때 사용합니다.
- pure 는 함수가 상태 변수를 읽거나 쓰지 않을 때 사용합니다. SafeMath 라이브러리의 함수에서는 단순 연산의 결과값을 반환하기 때문에 상태 변수를 읽거나 쓰지 않습니다...
'개발 학습 > 블록체인' 카테고리의 다른 글
S4: 토큰 LOCK 설정 및 제거 (0) | 2021.11.29 |
---|---|
S4: public 함수 중 관리자만 접근가능함수 OwnerHelper (0) | 2021.11.26 |
S4: ERC-20 (0) | 2021.11.26 |
S4: Solidity 기본 문법 (0) | 2021.11.25 |
S4: EVM과 Geth로 스마트컨트랙트 배포 (0) | 2021.11.24 |
댓글