본문 바로가기

블록체인/이더리움

솔리디티의 Safe Math 기능과 Counters 객체

반응형
  • 솔리디티에서는 오버플로우/언더플로우에 의한 공격 사례가 발생했다.
  • 이를 막기 위해서 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

 

반응형