Out-of-order retryable transactions
return
is incorrectly used in assembly mode SLITHER-W1023Detect if return
in an assembly block halts unexpectedly the execution.
Detects the possible usage of a variable before the declaration is stepped over (either because it is later declared, or declared in another scope).
Incorrect use of assert()
. See Solidity best practices.
Solidity defines a naming convention that should be followed.
ERC20
)._
at the beginning of the mixed_case
match for private variables and unused parameters.Unused state variable.
return
is used instead of a leave
SLITHER-W1026Detect if a return
is used where a leave
should be used.
block.timestamp
SLITHER-W1066Dangerous usage of block.timestamp
. block.timestamp
can be manipulated by miners.
The use of assembly is error-prone and should be avoided.
solc
versions 0.4.7
-0.5.9
contain a compiler bug leading to incorrect ABI encoder usage.
from
SLITHER-W1002Detect when msg.sender
is not used as from
in transferFrom.
Detect use of bitwise xor ^
instead of exponential **
Incorrect return values for ERC721
functions. A contract compiled with solidity > 0.4.22 interacting with these functions will fail to execute them, as the return value is missing.
Detect missing inheritance.
Detect arrays passed to a function that expects reference to a storage array
Detect collision due to dynamic type usages in abi.encodePacked
Detect if the values in a shift operation are reversed
Detect multiple constructor definitions in the same contract (using new and old schemes).
If a codebase has two contracts the similar names, the compilation artifacts will not contain one of the contracts with the duplicate name.
Detect unprotected variable that are marked protected