_Cross-Chain Transfer Protocol (CCTP) is a permissionless on-chain utility that can burn native USDC on a source chain and mint native USDC of the same amount on a destination chain. This is made possible by two primary CCTP contracts found on each chain, MessageTransmitter and TokenMessenger._

## Contract responsibilities

  • **[TokenMessenger](🔗)**: Entrypoint for cross-chain USDC transfer. Routes messages to burn USDC on source chain, and mint USDC on destination chain.

  • **[MessageTransmitter](🔗)**: Generic message passing. Sends all messages on the source chain, and receives all messages on the destination chain.

  • **TokenMinter**: Responsible for minting and burning USDC. Contains chain-specific settings used by minters and burners.

\*Full contract source code is available at <https://github.com/circlefin/evm-cctp-contracts>

## Mainnet contract addresses

### TokenMessenger: Mainnet

Chain[Domain](🔗)Address
Ethereum0[0xbd3fa81b58ba92a82136038b25adec7066af3155](🔗)
Avalanche1[0x6b25532e1060ce10cc3b0a99e5683b91bfde6982](🔗)

### MessageTransmitter: Mainnet

Chain[Domain](🔗)Address
Ethereum0[0x0a992d191deec32afe36203ad87d7d289a738f81](🔗)
Avalanche1[0x8186359af5f57fbb40c6b14a588d2a59c0c29880](🔗)

### TokenMinter: Mainnet

Chain[Domain](🔗)Address
Ethereum0[0xc4922d64a24675e16e1586e3e3aa56c06fabe907](🔗)
Avalanche1[0x420f5035fd5dc62a167e7e7f08b604335ae272b8](🔗)

## Testnet contract addresses

### TokenMessenger: Testnet

Chain[Domain](🔗)Address
Ethereum0[0xd0c3da58f55358142b8d3e06c1c30c5c6114efe8](🔗)
Avalanche1[0xeb08f243e5d3fcff26a9e38ae5520a669f4019d0](🔗)

### MessageTransmitter: Testnet

Chain[Domain](🔗)Address
Ethereum0[0x26413e8157cd32011e726065a5462e97dd4d03d9](🔗)
Avalanche1[0xa9fb1b3009dcb79e2fe346c16a604b8fa8ae0a79](🔗)

### TokenMinter: Testnet

Chain[Domain](🔗)Address
Ethereum0[0xca6b4c00831ffb77afe22e734a6101b268b7fcbe](🔗)
Avalanche1[0x4ed8867f9947a5fe140c9dc1c6f207f3489f501e](🔗)
Column Title

The relationship between these contracts is outlined in the diagram below: