스터디를 두 번이나 빠져서 생각한만큼 진도를 많이 못 나갔다. 이번주는 저번주에 못다한 cryptozombies
lesson5
를 마무리 했다. 라이브러리 사용방법과 컨트랙트 보안 강화를 위해 오버플로우 및 언더플로우 방지가 주된 내용이었다.
오버플로우와 언더플로우를 막기위해, OpenZeppelin
의 SafeMath
라이브러리를 사용했다. SafeMath
라이브러리는 add
, sub
, mal
, div
4개의 함수를 가지고 있고 이 함수들에 접근 방법은 다음과 같다 :
using SafeMath for uint256;
uint256 a = 5;
uint256 b = a.add(3); // 5 + 3 = 8
uint256 c = a.mul(2); // 5 * 2 = 10
라이브러리는 contract
와 비슷하지만 조금 다른 점이 있다. 우리의 경우에 라이브러리는 우리가 using
키워드를 사용할 수 있게 해준다. 이를 통해 라이브러리의 메소드들을 다른 데이터 타입에 적용할 수 있다.
SafeMath
의add
함수의 내용 :
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
assert
는 조건을 만족하지 않으면 에러를 발생시킨다는 점에서 require
와 비슷하다. assert
와 require
의 차이점은, require
는 함수 실행이 실패하면 남은 가스를 사용자에게 되돌려 주지만, assert
는 그렇지 않다는 것이다. assert
는 일반적으로 코드가 심각하게 잘못 실행될 때 사용한다.
주석의 사용법에 관해서도 학습했고 아래 블로그에 학습한 모든 내용들을 정리해 두었다.
이제 초중급 solidity 문법은 다음주 lesson6
만 하면 얼추 마무리된다. 다음주는 lesson6
학습 및 전체적으로 복습을 해야겠다.