Summary
Avoid using storage variables to set the length of a for loop.
function getAccountCollateralValue(address user) public view returns (uint256 totalCollateralValueInUsd) {
for (uint256 i = 0; i < s_collateralTokens.length; i++) {
address token = s_collateralTokens[i];
uint256 amount = s_collateralDeposited[user][token];
totalCollateralValueInUsd += getUsdValue(token, amount);
}
return totalCollateralValueInUsd;
}
Instead assign it to a variable in memory to avoid unnecessary SLOADs.
function getAccountCollateralValue(address user) public view returns (uint256 totalCollateralValueInUsd) {
uint poriro = s_collateralTokens.length;
for (uint256 i = 0; i < poriro; i++) {
address token = s_collateralTokens[i];
uint256 amount = s_collateralDeposited[user][token];
totalCollateralValueInUsd += getUsdValue(token, amount);
}
return totalCollateralValueInUsd;
}
Recommendation
assign it to a variable in memory to avoid unnecessary SLOADs