> For the complete documentation index, see [llms.txt](https://dev.ada-anvil.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev.ada-anvil.io/guides/smart-contract/validators/mint-validator.md).

# Mint Validator

Detailed guide on mint validators including overview, use cases, token standards, and example Anvil API interactions for token minting and burning.

{% hint style="warning" %}
**Note**: This guide is currently in development and will be completed soon
{% endhint %}

## Mint Validator

### Overview

Mint validators (also called minting policies) control the creation and destruction of native tokens on Cardano. They define the rules under which tokens can be minted (created) or burned (destroyed), acting as a programmatic authority over asset supply management.

### Real-world Use Cases

* **NFT Collections**: Regulate minting of unique, non-fungible assets with provable scarcity
* **Fungible Tokens**: Create tokens with controlled supply mechanisms
* **Token Burning**: Implement redemption or destruction policies
* **Evolving NFTs**: Enable assets that can change state or properties over time
* **Multi-stage Releases**: Control phased distribution of limited assets

### Required Fields for Token Minting

{% hint style="info" %}
**For mint validators, you need two key components in your transaction:**

1. **mint**: An array defining what tokens to mint or burn
2. **scriptInteractions**: Specifies the validator hash, purpose, and redeemer

The policy ID in the mint array must match the validator hash in the scriptInteractions:

```json
{
  "mint": [{ 
    "type": "plutus",
    "policyId": "policy_id_here",
    "assetName": "TOKEN_NAME",
    "quantity": 1,
    "metadata": { ... } // Optional token metadata
  }],
  "scriptInteractions": [{
    "hash": "policy_id_here", // Must match policyId above
    "purpose": "mint",
    "redeemer": { ... }
  }]
}
```

**Note**: For native scripts (non-Plutus policies), use `type: "simple"` in the mint array and omit the scriptInteractions entry.
{% endhint %}

{% hint style="warning" %}
**PREREQUISITE: DEPLOYED SMART CONTRACT**

Before you can interact with any validator, you must have a compiled and deployed smart contract blueprint. The validator hash used in these examples comes from your deployed blueprint.

Refer to the [Blueprint Management](/guides/smart-contract/blueprint-management.md) guide for details on how to deploy your smart contract blueprint.
{% endhint %}

### Mint Validator API Interaction Example

Use the below examples to build transactions that interact with mint validators.

If you are unfamiliar with the Anvil API transaction builder, review the [Transaction Overview](/guides/transaction.md) guide first.

#### 1. Minting NFTs (CIP-25 Standard)

#### 2. Minting Fungible Tokens (CIP-68 Standard)

### See Examples

{% content-ref url="/pages/sIDc3mGeCPs5eUafjqfo" %}
[Mint with Smart Contract](/guides/smart-contract/mint-smart-contract.md)
{% endcontent-ref %}
