Omniscia Mean Finance Audit
ERC4626Transformer Code Style Findings
ERC4626Transformer Code Style Findings
ERC-01C: Ineffectual Usage of Safe Arithmetics
Type | Severity | Location |
---|---|---|
Language Specific | ERC4626Transformer.sol:L108 |
Description:
The linked mathematical operation is guaranteed to be performed safely by surrounding conditionals evaluated in either require
checks or if-else
constructs.
Example:
106if (_spentUnderlying < _neededUnderlying) {107 _underlying.safeTransfer(msg.sender, _neededUnderlying - _spentUnderlying);108}
Recommendation:
Given that safe arithmetics are toggled on by default in pragma
versions of 0.8.X
, we advise the linked statement to be wrapped in an unchecked
code block thereby optimizing its execution cost.
Alleviation (6ed56b5449ca241fc6be369d44f392f1f5313f93):
An unchecked
directive was introduced wrapping the referenced mathematical operation and optimizing the statement's gas cost.
ERC-02C: Misleading Naming Conventions
Type | Severity | Location |
---|---|---|
Code Style | ERC4626Transformer.sol:L112-L115, L117-L120 |
Description:
The functions _toUnderlying
& _toUnderlyingAmount
simply assign an input address
/ uint256
to a single-entry address
/ uint256
array and yield it.
Example:
112function _toUnderlying(address _underlying) internal pure returns (address[] memory _underlyingArray) {113 _underlyingArray = new address[](1);114 _underlyingArray[0] = _underlying;115}
Recommendation:
We advise them to be renamed to _toSingletonArray
instead as the _toUnderlying
/ _toUnderylingAmount
function names signify additional logic that would somehow convert the _underlying
/ _amount
data points which doesn't exist.
Alleviation (6ed56b5449ca241fc6be369d44f392f1f5313f93):
The _toUnderlying
and _toUnderlyingAmount
functions were both updated to _toSingletonArray
increasing the legibility of the codebase significantly.