CertiK reviewed DancingSeaHorse (DancingSeaHorse - Audit) on 9 Sep 2022: 16 findings, 0 critical; 7 marked fixed, 1 acknowledged, 8 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 | 1 | 0 | 1 |
| Medium | 0 | 1 | 0 |
| Low | 7 | 0 | 6 |
In the contract `Nft` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority.  In commit `c9565905646c8621e0b060dd7173f2db0850c5f4`, the role `_owner` also has authority over the function below: - function `setVaultLimit`: to set a new `vaultlimit`. In commit `ec571b19e84d968e4623f27c10d4875ddbab7f1f`, the role `_owner` also has authority over the function below: - function `withdrawFixed`: to withdraw a designated number of BNBs from the contract to the `t1` address. In the contract `Mintpass` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority. 
One or more declarations do not conform to the [Solidity style guide](https://solidity.readthedocs.io/en/v0.7.3/style-guide.html#naming-conventions) with regards to its naming convention. Particularly: - `camelCase`: Should be applied to function names, argument names, local and state variable names, modifiers - `UPPER_CASE`: Should be applied to `constant` variables - `CapWords`: Should be applied to contract names, struct names, event names and enums ```solidity=30 function setRoot(bytes32 _newRoot) public onlyOwner { ``` - Parameter `_newRoot` is not in `camelCase`. --- ```solidity=54 function setMaxMint(uint256 _newmaxmint) public onlyOwner { ``` - Parameter `_newmaxmint` is not in `camelCase`. --- ```solidity=59 address _account, ``` - Parameter `_account` is not in `camelCase`. --- ```solidity=60 uint256 _id, ``` - Parameter `_id` is not in `camelCase`. --- ```solidity=61 bytes32[] memory _proof ``` - Parameter `_proof` is not in `camelCase`. --- ```solidity=77 address _account, ``` - Parameter `_account` is not in `camelCase`. --- ```solidity=78 uint256 _id, ``` - Parameter `_id` is not in `camelCase`. --- ```solidity=79 uint256 _amount ``` - Parameter `_amount` is not in `camelCase`. --- ```solidity=85 uint256 _id, ``` - Parameter `_id` is not in `camelCase`. --- ```solidity=86 uint256 _amount, ``` - Parameter `_amount` is not in `camelCase`. --- ```solidity=87 address _account ``` - Parameter `_account` is not in `camelCase`. --- ```solidity=38 struct metaData { ``` - Structure `metaData` is not in `CapWords`. --- ```solidity=44 metaData[] public Metadata; ``` - Variable `Metadata` is not in `camelCase`. --- ```solidity=60 function premintNFT(uint256 _mintAmount) public payable { ``` - Parameter `_mintAmount` is not in `camelCase`. --- ```solidity=77 function makeNft(uint256 _mintAmount) public payable { ``` - Parameter `_mintAmount` is not in `camelCase`. --- ```solidity=99 function giftNft(uint256 _mintAmount, address _address) public onlyOwner { ``` - Parameter `_mintAmount` is not in `camelCase`. --- ```solidity=99 function giftNft(uint256 _mintAmount, address _address) public onlyOwner { ``` - Parameter `_address` is not in `camelCase`. --- ```solidity=109 function OTC(uint256 _mintAmount, address _address) public onlyOwner { ``` - Function `OTC` is not in `camelCase`. --- ```solidity=109 function OTC(uint256 _mintAmount, address _address) public onlyOwner { ``` - Parameter `_mintAmount` is not in `camelCase`. --- ```solidity=109 function OTC(uint256 _mintAmount, address _address) public onlyOwner { ``` - Parameter `_address` is not in `camelCase`. --- ```solidity=119 function vault(uint256 _mintAmount, address _address) public onlyOwner { ``` - Parameter `_mintAmount` is not in `camelCase`. --- ```solidity=119 function vault(uint256 _mintAmount, address _address) public onlyOwner { ``` - Parameter `_address` is not in `camelCase`. --- ```solidity=132 function brandNft(uint256 _mintAmount) public payable { ``` - Parameter `_mintAmount` is not in `camelCase`. --- ```solidity=155 function setMintPass(address _tokenAddress) public onlyOwner { ``` - Parameter `_tokenAddress` is not in `camelCase`. --- ```solidity=178 function updateMeta(uint256 _tokenid,string calldata data) public { ``` - Parameter `_tokenid` is not in `camelCase`. --- ```solidity=199 function setCost(uint256 _newCost) public onlyOwner { ``` - Parameter `_newCost` is not in `camelCase`. --- ```solidity=203 function setBaseURI(string memory _newBaseURI) public onlyOwner { ``` - Parameter `_newBaseURI` is not in `camelCase`. --- ```solidity=207 function setMakeNftLimit(uint256 _newMakeNftLimit) public onlyOwner { ``` - Parameter `_newMakeNftLimit` is not in `camelCase`. --- ```solidity=211 function setPremintLimit(uint256 _newPremintLimit) public onlyOwner { ``` - Parameter `_newPremintLimit` is not in `camelCase`. --- ```solidity=215 function setBrandLimit(uint256 _newBrandLimit) public onlyOwner { ``` - Parameter `_newBrandLimit` is not in `camelCase`. --- ```solidity=219 function setVaultLimit(uint256 _newVaultLimit) public onlyOwner { ``` - Parameter `_newVaultLimit` is not in `camelCase`. --- ```solidity=223 function setBaseExtension(string memory _newBaseExtension) ``` - Parameter `_newBaseExtension` is not in `camelCase`. --- ```solidity=230 function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner { ``` - Parameter `_notRevealedURI` is not in `camelCase`. --- ```solidity=234 function pause(bool _state) public onlyOwner { ``` - Parameter `_state` is not in `camelCase`. --- ```solidity=246 function viewBrandCount(address _inst) public view returns (uint256) { ``` - Parameter `_inst` is not in `camelCase`.
Once an address holds an `_proof`, this address could mint NFTs to whomever the recipient or whatever the id is.
`public` functions that are never called by the contract could be declared as `external`. `external` functions are more efficient than `public` functions.
The variables `_newCost`, `_newMakeNftLimit`, `_newPremintLimit`, and `_newBrandLimit` do not have reasonable boundaries, so they can be given arbitrarily values.
There should always be events emitted in the sensitive functions that are controlled by centralization roles.
According to the following code: ```solidity function makeNft( address _account, uint256 _id, bytes32[] memory _proof ) public { uint256 nftbalance = balanceOf(_account, _id); require(passActive == true, "Sale is not Active"); require(nftbalance < maxMintAmount, "You have exceeding number of mints"); ... _mint(_account, _id, maxMintAmount, ""); ... ``` , if the `maxMintAmount` refers to the max amount for minting, the amount in the `_mint()` function should be `maxMintAmount - nftbalance`.
The linked variables could be declared as `constant` since these state variables are never modified.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (2)
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