Omniscia Alliance Block Audit

AutoStake Code Style Findings

AutoStake Code Style Findings

ASE-01C: Redundant Default Value Assignments

TypeSeverityLocation
Code StyleInformationalAutoStake.sol:L25-L27

Description:

The linked variables are assigned with the value literal 0 redundantly as their default value is already equal to that.

Example:

contracts/autostake-features/AutoStake.sol
20IRewardsPoolBase public rewardPool;
21IERC20Detailed public stakingToken;
22address public factory;
23uint256 public unit = 1e18;
24uint256 public valuePerShare = unit;
25uint256 public totalShares = 0;
26uint256 public totalValue = 0;
27uint256 public exitStake = 0;
28mapping(address => uint256) public share;

Recommendation:

We advise that the assignments are instead omitted to aid in the legibility of the codebase.

Alleviation:

The zero-value assignments were omitted from the codebase.

ASE-02C: Variable Mutability Specifier

TypeSeverityLocation
Gas OptimizationInformationalAutoStake.sol:L23

Description:

The linked variable is only assigned to once at its declaration.

Example:

contracts/autostake-features/AutoStake.sol
20IRewardsPoolBase public rewardPool;
21IERC20Detailed public stakingToken;
22address public factory;
23uint256 public unit = 1e18;
24uint256 public valuePerShare = unit;
25uint256 public totalShares = 0;
26uint256 public totalValue = 0;
27uint256 public exitStake = 0;
28mapping(address => uint256) public share;

Recommendation:

As a result, it can be properly set as a constant variable greatly optimizing the gas cost involved in utilizing it.

Alleviation:

The unit variable was properly set to constant, however, we advise it also be named accordingly in uppercase format as denoted by the official Solidity style guide.

ASE-03C: Variable Mutability Specifier

TypeSeverityLocation
Gas OptimizationInformationalAutoStake.sol:L21-L22, L33-L34

Description:

The linked variables are only assigned to once during the constructor.

Example:

contracts/autostake-features/AutoStake.sol
32constructor(address token, uint256 _throttleRoundBlocks, uint256 _throttleRoundCap, uint256 stakeEnd) public {
33 factory = msg.sender;
34 stakingToken = IERC20Detailed(token);
35 setLockEnd(stakeEnd);
36 setThrottleParams(_throttleRoundBlocks, _throttleRoundCap, stakeEnd);
37}

Recommendation:

As a result, they can be properly set to as immutable greatly optimizing the gas cost involved in utilizing them.

Alleviation:

The linked variables were properly set to immutable taking full advantage of the gas optimizations it brings.