# Enable your tokens in CCIP (Burn & Mint): Register from an EOA using Hardhat
Source: https://docs.chain.link/ccip/evm/tutorials/cross-chain-tokens/register-from-eoa-burn-mint-hardhat
Last Updated: 2026-04-24

> For the complete documentation index, see [llms.txt](/llms.txt).

## Guide Versions

- [Foundry (Burn & Mint)](/ccip/evm/tutorials/cross-chain-tokens/register-from-eoa-burn-mint-foundry)

- [Hardhat (Burn & Mint)](/ccip/evm/tutorials/cross-chain-tokens/register-from-eoa-burn-mint-hardhat)

In this tutorial you will:

1. Deploy a token on two chains using [Hardhat](https://hardhat.org/).
2. Set up a `Burn Mint` token pool on each chain.
3. Configure and activate the pools in CCIP so your token becomes a Cross-Chain Token (CCT).
4. (Optional) Test the setup by minting and transferring tokens across networks.

> **NOTE: If you do not explicitly configure these features, default behavior applies**

## Before You Begin

## Tutorial

### Prerequisites

> **CAUTION: Before you continue**
>
> **Sepolia ETH**: required for Sepolia transactions (deploy/configure/send).
>
> **Arbitrum Sepolia ETH**: required for Arbitrum Sepolia transactions (deploy/configure).
>
> **LINK (optional)**: if you plan to pay for the cross-chain transfer with `LINK`, fund the sender
> wallet with testnet LINK on the **source chain**.&#x20;
>
> You can use our [faucet](https://faucets.chain.link/) to get testnet LINK.

**Already have deployments? Skip only what you already have:**

- If you already have tokens deployed on **both** chains, skip **Deploy Tokens**.
- If you have deployed tokens but not the corresponding pools, you must still run **Deploy Token Pools** before continuing.
- If you already have tokens and **V2-compatible** token pools deployed on **both** chains, skip both sections and move straight on to [Enablement](#enablement).

**If you already have a V1 token pool deployed and want to use newer features or prepare for lane migration:**

- You will need to deploy a **V2-compatible token pool**
- Your existing V1 pool can continue to support current transfers
- Follow the migration guide to upgrade your setup without disrupting your existing deployment

> **Read**: [Migrate from V1 to V2 token pools](/ccip/evm/tutorials/cross-chain-tokens/migrate-from-v1-to-v2-burn-mint-hardhat)

Before continuing, export the relevant addresses so subsequent tasks can find them:

```bash filename="Terminal"
# For tokens
export ETHEREUM_SEPOLIA_TOKEN=<your_token_address_on_sepolia>
export ARBITRUM_SEPOLIA_TOKEN=<your_token_address_on_arbitrum_sepolia>

# For token pools
export ETHEREUM_SEPOLIA_TOKEN_POOL=<your_token_pool_address_on_sepolia>
export ARBITRUM_SEPOLIA_TOKEN_POOL=<your_token_pool_address_on_arbitrum_sepolia>
```

### Enablement

These steps configure your token pools and activate them under the CCIP protocol so your token becomes a truly Cross-Chain Token (CCT).

### Cross-chain Token Operations

If all the previous steps were successful, your CCT token is now fully registered and activated under the CCIP protocol.
Use these next steps to mint and transfer your tokens across networks.

> **CAUTION: Educational Example Disclaimer**
>
> Please note, this page contains community examples only — these are not Chainlink products or services and are not
> supported or maintained by Chainlink. This code represents an example of using a Chainlink product or service, and is
> intended for demonstration and educational purposes only. It is provided "AS IS" and "AS AVAILABLE" without warranties
> of any kind, may not have been audited, and may omit checks or error handling. Each party intending to use this
> example code does so entirely at their own risk and must perform its own audits, security and code review, key
> management, and testing before any production deployment and ensure the operation and performance of such code matches
> expectations. Neither Chainlink Labs nor the Chainlink Foundation deploys, operates, monitors, maintains or endorses
> any deployment of this code. Note that this is not a Chainlink product, feature or service, and there are no
> commitments made with respect to the code, including compatibility with future Chainlink releases. You should not rely
> on this code without first conducting your own technical, engineering, and security review. This code is also outside
> the scope of any Chainlink bug bounty programs. Neither Chainlink Labs, the Chainlink Foundation, nor Chainlink node
> operators are responsible for outcomes due to errors in this example or how it is deployed or operated, or liable for
> any resulting claims or damages. Use of the Chainlink Network is subject to the Chainlink Foundation [Terms of
> Service](https://chain.link/terms), which provides important information and disclosures. By using this code, you
> acknowledge and agree to these terms.