# Phantazm Token (TBD)

The Phantazm token is an ERC-20 compatible token with the addition of a snapshot feature (used in governance balance tracking) and integrates [EIP 2612](https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md) permit function, allowing gas-less transactions and one transaction approval/transfer.

{% hint style="info" %}
This section will cover the technical aspects of the token.
{% endhint %}

The source code for the Phantazm token can be found on our Github

## Deployed Contracts

{% tabs %}
{% tab title="Mainnet" %}

| Proxy Contracts | Address and ABIs |
| --------------- | ---------------- |
| Phantazm Token  |                  |
| {% endtab %}    |                  |
| {% endtabs %}   |                  |

## Methods

Besides the standard ERC20 token features (`transfer()`, `balanceOf()`, `allowance()`, etc), the following features are also available.

### permit()

**`function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external`**

Allows a user to permit another account (or contract) to use their funds using a signed message. This enables gas-less transactions and single approval/transfer transactions.

| Parameter  | Type    | Description                                                                            |
| ---------- | ------- | -------------------------------------------------------------------------------------- |
| `owner`    | address | The owner of the funds                                                                 |
| `spender`  | address | The spender for the funds                                                              |
| `value`    | uint256 | The amount the `spender` is permitted to use                                           |
| `deadline` | uint256 | The deadline timestamp that the permit is valid. Use `type(uint).max` for no deadline. |
| `v`        | uint8   | Signature parameter                                                                    |
| `r`        | bytes32 | Signature parameter                                                                    |
| `s`        | bytes32 | Signature parameter                                                                    |

### \_nonces()

**`function _nonces(address owner) public`**

Returns the next valid nonce to submit when calling `permit()`

### event SnapshotDone

**`event SnapshotDone(address owner, uint128 oldValue, uint128 newValue)`**

An event emitted on every `transfer`, `mint` (with a valid `to` address), and `burn` (with a valid `from` address).

The snapshots are used for governance balance tracking.

| Parameter  | Type    | Description                                 |
| ---------- | ------- | ------------------------------------------- |
| `owner`    | address | The owner of the Phantazm tokens            |
| `oldValue` | uint128 | The value before the operation was executed |
| `newValue` | uint128 | The value after the operation was executed. |


---

# 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://phantazm.gitbook.io/phantazm-1/the-core-protocol/aave-token.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.
