VIDT DAO

CertiKCode version: not recorded (see the report)

CertiK reviewed VIDT DAO on 27 Sep 2022: 14 findings, 0 critical; 8 marked fixed, 1 acknowledged, 5 open.

No open critical findings
Open the reportOpen VIDT DAO’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings14

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

SeverityOpenAcknowledgedFixed
Critical000
High300
Medium011
Low207
HighCentralization Risks in VIDT.solOpen

In the contract `Controllable` the role `controllers` has authority over the functions shown in the diagram below. Any compromise to the `controllers` account may allow the hacker to take advantage of this authority and - add a controller to controllers through `addController()` - remove a controller from controllers through `removeController()` ![](https://accelerator-tasks-prod.acc.corp.certik.com/ad5407f462e741a1bf1f2872da5c1180/diagrams/centralization_VIDT-Controllable-controllers.svg) In the contract `VIDT` the role `controllers` has authority over the functions shown in the diagram below. Any compromise to the `controllers` account may allow the hacker to take advantage of this authority and - set validation price through `setPrice()` - set validation fee through `setFee()` - set validation wallet through `setWallet()` - set the address of `_nftContract` and `_nftdContract` through `setContracts()` - list files through `listFiles()` ![](https://accelerator-tasks-prod.acc.corp.certik.com/ad5407f462e741a1bf1f2872da5c1180/diagrams/centralization_VIDT-VIDT-controllers.svg) In the contract `VIDT` the role `_validationWallet` account can withdraw all arbitrary tokens and BNBs of the contract through `transferToken()` and `withdraw()`.

HighInitial Token DistributionOpen

`1e27` tokens are sent to `msg.sender` when deploying the contract. This could be a centralization risk as the deployer can distribute tokens without obtaining the consensus of the community.

HighPotential Risk of `delegatecall`Open

DelegateCall, as the name implies, is a calling mechanism of how caller contract calls target contract function but when target contract executed its logic, the context is not on the user who executes caller contract but on caller contract. So all developers should be aware of the risk that the `target` address may do harm to the current contract, such as calling the `selfdestruct()` or modifying the storage. In addition, it may also cause function clashing. Refer to https://forum.openzeppelin.com/t/beware-of-the-proxy-learn-how-to-exploit-function-clashing/1070.

LowDiscussion for ContractOpen

1. Creating an NFT in the function `validateNFT()` is based on whether it is divisible or not, but the function `validateFile()` is not. 2. The function `validateFile()` supports token or BNB payments, there is no strict restriction to only one kind of payment, so that the user may pay both at the same time. The functions `memoryValidateFile`,`validateNFT()` and `covertValidateFile()` have the same issue. If both `cStore` and `NFT` are `false`, the logic is similar to the function `covertValidateFile()`. 3. The functions `simpleValidateFile()` and `covertValidateFile()` do not support `allowances` and have inconsistent function names and logic. What is the purpose of these two functions?

LowHardcode AddressOpen

There is a hardcode address in this codebase.

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.

Part of VIDT DAO’s security record

VIDT DAO
Audits1 audit by 1 firmLast audit Sep 2022, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open VIDT DAO’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