Omniscia Echidna Finance Audit
PlatypusProxy Code Style Findings
PlatypusProxy Code Style Findings
PPY-01C: Inefficient Upgradeable Storage Layout
Type | Severity | Location |
---|---|---|
Code Style | Informational | PlatypusProxy.sol:L22-L36 |
Description:
The contract in scope is meant to be an upgradeable contract yet its logic and storage are all set within a single file declaration.
Example:
17contract PlatypusProxy is OwnableUpgradeable, IPlatypusProxy, UUPSUpgradeable {18 using SafeERC20 for IERC20;19 uint256 public constant DELAY = 1 days;20 address public constant WAVAX = 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7;21
22 mapping(address => bool) public boosters;
Recommendation:
We advise the storage of the contract to be split to its interface to ensure that the structure is maintainable and that no storage collisions occur in future upgrades.
Alleviation:
The Echidna Finance team considered this exhibit but opted not to apply a remediation for it in the current iteration of the codebase.
PPY-02C: Inexistent Error Messages
Type | Severity | Location |
---|---|---|
Code Style | Informational | PlatypusProxy.sol:L39, L62, L77, L87 |
Description:
The linked require
checks have no error messages explicitly defined.
Example:
39require(ptp == address(0x0));
Recommendation:
We advise them to be set so to aid in the validation of the require
's condition as well as the legibility of the codebase.
Alleviation:
Error messages were explicitly defined in all linked instances except for one which was removed from the codebase.
PPY-03C: Redundant Input Argument Declaration
Type | Severity | Location |
---|---|---|
Gas Optimization | Informational | PlatypusProxy.sol:L46 |
Description:
The linked function does not utilize its named argument.
Example:
46function _authorizeUpgrade(address newImplementation)47 internal48 override49 onlyOwner50{}
Recommendation:
We advise the argument to remain nameless by simply declaring its data type and omitting its name.
Alleviation:
The name of the input argument was safely omitted.