CertiK reviewed NIRVANA (Nirvana-Audit) on 21 Dec 2022: 6 findings, 0 critical; 3 acknowledged, 3 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 | 3 | 0 |
| Medium | 0 | 0 | 0 |
| Low | 3 | 0 | 0 |
In the contract `HasMinters` the role `_owner` has authority over the functions shown below. - addMinters(): add minters who can mint tokens. - removeMinters(): remove minters who can mint tokens. In the contract `VanaToken` the role `_owner` has authority over the functions shown below. - start(): unpause token transaction. - stop(): pause token transaction. In the contract `VanaToken` the role `minter` has authority over the functions shown below. - mint(): mint tokens, the token supply won't exceed the max supply. However, the cumulative number of tokens minted may exceed the max supply since token holders can burn a certain number of tokens. Any compromise to the `_owner` or `minter` account may allow the hacker to take advantage of this authority.
All **_amount** tokens are sent to the contract deployer when deploying the contract. This is a potential centralization risk as the deployer can distribute **_amount** tokens without the consensus of the community.
The array’s `delete` function will only delete the data of the last item, but will not update the array length. As a result, the infinite loop would occur when removing minters. ### Infinite Loop Scenario 1. Add the following addresses to the `minters` collection. ```batch ["0xA", "0xB", "0xC"] ``` 2. Delete the first address from the `minters` collection. ```batch ["0xA"] ``` 3. After the execution of the codes from L38 to L45, the values of state variables, `minters` and `minter`, are as below: ```batch minters:["0xA", "0xB", "0xC"] minter:["0xA": false, "0xB": true, "0xC": true] ``` 4. Since the array’s `delete` function will not change the array length, the `minters.length` is still `3`. After the three loops of the `while` codes from L49 and L59, the values of state variables, `minters` and `minter`, are as below, and `i` equals `2`: ```batch minters:["0xC", "0xB", "0x0"] minter:["0xA": false, "0xB": true, "0xC": true] ``` 5. Now, the `while` loop enters an infinite loop because `i` always equals `2` and `minter[0x0]` always returns `false`.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (1)
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