Open code423n4 opened 3 years ago
WatchPug
https://github.com/code-423n4/2021-09-wildcredit/blob/main/contracts/LendingPair.sol#L93-L96
function initialize( address _lpTokenMaster, address _lendingController, address _uniV3Helper, address _feeRecipient, address _tokenA, address _tokenB ) external { require(tokenA == address(0), "LendingPair: already initialized"); require(_tokenA != address(0) && _tokenB != address(0), "LendingPair: cannot be ZERO address"); lendingController = ILendingController(_lendingController); uniV3Helper = IUniswapV3Helper(_uniV3Helper); feeRecipient = _feeRecipient; tokenA = _tokenA; tokenB = _tokenB; lastBlockAccrued[tokenA] = block.number; lastBlockAccrued[tokenB] = block.number; decimals[tokenA] = IERC20(tokenA).decimals(); decimals[tokenB] = IERC20(tokenB).decimals(); require(decimals[tokenA] >= 6 && decimals[tokenB] >= 6, "LendingPair: min 6 decimals"); lpToken[tokenA] = _createLpToken(_lpTokenMaster, tokenA); lpToken[tokenB] = _createLpToken(_lpTokenMaster, tokenB); }
Cache and check token decimals before write storage can save gas.
Consider changing to:
uint decimalsTokenA = IERC20(tokenA).decimals(); uint decimalsTokenB = IERC20(tokenB).decimals(); require(decimalsTokenA >= 6 && decimalsTokenB >= 6, "LendingPair: min 6 decimals"); decimals[tokenA] = decimalsTokenA; decimals[tokenB] = decimalsTokenB;
Handle
WatchPug
Vulnerability details
https://github.com/code-423n4/2021-09-wildcredit/blob/main/contracts/LendingPair.sol#L93-L96
Cache and check token decimals before write storage can save gas.
Recommendation
Consider changing to: