CertiK reviewed CAPTAIN TSUBASA -RIVALS- (Captain Tsubasa -RIVALS- - Audit) on 9 Mar 2023: 5 findings, 0 critical; 1 marked fixed, 2 acknowledged, 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 | 2 | 0 | 0 |
| Medium | 0 | 0 | 1 |
| Low | 0 | 2 | 0 |
The linked codes are not compatible with solc version v0.8.9: ```solidity=49 function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal override(ERC721, ERC721Enumerable) whenNotPaused { super._beforeTokenTransfer(from, to, tokenId); } ``` ### Proof of concept Following is the error message when we try to use compiler version v0.8.9: ```Solidity Error: Compiler run failed error[7792]: TypeError: Function has override specified but does not override anything. --> src/NFT.sol:53:16: | 53 | ) internal override(ERC721, ERC721Enumerable) whenNotPaused { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error[2353]: TypeError: Invalid contracts specified in override list: "ERC721" and "ERC721Enumerable". --> src/NFT.sol:53:16: | 53 | ) internal override(ERC721, ERC721Enumerable) whenNotPaused { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Note: This contract: --> lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol:19:1: | 19 | contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { | ^ (Relevant source part starts here and spans across multiple lines). Note: This contract: --> lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol:14:1: | 14 | abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { | ^ (Relevant source part starts here and spans across multiple lines). error[6480]: TypeError: Derived contract must override function "_beforeTokenTransfer". Two or more base classes define function with same name and parameter types. --> src/NFT.sol:10:1: | 10 | contract NFT is ERC721, ERC721Enumerable, Pausable, AccessControl, ERC721Burnable { | ^ (Relevant source part starts here and spans across multiple lines). Note: Definition in "ERC721": --> lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol:467:5: | 467 | function _beforeTokenTransfer( | ^ (Relevant source part starts here and spans across multiple lines). Note: Definition in "ERC721Enumerable": --> lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol:60:5: | 60 | function _beforeTokenTransfer( | ^ (Relevant source part starts here and spans across multiple lines). error[6160]: TypeError: Wrong argument count for function call: 3 arguments given but expected 4. --> src/NFT.sol:54:9: | 54 | super._beforeTokenTransfer(from, to, tokenId); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ```
The contracts cited have an unlocked compiler version. 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 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 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