Omniscia Platypus Finance Audit
MasterPlatypus Static Analysis Findings
MasterPlatypus Static Analysis Findings
MPS-01S: Enumerable Set Optimization
Type | Severity | Location |
---|---|---|
Gas Optimization | Informational | MasterPlatypus.sol:L154, L179 |
Description:
The code currently evaluates the contains
check to see if an _lpToken
already exists in the set before adding it.
Example:
contracts/MasterPlatypus.sol
154require(!lpTokens.contains(address(_lpToken)), 'add: LP already added');155
156// update all pools157massUpdatePools();158
159// update last time rewards were calculated to now160uint256 lastRewardTimestamp = block.timestamp > startTimestamp ? block.timestamp : startTimestamp;161
162// add _allocPoint to total alloc points163totalAllocPoint = totalAllocPoint + _allocPoint;164
165// update PoolInfo with the new LP166poolInfo.push(167 PoolInfo({168 lpToken: _lpToken,169 allocPoint: _allocPoint,170 lastRewardTimestamp: lastRewardTimestamp,171 accPtpPerShare: 0,172 rewarder: _rewarder,173 sumOfFactors: 0,174 accPtpPerFactorShare: 0175 })176);177
178// add lpToken to the lpTokens enumerable set179lpTokens.add(address(_lpToken));
Recommendation:
We advise the add
function to be utilized directly in the require
check as the bool
it yields indicates whether the element was newly added or not.
Alleviation:
The Platypus team considered this exhibit but opted not to apply a remediation for it.
MPS-02S: Test Imports
Type | Severity | Location |
---|---|---|
Language Specific | Informational | MasterPlatypus.sol:L15 |
Description:
The linked import
utilizes a debugging file.
Example:
contracts/MasterPlatypus.sol
15import 'hardhat/console.sol';
Recommendation:
We advise it to be omitted from the codebase.
Alleviation:
The test imports no longer exist in the codebase.