Omniscia Hot Cross Audit

CrossMint1155 Static Analysis Findings

CrossMint1155 Static Analysis Findings

CM5-01S: Boolean Literal Equality

TypeSeverityLocation
Code StyleInformationalCrossMint1155.sol:L34, L159

Description:

The linked statements perform a literal equality of a bool variable with true.

Example:

contracts/token/CrossMint1155.sol
33modifier existsOnly(uint256 id) {
34 require(exists[id] == true, "CrossMint1155: Only existing tokens");
35 _;
36}

Recommendation:

We advise the literal equality to be omitted as the variables can be utilized as is. Additionally, we advise an internal or private function to be coded that conducts the require check and is utilized by the modifier and respective function.

Alleviation:

Our recommendation was followed and an assertIdExists function was declared that properly utilizes the bool value as is within the require statement.

CM5-02S: Variable Shadowing

TypeSeverityLocation
Language SpecificInformationalCrossMint1155.sol:L59

Description:

The linked variable shadows the declaration of an inherited contract.

Example:

contracts/token/CrossMint1155.sol
56constructor(
57 string memory _name,
58 string memory _symbol,
59 string memory uri,
60 address owner
61) MinterControl(owner, msg.sender) ERC1155(uri) {
62 name = _name;
63 symbol = _symbol;
64
65 _setBaseURI(uri);
66}

Recommendation:

We strongly recommend it to be renamed to avoid the colission, such as by prefixing them or suffixing them with an underscore (_).

Alleviation:

The uri variable was properly suffixed with an underscore (_) thereby preventing a collision from occuring.