Omniscia SaucerSwap Audit
SafeCast Code Style Findings
SafeCast Code Style Findings
SCT-01C: Inexistent Error Messages
Type | Severity | Location |
---|---|---|
Code Style | SafeCast.sol:L12, L19, L26 |
Description:
The linked require
checks have no error messages explicitly defined.
Example:
12require((z = uint160(y)) == y);
Recommendation:
We advise each to be set so to increase the legibility of the codebase and aid in validating the require
checks' conditions.
Alleviation (3248d1d2fdfa6e1e270ff27db8eefb13dcb55c40):
The SaucerSwap team evaluated this exhibit and opted to acknowledge it.
SCT-02C: Redundant Comparison of Value
Type | Severity | Location |
---|---|---|
Gas Optimization | SafeCast.sol:L35 |
Description:
The referenced conditional will evaluate that the value
, a uint256
data type, is greater-than-or-equal-to the value of type(uint64).min
which evaluates to 0
.
Example:
33function toInt64(uint256 value) internal pure returns (int64) {34 require(35 value >= type(uint64).min && value <= 2**63-1, 'sc64'36 );37 return int64(uint64(value));38}
Recommendation:
Given that an unsigned number is guaranteed to be greater-than-or-equal-to zero, we advise the first part of the referenced conditional to be omitted, optimizing the function's gas cost.
Alleviation (3248d1d2fdfa6e1e270ff27db8eefb13dcb55c40):
The SaucerSwap team evaluated this exhibit and opted to acknowledge it.
SCT-03C: Suboptimal Representations of Numeric Maximums
Type | Severity | Location |
---|---|---|
Gas Optimization | SafeCast.sol:L26, L35 |
Description:
The referenced require
checks are meant to ensure that the y
and value
values being cast from the uint256
data type to the int256
data type and from the uint256
to the uint64
data type respectively will properly fit.
To ensure they are cast safely, they perform a comparison with value literals.
Example:
26require(y < 2**255);
Recommendation:
We advise the type
notation to be utilized and specifically type(int256).max
and type(uint64).max
respectively, greatly increasing the legibility of each statement whilst retaining the same gas cost.
To note, the comparator would also have to be adjusted to be inclusive for the first referenced instance.
Alleviation (3248d1d2fdfa6e1e270ff27db8eefb13dcb55c40):
The SaucerSwap team evaluated this exhibit and opted to acknowledge it.