DancingSeaHorse - Audit

CertiKFiles named in the report

CertiK reviewed DancingSeaHorse (DancingSeaHorse - Audit) on 9 Sep 2022: 16 findings, 0 critical; 7 marked fixed, 1 acknowledged, 8 open.

No open critical findings
Open the reportOpen DancingSeaHorse’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings16

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High101
Medium010
Low706
HighCentralization Risks in the `owner` roleOpen

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. ![](https://accelerator-tasks-prod.acc.corp.certik.com/761dc9904d5b4927b6bcee19dbaf962c/diagrams/centralization_legendary-Nft-_owner.svg) 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. ![](https://accelerator-tasks-prod.acc.corp.certik.com/761dc9904d5b4927b6bcee19dbaf962c/diagrams/centralization_DHSH-Mintpass-_owner.svg)

LowDeclaration Naming ConventionOpen

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`.

LowDesign of the `_proof`Open

Once an address holds an `_proof`, this address could mint NFTs to whomever the recipient or whatever the id is.

LowImproper Usage of `public` and `external` TypeOpen

`public` functions that are never called by the contract could be declared as `external`. `external` functions are more efficient than `public` functions.

LowLack of reasonable boundaryOpen

The variables `_newCost`, `_newMakeNftLimit`, `_newPremintLimit`, and `_newBrandLimit` do not have reasonable boundaries, so they can be given arbitrarily values.

LowMissing Emit EventsOpen

There should always be events emitted in the sensitive functions that are controlled by centralization roles.

LowThe amount of the `makeNft`Open

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`.

LowVariables That Could Be Declared as `constant`Open

The linked variables could be declared as `constant` since these state variables are never modified.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (2)

  • legendary.sol
  • DHSH.sol

Part of DancingSeaHorse’s security record

DancingSeaHorse
Audits2 audits by 1 firmLast audit Oct 2022, by CertiK.
Critical findingsNo open critical findingsAcross 2 reports.
Open DancingSeaHorse’s security record

Security firm

CertiK

1,044 projects reviewed · 1,375 reports · latest May 2025

See CertiK’s audits

Something 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