Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gas optimization opportunity for the for loop in getAccountCollateralValue() #1125

Open
codehawks-bot opened this issue Aug 5, 2023 · 0 comments

Comments

@codehawks-bot
Copy link

Gas optimization opportunity for the for loop in getAccountCollateralValue()

Severity

Gas Optimization / Informational

Relevant GitHub Links

https://github.com/Cyfrin/foundry-defi-stablecoin-codehawks/blob/c573394cf3f21f73ef974388138193609f432c7f/src/DSCEngine.sol#L353-L357

Summary

Gas optimization opportunity for the for loop in getAccountCollateralValue().

Vulnerability Details

n/a

Impact

Paying more gas than necessary, especially with a for loop, there's lots of room for optimization.

Tools Used

VSC, manual.

Recommendations

Instead of:

    for (uint256 i = 0; i < s_collateralTokens.length; i++) {
        address token = s_collateralTokens[i];
        uint256 amount = s_collateralDeposited[user][token];
        totalCollateralValueInUsd += getUsdValue(token, amount);
    }

Recommend to implement this:

			uint256 _collateralTokensLength = s_collateralTokens.length;
    for (uint256 i; i < _collateralTokensLength; ) {
        address token = s_collateralTokens[i];
        uint256 amount = s_collateralDeposited[user][token];
        totalCollateralValueInUsd += getUsdValue(token, amount);
        
        unchecked {
        		i++;
        }
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants