Omniscia GoGo Audit
StakingRewardsLP Code Style Findings
StakingRewardsLP Code Style Findings
SRL-01C: Potentially Redundant Function
| Type | Severity | Location |
|---|---|---|
| Code Style | Informational | StakingRewardsLP.sol:L102-L112 |
Description:
The rewardsClaimableWithoutLoss function simply yields the value of earned only if the user's lock period has passed and yields 0 otherwise.
Example:
102function rewardsClaimableWithoutLoss(address account)103 public104 view105 returns (uint256)106{107 if (lastStakedTime[account].add(lockPeriod) < block.timestamp) {108 return earned(account);109 } else {110 return 0;111 }112}Recommendation:
We advise the function to be adjusted to instead showcase the actual redeemable amount of a user which will be halved in case the lock time has passed.
Alleviation:
The GoGo team considered this exhibit but opted not to apply a remediation for it in the current iteration of the codebase.
SRL-02C: Usage of SafeMath
| Type | Severity | Location |
|---|---|---|
| Language Specific | Informational | StakingRewardsLP.sol:L6, L22 |
Description:
The usage of SafeMath is redundant for any pragma version that is above 0.8.X given that safe arithmetics are toggled on by default.
Example:
80function rewardPerToken() public view returns (uint256) {81 if (_totalSupply == 0) {82 return rewardPerTokenStored;83 }84 return85 rewardPerTokenStored.add(86 lastTimeRewardApplicable()87 .sub(lastUpdateTime)88 .mul(rewardRate)89 .mul(1e18)90 .div(_totalSupply)91 );92}Recommendation:
We advise the import and corresponding usage to be omitted from the codebase in favor of reduced gas costs.
Alleviation:
The GoGo team considered this exhibit but opted not to apply a remediation for it in the current iteration of the codebase.