# Perper Stablecoin EVM Smart Contract

Here's a condensed version of the text for the **Perper Stable Coin Smart Contract** page:

***

**Key Functionalities:**

* **ERC-20 Standard**: Implements the ERC-20 standard using the OpenZeppelin library.
* **Access Control**: Role-based access control restricts certain functionalities, managed via specific user roles.
* **Upgradability**: Supports contract upgrades through the OpenZeppelin UUPS pattern while retaining the existing contract state.
* **ERC-20 Permit**: Allows users to approve token allowances without a transaction by signing a permit message.
* **Burning Tokens**: Tokens can be burned by a burner role address, either directly or with permission.
* **Minting Tokens**: Supports direct and batch minting of new tokens, with unique batch identifiers and checksums for validation.
* **Pause/Unpause Contract**: Ability to pause or unpause all token transfers.
* **Rescuing Tokens**: Recovers tokens mistakenly sent to the contract.

**User Roles:**

* **Admin**: Assigns and unassigns roles.
* **Proxy Owner**: Upgrades the smart contract.
* **Blocklister**: Blocks/unblocks addresses.
* **Pauser/Unpauser**: Pauses or unpauses the contract.
* **Minter/Burner**: Mints or burns tokens.
* **Rescuer**: Recovers tokens sent by mistake.
* **Blocked**: Prevents an address from transferring or receiving tokens.

For more details, check out the full [Perper Stablecoin Smart Contract repository on GitHub](https://github.com/Perper-net/perper-stablecoin).

***

This summary provides an overview of the key functionalities and user roles of the Perper stablecoin smart contract.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://perper-net-project.gitbook.io/perper.net/perper-stablecoin-evm-smart-contract.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
