Quantstamp reviewed Mavia Token on 6 Nov 2023: 9 findings, 0 critical; 4 marked fixed, 5 acknowledged.
Report hosted on certificate.quantstamp.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 | 0 | 1 |
| Medium | 0 | 3 | 0 |
| Low | 0 | 2 | 3 |
The state variable `tfMaxAmount` is used as a maximum Mavia token transfer cap for non-whitelisted addresses; this means that a single transfer of Mavia tokens cannot exceed the `tfMaxAmount`. While the `tfMaxAmount` cap limits the transfer amount for a single transfer, a user can simply transfer multiple times where the transfer amount of each transfer is less than `tfMaxAmount`. Therefore, the maximum transfer amount cap is easily bypassable by any user.
In this contract, the `_EDITOR_ROLE` and `DEFAULT_ADMIN_ROLE` are extremely privileged. Their implicit and explicit capabilities include, but are not limited to: 1. Transfer tokens between any two accounts. This can be achieved by setting a gateway address. 1. Blacklist any address and prevent them from transferring tokens. 1. Block further transfers for all users by increasing `tfStartTime` or setting `tfMaxAmount` to zero. 1. Allow users to circumvent transfer restrictions enforced with `tfStartTime` and `tfMaxAmount`. This can be achieved by whitelisting that user. These listed capabilities give both roles, `_EDITOR_ROLE` and `DEFAULT_ADMIN_ROLE`, the power to control the users and assets in circulation. Upon deployment, both roles are assigned to the deployer, as well as minting four million Mavia tokens as well.
Any Mavia token holder cannot rely on the ability to transfer their tokens, besides the fact that they can be blacklisted. Whenever the `tfStartTime` is increased above the current `block.timesamp` and `tfMaxAmount` is set to zero, they will not be able to transfer tokens anymore. According to the client, this functionality is used for these use cases: "before listing dex, or need time for investigating some hacking issue." However, the user cannot trust the deployer to use `fSetTradeTime()` in these cases only.
When the sending or receiving address is whitelisted, the additionally implemented transfer restrictions in `_transfer()` are not enforced. This is because those constraints are only checked in case the following statement holds true, meaning both addresses are NOT whitelisted: ``` !whitelist[_pSender] && !whitelist[_pRecipient] ``` As a result, a user can send assets to a whitelisted address without any constraints on the start time and amount.
If the `DEFAULT_ADMIN_ROLE` renounces its privileged role, the `MaviaToken` contract will have functionality that is no longer accessible. Consequently, critical protocol actions are no longer executable, and users could be prevented from transferring their Mavia tokens.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (1)
236 projects reviewed · 332 reports · latest Oct 2026
See Quantstamp’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