code4rena-2022-08-nounsdao-g15

[G‑15] ++i costs less gas than i++, especially when it’s used in for-loops (—i/i— too)

보고서

Summary

i++, i-- 보다 ++i, --i 가 gas 효율적이다. 특히 반복문에서 주의해야 한다.

Keyword

gas optimization

Vulnerability

File: contracts/governance/NounsDAOLogicV1.sol
 
216:          proposalCount++;
 
281:          for (uint256 i = 0; i < proposal.targets.length; i++) {
 
319:          for (uint256 i = 0; i < proposal.targets.length; i++) {
 
346:          for (uint256 i = 0; i < proposal.targets.length; i++) {
 
371:          for (uint256 i = 0; i < proposal.targets.length; i++) {
File: contracts/governance/NounsDAOLogicV2.sol
 
226:          proposalCount++;
 
292:          for (uint256 i = 0; i < proposal.targets.length; i++) {
 
330:          for (uint256 i = 0; i < proposal.targets.length; i++) {
 
357:          for (uint256 i = 0; i < proposal.targets.length; i++) {
 
382:          for (uint256 i = 0; i < proposal.targets.length; i++) {

i++, i-- 보다 ++i, --i 가 gas 효율적이다. 특히 반복문에서 주의해야 한다.

Impact

가스 낭비적이다.

Mitigation

가능한 경우, i++, i-- 대신 ++i, --i를 이용한다.


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