BriVault

First Flight #52
Beginner FriendlySolidity
100 EXP
View results
Submission Details
Impact: medium
Likelihood: low
Invalid

Missing array length caching in for loop

The for loop take much gas due to everytime i reads from the storage.

Description

The function iterates through the countries array using countries.length directly inside the loop condition.
However, it does not cache the array length in a local variable (e.g., uint256 len = countries.length;).

function _getWinnerShares() internal returns (uint256) {
@> //Uint256 length = usersAddress.length;
for (uint256 i = 0; i < usersAddress.length; ++i) {
address user = usersAddress[i];
totalWinnerShares += userSharesToCountry[user][winnerCountryId];
}
return totalWinnerShares;
}

Risk

Impact:

Each loop iteration re-reads countries.length from memory.

  • Slight increase in gas cost (minor but measurable).

  • Reduces clarity and consistency in loop structure.

Recommended Mitigation

function _getWinnerShares() internal returns (uint256) {
+ Uint256 length = usersAddress.length;
- for (uint256 i = 0; i < usersAddress.length; ++i) {
+ for (uint256 i = 0; i < length; ++i) {
address user = usersAddress[i];
totalWinnerShares += userSharesToCountry[user][winnerCountryId];
}
return totalWinnerShares;
}
Updates

Appeal created

bube Lead Judge 19 days ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity
Assigned finding tags:

Gas optimizations

Gas optimizations are invalid according to the CodeHawks documentation.

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!