CertiK reviewed Shentu Chain (Shentu Security Oracle) on 12 Oct 2020: 14 findings, 0 critical; 12 marked fixed, 2 open.
Report hosted on skynet.certik.com.
Trustblock does not review code.
Statuses are the security firm’s own, from its report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 0 | 0 |
| Medium | 0 | 0 | 0 |
| Low | 2 | 0 | 12 |
Each struct packs its members in 256-bit chunks. The Result struct contains the score (uint8) and the expiration (uint256) members, thus reserving two 256-bit chunks in storage.
The linked functions should check the value of their respective `contractAddress` parameter.
If the compiler version is above `0.6.0`, then the contract raises a compilation error due to the `fallback()` function in the Proxy.sol file.
If the compiler version is between `0.4.21` and `0.4.26`, then the contract raises a compilation error due to the keyword `payable` .
If the compiler version is between `0.4.21` and `0.4.26`, then the contract raises a compilation error.
Since an empty `bytes4` variable, i.e. 0, points to the default score of a contract, it is possible to have the same score applied to a function of the contract as well. The "identifier" of a contract is simply the first 4 bytes of the `keccak256` hash of the signature, meaning that an attacker would simply need to generate a function signature that results in a `keccak256` hash with 4 leading zeroes which is not an impossible achievement.
The linked variable is prefixed with an underscore yet is declared as public .
The linked variable is prefixed with an underscore yet is declared as public.
An unlocked compiler version in the source code of the contract permits the user to compile it at or above a particular version. This, in turn, leads to differences in the generated bytecode between compilations due to differing compiler version numbers.This can lead to an ambiguity when debugging as compiler specific bugs may occur in the codebase that would be hard to identify over a span of multiple compiler versions rather than a specific one.
If the compiler version is between `0.4.21` and `0.4.26`, then the contract raises a compilation error due to the keyword `payable`.
An unlocked compiler version in the source code of the contract permits the user to compile it at or above a particular version. This, in turn, leads to differences in the generated bytecode between compilations due to differing compiler version numbers. This can lead to an ambiguity when debugging as compiler specific bugs may occur in the codebase that would be hard to identify over a span of multiple compiler versions rather than a specific one.
The linked variable is redundantly stored in `storage` , as `storage` look-ups make the gas price higher.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (3)
1,044 projects reviewed · 1,375 reports · latest May 2025
See CertiK’s auditsSomething wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.
Tell us