Style issues that you may want to apply or reject, no impact on security. Grouping them together as one submission to reduce waste. Consider fixing or ignoring them, up to you.
Should be UniswapV3Oracle, not LinkPriceOracle:
require(latestAnswer > 1, "LinkPriceOracle: invalid oracle value");
Should be _value < highRate:
require(_value < highRate, "InterestRateModel: _value < lowRate");
There are hardcoded magic numbers, e.g.:
require(decimals[tokenA] >= 6 && decimals[tokenB] >= 6, "LendingPair: min 6 decimals");
It would make code more readable and maintanable if you extract such numbers as constants:
uint public constant MIN_DECIMALS = 6;
require(decimals[tokenA] >= MIN_DECIMALS && decimals[tokenB] >= MIN_DECIMALS, "LendingPair: MIN_DECIMALS");
contract UniswapV3Helper should explicitly implement IUniswapV3Helper to ensure that the interface and implementation are coherent:
contract UniswapV3Helper is IUniswapV3Helper, ERC721Receivable
Handle
pauliax
Vulnerability details
Impact
Style issues that you may want to apply or reject, no impact on security. Grouping them together as one submission to reduce waste. Consider fixing or ignoring them, up to you.
Should be UniswapV3Oracle, not LinkPriceOracle: require(latestAnswer > 1, "LinkPriceOracle: invalid oracle value");
Should be _value < highRate: require(_value < highRate, "InterestRateModel: _value < lowRate");
There are hardcoded magic numbers, e.g.: require(decimals[tokenA] >= 6 && decimals[tokenB] >= 6, "LendingPair: min 6 decimals"); It would make code more readable and maintanable if you extract such numbers as constants: uint public constant MIN_DECIMALS = 6; require(decimals[tokenA] >= MIN_DECIMALS && decimals[tokenB] >= MIN_DECIMALS, "LendingPair: MIN_DECIMALS");
contract UniswapV3Helper should explicitly implement IUniswapV3Helper to ensure that the interface and implementation are coherent: contract UniswapV3Helper is IUniswapV3Helper, ERC721Receivable