Omniscia Platypus Finance Audit

ChainlinkProxyPriceProvider Code Style Findings

ChainlinkProxyPriceProvider Code Style Findings

CPP-01C: Redundant Storage Read

Description:

The getAssetPrice function redundantly reads the _assetsSources storage entry when the asset is equivalent to the _ethAddress as it remains unutilized.

Example:

contracts/oracle/ChainlinkProxyPriceProvider.sol
59/// @notice Gets an asset price by address
60/// @param asset The asset address
61function getAssetPrice(address asset) public view override returns (uint256) {
62 IChainlinkAggregator source = _assetsSources[asset];
63 if (asset == _ethAddress) {
64 return 1 ether;
65 } else {
66 // Require the asset has registered source
67 require(address(source) != address(0), 'SOURCE_IS_MISSING');
68
69 int256 price = IChainlinkAggregator(source).latestAnswer();
70 require(price > 0, 'INVALID_PRICE');
71
72 return uint256(price);
73 }
74}

Recommendation:

We advise the IChainlinkAggregator source declaration to be relocated to the else branch of the function optimizing its gas cost.

Alleviation:

The _ethAddress member no longer exists in the contract and as such this exhibit can be considered null.