Omniscia Echidna Finance Audit

PlatypusProxy Code Style Findings

PlatypusProxy Code Style Findings

PPY-01C: Inefficient Upgradeable Storage Layout

TypeSeverityLocation
Code StyleInformationalPlatypusProxy.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:

contracts/core/PlatypusProxy.sol
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

TypeSeverityLocation
Code StyleInformationalPlatypusProxy.sol:L39, L62, L77, L87

Description:

The linked require checks have no error messages explicitly defined.

Example:

contracts/core/PlatypusProxy.sol
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

TypeSeverityLocation
Gas OptimizationInformationalPlatypusProxy.sol:L46

Description:

The linked function does not utilize its named argument.

Example:

contracts/core/PlatypusProxy.sol
46function _authorizeUpgrade(address newImplementation)
47 internal
48 override
49 onlyOwner
50{}

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.