# CCTP EVM Contracts and Interfaces

### Contract responsibilities

* **TokenMessengerV2**: Entrypoint for crosschain USDC transfer. Routes messages to burn USDC on a source chain, and mint USDC on a destination chain.
* **MessageTransmitterV2**: Generic message passing. Sends all messages on the source chain, and receives all messages on the destination chain.
* **TokenMinterV2**: Responsible for minting and burning USDC. Contains chain-specific settings used by burners and minters.
* **MessageV2**: Provides helper functions for crosschain transfers, such as `bytes32ToAddress` and `addressToBytes32`, which are commonly used when bridging between EVM and non-EVM chains. These conversions are simple: prepend 12 zero bytes to an EVM address, or strip them to convert back.

{% hint style="info" %}
If you’re writing your own integration, it’s more gas-efficient to [include this logic directly in your contract](https://github.com/circlefin/evm-cctp-contracts/blob/5f1901a9791b18204e8556bb53fb0dfcb05a832a/src/messages/Message.sol#L146) rather than calling an external one.
{% endhint %}

Full contract source code is [available on GitHub](https://github.com/circlefin/evm-cctp-contracts).

***

### Mainnet contract addresses

#### TokenMessengerV2: Mainnet

| Chain           | [Domain](/chainaiswap-docs/cross-chain-transfer-protocol/cctp-supported-chains-and-domains.md#cctp-supported-domains) | Address                                                                                                                                 |
| --------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| **Ethereum**    | 0                                                                                                                     | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://etherscan.io/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)                 |
| **Avalanche**   | 1                                                                                                                     | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://snowtrace.io/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)                 |
| **OP Mainnet**  | 2                                                                                                                     | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://optimistic.etherscan.io/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)      |
| **Arbitrum**    | 3                                                                                                                     | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://arbiscan.io/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)                  |
| **Base**        | 6                                                                                                                     | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://basescan.org/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)                 |
| **Polygon PoS** | 7                                                                                                                     | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://polygonscan.com/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)              |
| **Unichain**    | 10                                                                                                                    | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://uniscan.xyz/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)                  |
| **Linea**       | 11                                                                                                                    | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://lineascan.build/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)              |
| **Codex**       | 12                                                                                                                    | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://explorer.codex.xyz/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)           |
| **Sonic**       | 13                                                                                                                    | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://sonicscan.org/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)                |
| **World Chain** | 14                                                                                                                    | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://worldscan.org/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)                |
| **Monad**       | 15                                                                                                                    | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://monadvision.com/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)              |
| **Sei**         | 16                                                                                                                    | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://seitrace.com/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d?chain=pacific-1) |
| **XDC**         | 18                                                                                                                    | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://xdcscan.com/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)                  |
| **HyperEVM**    | 19                                                                                                                    | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://hyperscan.com/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)                |
| **Ink**         | 21                                                                                                                    | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://explorer.inkonchain.com/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)      |
| **Plume**       | 22                                                                                                                    | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://explorer.plume.org/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d)           |

#### MessageTransmitterV2: Mainnet

| Chain           | [Domain](/chainaiswap-docs/cross-chain-transfer-protocol/cctp-supported-chains-and-domains.md#cctp-supported-domains) | Address                                                                                                                                 |
| --------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| **Ethereum**    | 0                                                                                                                     | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://etherscan.io/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)                 |
| **Avalanche**   | 1                                                                                                                     | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://snowtrace.io/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)                 |
| **OP Mainnet**  | 2                                                                                                                     | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://optimistic.etherscan.io/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)      |
| **Arbitrum**    | 3                                                                                                                     | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://arbiscan.io/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)                  |
| **Base**        | 6                                                                                                                     | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://basescan.org/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)                 |
| **Polygon PoS** | 7                                                                                                                     | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://polygonscan.com/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)              |
| **Unichain**    | 10                                                                                                                    | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://uniscan.xyz/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)                  |
| **Linea**       | 11                                                                                                                    | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://lineascan.build/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)              |
| **Codex**       | 12                                                                                                                    | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://explorer.codex.xyz/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)           |
| **Sonic**       | 13                                                                                                                    | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://sonicscan.org/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)                |
| **World Chain** | 14                                                                                                                    | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://worldscan.org/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)                |
| **Monad**       | 15                                                                                                                    | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://monadvision.com/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)              |
| **Sei**         | 16                                                                                                                    | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://seitrace.com/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64?chain=pacific-1) |
| **XDC**         | 18                                                                                                                    | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://xdcscan.com/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)                  |
| **HyperEVM**    | 19                                                                                                                    | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://hyperscan.com/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)                |
| **Ink**         | 21                                                                                                                    | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://explorer.inkonchain.com/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)      |
| **Plume**       | 22                                                                                                                    | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://explorer.plume.org/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64)           |

#### TokenMinterV2: Mainnet

| Chain           | [Domain](/chainaiswap-docs/cross-chain-transfer-protocol/cctp-supported-chains-and-domains.md#cctp-supported-domains) | Address                                                                                                                                 |
| --------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| **Ethereum**    | 0                                                                                                                     | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://etherscan.io/address/0xfd78EE919681417d192449715b2594ab58f5D002)                 |
| **Avalanche**   | 1                                                                                                                     | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://snowtrace.io/address/0xfd78EE919681417d192449715b2594ab58f5D002)                 |
| **OP Mainnet**  | 2                                                                                                                     | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://optimistic.etherscan.io/address/0xfd78EE919681417d192449715b2594ab58f5D002)      |
| **Arbitrum**    | 3                                                                                                                     | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://arbiscan.io/address/0xfd78EE919681417d192449715b2594ab58f5D002)                  |
| **Base**        | 6                                                                                                                     | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://basescan.org/address/0xfd78EE919681417d192449715b2594ab58f5D002)                 |
| **Polygon PoS** | 7                                                                                                                     | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://polygonscan.com/address/0xfd78EE919681417d192449715b2594ab58f5D002)              |
| **Unichain**    | 10                                                                                                                    | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://uniscan.xyz/address/0xfd78EE919681417d192449715b2594ab58f5D002)                  |
| **Linea**       | 11                                                                                                                    | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://lineascan.build/address/0xfd78EE919681417d192449715b2594ab58f5D002)              |
| **Codex**       | 12                                                                                                                    | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://explorer.codex.xyz/address/0xfd78EE919681417d192449715b2594ab58f5D002)           |
| **Sonic**       | 13                                                                                                                    | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://sonicscan.org/address/0xfd78EE919681417d192449715b2594ab58f5D002)                |
| **World Chain** | 14                                                                                                                    | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://worldscan.org/address/0xfd78EE919681417d192449715b2594ab58f5D002)                |
| **Monad**       | 15                                                                                                                    | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://monadvision.com/address/0xfd78EE919681417d192449715b2594ab58f5D002)              |
| **Sei**         | 16                                                                                                                    | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://seitrace.com/address/0xfd78EE919681417d192449715b2594ab58f5D002?chain=pacific-1) |
| **XDC**         | 18                                                                                                                    | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://xdcscan.com/address/0xfd78EE919681417d192449715b2594ab58f5D002)                  |
| **HyperEVM**    | 19                                                                                                                    | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://hyperscan.com/address/0xfd78EE919681417d192449715b2594ab58f5D002)                |
| **Ink**         | 21                                                                                                                    | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://explorer.inkonchain.com/address/0xfd78EE919681417d192449715b2594ab58f5D002)      |
| **Plume**       | 22                                                                                                                    | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://explorer.plume.org/address/0xfd78EE919681417d192449715b2594ab58f5D002)           |

#### MessageV2: Mainnet

| Chain           | [Domain](/chainaiswap-docs/cross-chain-transfer-protocol/cctp-supported-chains-and-domains.md#cctp-supported-domains) | Address                                                                                                                                 |
| --------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| **Ethereum**    | 0                                                                                                                     | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://etherscan.io/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)                 |
| **Avalanche**   | 1                                                                                                                     | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://snowtrace.io/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)                 |
| **OP Mainnet**  | 2                                                                                                                     | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://optimistic.etherscan.io/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)      |
| **Arbitrum**    | 3                                                                                                                     | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://arbiscan.io/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)                  |
| **Base**        | 6                                                                                                                     | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://basescan.org/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)                 |
| **Polygon PoS** | 7                                                                                                                     | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://polygonscan.com/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)              |
| **Unichain**    | 10                                                                                                                    | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://uniscan.xyz/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)                  |
| **Linea**       | 11                                                                                                                    | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://lineascan.build/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)              |
| **Codex**       | 12                                                                                                                    | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://explorer.codex.xyz/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)           |
| **Sonic**       | 13                                                                                                                    | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://sonicscan.org/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)                |
| **World Chain** | 14                                                                                                                    | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://worldscan.org/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)                |
| **Monad**       | 15                                                                                                                    | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://monadvision.com/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)              |
| **Sei**         | 16                                                                                                                    | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://seitrace.com/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78?chain=pacific-1) |
| **XDC**         | 18                                                                                                                    | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://xdcscan.com/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)                  |
| **HyperEVM**    | 19                                                                                                                    | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://hyperscan.com/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)                |
| **Ink**         | 21                                                                                                                    | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://explorer.inkonchain.com/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)      |
| **Plume**       | 22                                                                                                                    | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://explorer.plume.org/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78)           |

***

### Testnet contract addresses

#### TokenMessengerV2: Testnet

| Chain                   | [Domain](/chainaiswap-docs/cross-chain-transfer-protocol/cctp-supported-chains-and-domains.md#cctp-supported-domains) | Address                                                                                                                                    |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **Ethereum Sepolia**    | 0                                                                                                                     | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://sepolia.etherscan.io/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)            |
| **Avalanche Fuji**      | 1                                                                                                                     | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://testnet.snowtrace.io/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)            |
| **OP Sepolia**          | 2                                                                                                                     | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://sepolia-optimism.etherscan.io/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)   |
| **Arbitrum Sepolia**    | 3                                                                                                                     | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://sepolia.arbiscan.io/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)             |
| **Base Sepolia**        | 6                                                                                                                     | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://base-sepolia.blockscout.com/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)     |
| **Polygon PoS Amoy**    | 7                                                                                                                     | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://amoy.polygonscan.com/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)            |
| **Unichain Sepolia**    | 10                                                                                                                    | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://unichain-sepolia.blockscout.com/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA) |
| **Linea Sepolia**       | 11                                                                                                                    | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://sepolia.lineascan.build/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)         |
| **Codex Testnet**       | 12                                                                                                                    | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://explorer.codex-stg.xyz/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)          |
| **Sonic Testnet**       | 13                                                                                                                    | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://blaze.soniclabs.com/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)             |
| **World Chain Sepolia** | 14                                                                                                                    | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://sepolia.worldscan.org/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)           |
| **Monad Testnet**       | 15                                                                                                                    | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://testnet.monadexplorer.com/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)       |
| **Sei Testnet**         | 16                                                                                                                    | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://seitrace.com/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA?chain=atlantic-2)   |
| **XDC Apothem**         | 18                                                                                                                    | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://testnet.xdcscan.com/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)             |
| **HyperEVM Testnet**    | 19                                                                                                                    | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://testnet.purrsec.com/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)             |
| **Ink Testnet**         | 21                                                                                                                    | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://explorer-sepolia.inkonchain.com/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA) |
| **Plume Testnet**       | 22                                                                                                                    | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://testnet-explorer.plume.org/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)      |
| **Arc Testnet**         | 26                                                                                                                    | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://testnet.arcscan.app/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA)             |

#### MessageTransmitterV2: Testnet

| Chain                   | [Domain](/chainaiswap-docs/cross-chain-transfer-protocol/cctp-supported-chains-and-domains.md#cctp-supported-domains) | Address                                                                                                                                    |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **Ethereum Sepolia**    | 0                                                                                                                     | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://sepolia.etherscan.io/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)            |
| **Avalanche Fuji**      | 1                                                                                                                     | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://testnet.snowtrace.io/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)            |
| **OP Sepolia**          | 2                                                                                                                     | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://sepolia-optimism.etherscan.io/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)   |
| **Arbitrum Sepolia**    | 3                                                                                                                     | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://sepolia.arbiscan.io/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)             |
| **Base Sepolia**        | 6                                                                                                                     | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://base-sepolia.blockscout.com/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)     |
| **Polygon PoS Amoy**    | 7                                                                                                                     | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://amoy.polygonscan.com/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)            |
| **Unichain Sepolia**    | 10                                                                                                                    | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://unichain-sepolia.blockscout.com/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275) |
| **Linea Sepolia**       | 11                                                                                                                    | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://sepolia.lineascan.build/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)         |
| **Codex Testnet**       | 12                                                                                                                    | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://explorer.codex-stg.xyz/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)          |
| **Sonic Testnet**       | 13                                                                                                                    | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://blaze.soniclabs.com/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)             |
| **World Chain Sepolia** | 14                                                                                                                    | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://sepolia.worldscan.org/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)           |
| **Monad Testnet**       | 15                                                                                                                    | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://testnet.monadexplorer.com/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)       |
| **Sei Testnet**         | 16                                                                                                                    | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://seitrace.com/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275?chain=atlantic-2)   |
| **XDC Apothem**         | 18                                                                                                                    | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://testnet.xdcscan.com/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)             |
| **HyperEVM Testnet**    | 19                                                                                                                    | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://testnet.purrsec.com/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)             |
| **Ink Testnet**         | 21                                                                                                                    | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://explorer-sepolia.inkonchain.com/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275) |
| **Plume Testnet**       | 22                                                                                                                    | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://testnet-explorer.plume.org/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)      |
| **Arc Testnet**         | 26                                                                                                                    | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://testnet.arcscan.app/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275)             |

#### TokenMinterV2: Testnet

| Chain                   | [Domain](/chainaiswap-docs/cross-chain-transfer-protocol/cctp-supported-chains-and-domains.md#cctp-supported-domains) | Address                                                                                                                                    |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **Ethereum Sepolia**    | 0                                                                                                                     | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://sepolia.etherscan.io/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)            |
| **Avalanche Fuji**      | 1                                                                                                                     | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://testnet.snowtrace.io/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)            |
| **OP Sepolia**          | 2                                                                                                                     | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://sepolia-optimism.etherscan.io/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)   |
| **Arbitrum Sepolia**    | 3                                                                                                                     | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://sepolia.arbiscan.io/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)             |
| **Base Sepolia**        | 6                                                                                                                     | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://base-sepolia.blockscout.com/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)     |
| **Polygon PoS Amoy**    | 7                                                                                                                     | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://amoy.polygonscan.com/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)            |
| **Unichain Sepolia**    | 10                                                                                                                    | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://unichain-sepolia.blockscout.com/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192) |
| **Linea Sepolia**       | 11                                                                                                                    | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://sepolia.lineascan.build/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)         |
| **Codex Testnet**       | 12                                                                                                                    | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://explorer.codex-stg.xyz/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)          |
| **Sonic Testnet**       | 13                                                                                                                    | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://blaze.soniclabs.com/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)             |
| **World Chain Sepolia** | 14                                                                                                                    | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://sepolia.worldscan.org/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)           |
| **Monad Testnet**       | 15                                                                                                                    | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://testnet.monadexplorer.com/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)       |
| **Sei Testnet**         | 16                                                                                                                    | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://seitrace.com/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192?chain=atlantic-2)   |
| **XDC Apothem**         | 18                                                                                                                    | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://testnet.xdcscan.com/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)             |
| **HyperEVM Testnet**    | 19                                                                                                                    | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://testnet.purrsec.com/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)             |
| **Ink Testnet**         | 21                                                                                                                    | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://explorer-sepolia.inkonchain.com/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192) |
| **Plume Testnet**       | 22                                                                                                                    | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://testnet-explorer.plume.org/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)      |
| **Arc Testnet**         | 26                                                                                                                    | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://testnet.arcscan.app/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192)             |

#### MessageV2: Testnet

| Chain                   | [Domain](/chainaiswap-docs/cross-chain-transfer-protocol/cctp-supported-chains-and-domains.md#cctp-supported-domains) | Address                                                                                                                                    |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **Ethereum Sepolia**    | 0                                                                                                                     | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://sepolia.etherscan.io/address/0xbaC0179bB358A8936169a63408C8481D582390C4)            |
| **Avalanche Fuji**      | 1                                                                                                                     | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://testnet.snowtrace.io/address/0xbaC0179bB358A8936169a63408C8481D582390C4)            |
| **OP Sepolia**          | 2                                                                                                                     | [`0xbac0179bb358a8936169a63408c8481d582390c4`](https://sepolia-optimism.etherscan.io/address/0xbac0179bb358a8936169a63408c8481d582390c4)   |
| **Arbitrum Sepolia**    | 3                                                                                                                     | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://sepolia.arbiscan.io/address/0xbaC0179bB358A8936169a63408C8481D582390C4)             |
| **Base Sepolia**        | 6                                                                                                                     | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://base-sepolia.blockscout.com/address/0xbaC0179bB358A8936169a63408C8481D582390C4)     |
| **Polygon PoS Amoy**    | 7                                                                                                                     | [`0xbac0179bb358a8936169a63408c8481d582390c4`](https://amoy.polygonscan.com/address/0xbac0179bb358a8936169a63408c8481d582390c4)            |
| **Unichain Sepolia**    | 10                                                                                                                    | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://unichain-sepolia.blockscout.com/address/0xbaC0179bB358A8936169a63408C8481D582390C4) |
| **Linea Sepolia**       | 11                                                                                                                    | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://sepolia.lineascan.build/address/0xbaC0179bB358A8936169a63408C8481D582390C4)         |
| **Codex Testnet**       | 12                                                                                                                    | [`0xbac0179bb358a8936169a63408c8481d582390c4`](https://explorer.codex-stg.xyz/address/0xbac0179bb358a8936169a63408c8481d582390c4)          |
| **Sonic Testnet**       | 13                                                                                                                    | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://blaze.soniclabs.com/address/0xbaC0179bB358A8936169a63408C8481D582390C4)             |
| **World Chain Sepolia** | 14                                                                                                                    | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://sepolia.worldscan.org/address/0xbaC0179bB358A8936169a63408C8481D582390C4)           |
| **Monad Testnet**       | 15                                                                                                                    | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://testnet.monadexplorer.com/address/0xbaC0179bB358A8936169a63408C8481D582390C4)       |
| **Sei Testnet**         | 16                                                                                                                    | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://seitrace.com/address/0xbaC0179bB358A8936169a63408C8481D582390C4?chain=atlantic-2)   |
| **XDC Apothem**         | 18                                                                                                                    | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://testnet.xdcscan.com/address/0xbaC0179bB358A8936169a63408C8481D582390C4)             |
| **HyperEVM Testnet**    | 19                                                                                                                    | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://testnet.purrsec.com/address/0xbaC0179bB358A8936169a63408C8481D582390C4)             |
| **Ink Testnet**         | 21                                                                                                                    | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://explorer-sepolia.inkonchain.com/address/0xbaC0179bB358A8936169a63408C8481D582390C4) |
| **Plume Testnet**       | 22                                                                                                                    | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://testnet-explorer.plume.org/address/0xbaC0179bB358A8936169a63408C8481D582390C4)      |
| **Arc Testnet**         | 26                                                                                                                    | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://testnet.arcscan.app/address/0xbaC0179bB358A8936169a63408C8481D582390C4)             |

***

### CCTP Interface

This section provides the **Smart Contract Interface** exposed by **CCTP**, outlining the available functions and their parameters. The interface below serves as a reference for permissionless messaging functions exposed by the **TokenMessengerV2** and **MessageTransmitterV2** functions.

#### TokenMessengerV2

**depositForBurn**

Deposits and burns tokens from sender to be minted on destination domain, and emits a crosschain message by calling MessageTransmitter’s `sendMessage` function. Minted tokens will be transferred to `mintRecipient`.

Note: There is a $10 million limit on the amount of USDC that can be burned in a single CCTP transaction. If the amount exceeds this limit, the transaction will revert. If you need to transfer more than this limit, break up your transfers into multiple transactions. For Fast Transfers, you should always [check the remaining allowance](https://developers.circle.com/api-reference/cctp/all/get-fast-burn-usdc-allowance) before initiating a transfer to ensure there is enough to complete your transfer.

Parameters

| Field                  | Type      | Description                                                                                                                             |
| ---------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `amount`               | `uint256` | Amount of tokens to deposit and burn                                                                                                    |
| `destinationDomain`    | `uint32`  | Destination domain ID to send the message to                                                                                            |
| `mintRecipient`        | `bytes32` | Address of mint recipient on destination domain (must be converted to 32 byte array, that is, prefix with zeros if needed)              |
| `burnToken`            | `address` | Address of contract to burn deposited tokens on local domain                                                                            |
| `destinationCaller`    | `bytes32` | Address as `bytes32` which can call `receiveMessage` on destination domain. If set to bytes32(0), any address can call `receiveMessage` |
| `maxFee`               | `uint256` | Max fee paid for fast burn, specified in units of `burnToken`                                                                           |
| `minFinalityThreshold` | `uint32`  | Minimum finality threshold at which burn will be attested                                                                               |

**depositForBurnWithHook**

Deposits and burns tokens from sender to be minted on destination domain, and emits a crosschain message with additional hook data appended. In addition to the standard `depositForBurn` parameters, `depositForBurnWithHook` accepts a dynamic-length `hookData` parameter, allowing the caller to include additional metadata to the attested message, which can be used to trigger custom logic on the destination chain.

Note: There is a $10 million limit on the amount of USDC that can be burned in a single CCTP transaction. If the amount exceeds this limit, the transaction will revert. If you need to transfer more than this limit, break up your transfers into multiple transactions. For Fast Transfers, you should always [check the remaining allowance](https://developers.circle.com/api-reference/cctp/all/get-fast-burn-usdc-allowance) before initiating a transfer to ensure there is enough to complete your transfer.

Parameters

| Field                  | Type      | Description                                                                                                                             |
| ---------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `amount`               | `uint256` | Amount of tokens to burn                                                                                                                |
| `destinationDomain`    | `uint32`  | Destination domain to send the message to                                                                                               |
| `mintRecipient`        | `bytes32` | Address of mint recipient on destination domain (must be converted to 32 byte array, that is, prefix with zeros if needed)              |
| `burnToken`            | `address` | Address of contract to burn deposited tokens on local domain                                                                            |
| `destinationCaller`    | `bytes32` | Address as `bytes32` which can call `receiveMessage` on destination domain. If set to bytes32(0), any address can call `receiveMessage` |
| `maxFee`               | `uint256` | Max fee paid for fast burn, specified in units of `burnToken`                                                                           |
| `minFinalityThreshold` | `uint32`  | Minimum finality threshold at which burn will be attested                                                                               |
| `hookData`             | `bytes`   | Additional metadata attached to the attested message, which can be used to trigger custom logic on the destination chain                |

**getMinFeeAmount**

Calculates and returns the minimum fee required for a given amount in a Standard Transfer. If the `minFee` (per unit of `burnToken`) is non-zero, the specified `maxFee` must be at least the returned minimum fee. Otherwise, the burn will revert onchain.

Parameters

| Field    | Type      | Description                                                                                     |
| -------- | --------- | ----------------------------------------------------------------------------------------------- |
| `amount` | `uint256` | The amount used to compute the minimum fee. Must be greater than `1` if standard fee is applied |

**handleReceiveFinalizedMessage**

Handles incoming message received by the local MessageTransmitter, and takes the appropriate action. For a burn message, mints the associated token to the requested recipient on the local domain. Validates the function sender is the local MessageTransmitter, and the remote sender is a registered remote TokenMessenger for `remoteDomain`.

Parameters

| Field                       | Type                     | Description                                                  |
| --------------------------- | ------------------------ | ------------------------------------------------------------ |
| `remoteDomain`              | `uint32`                 | The domain where the message originated from                 |
| `sender`                    | `bytes32`                | The sender of the message (remote TokenMessenger)            |
| `finalityThresholdExecuted` | `uint32`                 | Specifies the level of finality Iris signed the message with |
| `messageBody`               | `bytes` (dynamic length) | The message body bytes                                       |

**handleReceiveUnfinalizedMessage**

Handles incoming message received by the local MessageTransmitter, and takes the appropriate action. For a burn message, mints the associated token to the requested recipient on the local domain. Validates the function sender is the local MessageTransmitter, and the remote sender is a registered remote TokenMessenger for `remoteDomain`.

Similar to `handleReceiveFinalizedMessage`, but is called for messages which are not finalized (`finalityThresholdExecuted` < 2000). Unlike `handleReceiveFinalizedMessage`, `handleReceiveUnfinalizedMessage` has the following `messageBody` parameters:

* **`expirationBlock`**. If `expirationBlock` ≤ `blockNumber` on the destination domain, the message will revert and must be re-signed without the expiration block.
* **`feeExecuted`**. If nonzero, the `feeExecuted` is minted to the `feeRecipient`.

Parameters

| Field                       | Type                     | Description                                                                                                         |
| --------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------- |
| `remoteDomain`              | `uint32`                 | The domain where the message originated from                                                                        |
| `sender`                    | `bytes32`                | The sender of the message (remote TokenMessenger)                                                                   |
| `finalityThresholdExecuted` | `uint32`                 | Specifies the level of finality Iris signed the message with                                                        |
| `messageBody`               | `bytes` (dynamic length) | The message body bytes (see [Message format](broken://pages/bac7c1a53b3bea89fbae2edfa8de2d0ac977aa43#message-body)) |

#### MessageTransmitterV2

**receiveMessage**

Receive message on destination chain by passing message and attestation. Emits `MessageReceived` event. Messages with a given nonce can only be broadcast successfully once for a pair of domains. The message body of a valid message is passed to the specified recipient for further processing.

Parameters

| Field         | Type    | Description                                                                                                  |
| ------------- | ------- | ------------------------------------------------------------------------------------------------------------ |
| `message`     | `bytes` | Encoded message (see [Message format](broken://pages/bac7c1a53b3bea89fbae2edfa8de2d0ac977aa43#message-body)) |
| `attestation` | `bytes` | Signed attestation received from attestation service (Iris)                                                  |

**sendMessage**

Sends a message to the recipient on the destination domain. Emits a `MessageSent` event which will be attested by Circle’s attestation service.

Parameters

| Field                  | Type      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ---------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `destinationDomain`    | `uint32`  | Destination domain ID to send the message to                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `recipient`            | `bytes32` | Address of recipient on destination domain                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `destinationCaller`    | `bytes32` | Address as `bytes32` which can call `receiveMessage` on destination domain. If set to bytes32(0), any address can call `receiveMessage`                                                                                                                                                                                                                                                                                                                         |
| `minFinalityThreshold` | `uint32`  | Minimum finality threshold requested. Initially, supported values for `minFinalityThreshold` are \[1, 2000]. A value outside of the support values range will be interpreted as 2000 (finalized) by the attestation service (Iris). For a value within the supported range, the attestation service (Iris) will attest the message with a `finalityThresholdExecuted` >= `minFinalityThreshold`. Initial thresholds supported: 1000: Confirmed; 2000: Finalized |
| `messageBody`          | `bytes`   | App-specific message to be handled by recipient                                                                                                                                                                                                                                                                                                                                                                                                                 |

***

Related pages:

* [CCTP Supported Chains and Domains](/chainaiswap-docs/cross-chain-transfer-protocol/cctp-supported-chains-and-domains.md)
* [CCTP Solana Programs and Interfaces](broken://pages/d555f8657e1a1b5b4cca95664a0dd91b36742463)


---

# 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://chainaiswap.gitbook.io/chainaiswap-docs/cross-chain-transfer-protocol/cctp-evm-contracts-and-interfaces.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.
