> For the complete documentation index, see [llms.txt](https://audits.solidgrp.io/dreams-quest/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://audits.solidgrp.io/dreams-quest/audit-results/dreamquest-token/privilege-functions.md).

# Privilege Functions

The contract has an Access Control mechanism. The access control of the contract governs which operations are allowed by who.&#x20;

In the contract, there are the 3 access group ("priviledged groups") -

1. **Minter Role** - all addresses that have this role can mint new tokens.
2. **Admin Role**&#x20;
3. **Pauser Role -** Pauser Role can pause the token transfer functions. &#x20;

### **Minter Role Capabilities**

1. public mint function - all the addresses with the minter role can mint new tokens.&#x20;

```
function mint(address account, uint256 amount)
        public
        virtual
        onlyRole(MINTER_ROLE)
```

According to the team, the mint function's purposes are:

> 1. DreamsQuest is a play-to-earn game, users earn $DREAMS token which will be minted.
> 2. Mint function will be used for cross-chain bridge and “mint preferred chain”.

### **Admin Role Capabilities**

```
function burnFrom(address account, uint256 amount)
        public
        virtual
        onlyRole(DEFAULT_ADMIN_ROLE)
```

burnFrom allows all the addresses with admin role to burn tokens on behalf of other addresses if the caller (the admin) has allowance to do that.&#x20;

### **Pauser Role Capabilities**

1. pause - can pause transfer and allowance functions&#x20;
2. unpause - can unpause transfer and allowance functions.
