반응형
- 솔리디티에서는 오버플로우/언더플로우에 의한 공격 사례가 발생했다.
- 이를 막기 위해서 Safe Math 기능이 ^0.8.0 버전부터 기본적으로 적용되어 수에 대한 증가/감소에 검사 로직이 추가되었다.
- 다만 Safe Math 로직을 수행하는 것도 gas 가 소요되는 부분이다.
- Openzeppelin 라이브러리 Counters 객체는 수를 증가시킬 때 Safe Math 를 사용하지 않는다.
- Counters 객체를 사용하면 오버플로우에 대한 로직은 없고, 수는 default 시작 값은 0 이다.
- 그리고 수를 증가시키는 로직은 unchecked 태그 내에서 수행하여 Safe Math 기능을 명시적으로 disable 한다.
- 이는 EVM 에서 0 부터 2^256 까지 증가시키는 로직은 사실상 불가능하다 라는 전재를 포함하고 있다.
- Counters.sol
GitHub - OpenZeppelin/openzeppelin-contracts: OpenZeppelin Contracts is a library for secure smart contract development.
OpenZeppelin Contracts is a library for secure smart contract development. - GitHub - OpenZeppelin/openzeppelin-contracts: OpenZeppelin Contracts is a library for secure smart contract development.
github.com
반응형
'블록체인 > 이더리움' 카테고리의 다른 글
msg.sender vs _msgSender() (0) | 2022.05.02 |
---|---|
오픈씨는 왜 WETH 를 사용할까? (0) | 2022.04.28 |
getPastEvents 함수의 방대한 결과값을 순차적으로 처리하는 방법 (0) | 2022.03.18 |
이더리움 화이트리스트 추출 방법 (0) | 2022.03.16 |
이더스캔에서 ERC721 토큰을 추적하는 방식 (2) | 2022.03.16 |