code4rena-2022-08-nounsdao-g14

[G‑14] Use a more recent version of solidity

보고서

Summary

solidity 버전을 올려 컴파일러가 지원하는 여러가지 최적화와 기능을 이용하라고 제안했다.

Keyword

solidity version, compiler

Vulnerability

File: contracts/base/ERC721Enumerable.sol
 
28:   pragma solidity ^0.8.0;

여러 이유로 solidity 버전을 올리라는 제안을 했다.

  • 0.8.2 이상: 간단한 컴파일러 자동 인라인 기능 이용
  • 0.8.3 이상: 더 나은 구조체 패킹, 더 저렴한 다중 스토리지 읽기 지원
  • 0.8.4 이상: 커스텀 에러 지원(require()나 revert()보다 저렴)
  • 0.8.10 이상: external call의 return value가 있다면 컨트랙트가 존재함을 확인하는 것을 건너 뜀

Impact

최신 버전 컴파일러가 지원하는 최적화와 기능을 사용하지 못한다.

Mitigation

컴파일러 버전을 올린다.

Memo

컴파일러 버전 별 특징을 파악할 필요가 있겠다.


tags: bughunting, nouns dao, smart contract, solidity, gas optimization, compiler, severity gas