Omniscia Myso Finance Audit

UniV2Chainlink Code Style Findings

UniV2Chainlink Code Style Findings

UVC-01C: Inefficient mapping Lookups

TypeSeverityLocation
Gas OptimizationUniV2Chainlink.sol:L56, L60, L63

Description:

The linked statements perform key-based lookup operations on mapping declarations from storage multiple times for the same key redundantly.

Example:

contracts/peer-to-peer/oracles/chainlink/UniV2Chainlink.sol
56if (!isLpToken[collToken] && !isLpToken[loanToken]) {
57 revert Errors.NoLpTokens();
58}
59uint256 loanTokenDecimals = IERC20Metadata(loanToken).decimals();
60uint256 collTokenPriceRaw = isLpToken[collToken]
61 ? getLpTokenPrice(collToken)
62 : getPriceOfToken(collToken);
63uint256 loanTokenPriceRaw = isLpToken[loanToken]
64 ? getLpTokenPrice(loanToken)
65 : getPriceOfToken(loanToken);

Recommendation:

As the lookups internally perform an expensive keccak256 operation, we advise the lookups to be cached wherever possible to a single local declaration that either holds the value of the mapping in case of primitive types or holds a storage pointer to the struct contained.

Alleviation (c740f7c6b5ebd365618fd2d7ea77370599e1ca11):

The referenced mapping lookups have been optimized by caching their result to local in-memory variables that are consequently utilized wherever they were performed.

UVC-02C: Redundant Parenthesis Statement

TypeSeverityLocation
Code StyleUniV2Chainlink.sol:L69

Description:

The referenced statement is redundantly wrapped in parenthesis (()).

Example:

contracts/peer-to-peer/oracles/chainlink/UniV2Chainlink.sol
69(loanTokenPriceRaw);

Recommendation:

We advise them to be safely omitted, increasing the legibility of the codebase.

Alleviation (c740f7c6b5ebd365618fd2d7ea77370599e1ca11):

The redundant parenthesis statement has been omitted as advised.