15,000 USDC
View results
Submission Details
Severity: gas

A modifier used only once and not being inherited should be inlined to save gas

Vulnerability Details

File: src/DSCEngine.sol
102 modifier isAllowedToken(address token) {//@audit inline modifier only used once
103 if (s_priceFeeds[token] == address(0)) {
104 revert DSCEngine__NotAllowedToken();
105 }
106 _;
107: }

DSCEngine.sol#L102-L107
The above modifer is only used in the following:

149 function depositCollateral(address tokenCollateralAddress, uint256 amountCollateral)
150 public
151 moreThanZero(amountCollateral)
152: isAllowedToken(tokenCollateralAddress)
153 nonReentrant
154 {
155 s_collateralDeposited[msg.sender][tokenCollateralAddress] += amountCollateral;
156 emit CollateralDeposited(msg.sender, tokenCollateralAddress, amountCollateral);
157 bool success = IERC20(tokenCollateralAddress).transferFrom(msg.sender, address(this), amountCollateral);
158 if (!success) {
159 revert DSCEngine__TransferFailed();
160 }
161 }

DSCEngine.sol#L152

Tools Used

VSCode

Recommendations

function depositCollateral(address tokenCollateralAddress, uint256 amountCollateral)
public
moreThanZero(amountCollateral)
- isAllowedToken(tokenCollateralAddress)
nonReentrant
{
+ if (s_priceFeeds[token] == address(0)) {
+ revert DSCEngine__NotAllowedToken();
+ }
+ _;
s_collateralDeposited[msg.sender][tokenCollateralAddress] += amountCollateral;
emit CollateralDeposited(msg.sender, tokenCollateralAddress, amountCollateral);
bool success = IERC20(tokenCollateralAddress).transferFrom(msg.sender, address(this), amountCollateral);
if (!success) {
revert DSCEngine__TransferFailed();
}
}

Support

FAQs

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