Omniscia Sheesha Finance Audit
BaseVesting Code Style Findings
BaseVesting Code Style Findings
BVG-01C: Redundant Conditional
Type | Severity | Location |
---|---|---|
Gas Optimization | Informational | BaseVesting.sol:L211 |
Description:
The first part of the else if
conditional is guaranteed by the preceding if
conditional and thus can be omitted.
Example:
208if (currentTimeStamp < startDate) {209 return 0;210} else if (211 currentTimeStamp >= startDate && currentTimeStamp < vestingTimeEnd212) {213 uint256 noOfDays = currentTimeStamp.sub(startDate).div(PERIOD);214 uint256 currentUnlockedPercentage = noOfDays.mul(215 everyDayReleasePercentage216 );217 return currentUnlockedPercentage;218} else {219 return PERCENTAGE;220}
Recommendation:
We advise it to be omitted to reduce the gas cost of the function.
Alleviation:
The conditional was instead adjusted to omit the first case altogether. In the new implementation, execution of _calculateAvailablePercentage
is impossible prior to the startDate
indirectly due to the underflow of currentTimeStamp.sub(startDate)
, thus rendering the omission of the first clause safe.
BVG-02C: Redundant Visibility Specifiers
Type | Severity | Location |
---|---|---|
Gas Optimization | Informational | BaseVesting.sol:L18, L19 |
Description:
The linked variables are contract-level constant
declarations that are made available publicly via the public
visibility specifier.
Example:
18uint256 public constant PERIOD = 1 days;19uint256 public constant PERCENTAGE = 1e20;
Recommendation:
We advise the visibility specifier to be omitted given that it currently generates redundant bytecode.
Alleviation:
Although the visibility specifiers were omitted, we advise them to be set as internal
. This is due to inexistent specifiers having one defined by the compiler which may differ between compiler versions and thus cause discrepancies in the compiled bytecode output.
BVG-03C: Variable Typo
Type | Severity | Location |
---|---|---|
Code Style | Informational | BaseVesting.sol:L141, L146 |
Description:
The variable percenageLP
is incorrectly spelled.
Example:
139/**140 * @dev Returns current available rewards for investor141 * @param percenageLP investor percenage for LP stake142 * @param percentageNative investor percentage for Native stake143 */144function getRewardBalance(145 address beneficiary,146 uint256 percenageLP,147 uint256 percentageNative148) public view returns (uint256 amount) {
Recommendation:
We advise it to be corrected to percentageLP
.
Alleviation:
The variable was properly renamed.