Omniscia Alliance Block Audit
StakeLock Code Style Findings
StakeLock Code Style Findings
SLK-01C: Data Mutability Optimization
Type | Severity | Location |
---|---|---|
Gas Optimization | Informational | StakeLock.sol:L7, L9-L13 |
Description:
The setLockEnd
function is meant to sanitize the input _lockEndBlock
of the StakeLock
contract and assign it to its contract-level variable only once as it is invoked solely within constructor
s in the codebase of the project.
Example:
contracts/StakeLock.sol
9function setLockEnd(uint256 _lockEndBlock) internal {10 require(_lockEndBlock > block.number, "setLockEnd::Lock end needs to be in the future");11 require(lockEndBlock == 0, "setLockEnd::Lock end was already set");12 lockEndBlock = _lockEndBlock;13}
Recommendation:
As the variable is only assigned to once during derivative contract constructor
s, we advise that the code block within setLockEnd
is instead set to be of a constructor
that performs the exact same statements, permitting the introduction of the immutable
mutability specifier in the variable declaration L7, greatly optimizing the codebase.
Alleviation:
The setter function was omitted in favor of a constructor
that takes advantage of the immutable
trait.