Protocol Contracts
Learn about the two primary CCTP contracts on each chain and see the role played by each.
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 |
---|---|---|
Ethereum | 0 | 0xbd3fa81b58ba92a82136038b25adec7066af3155 |
Avalanche | 1 | 0x6b25532e1060ce10cc3b0a99e5683b91bfde6982 |
OP Mainnet | 2 | 0x2B4069517957735bE00ceE0fadAE88a26365528f |
Arbitrum | 3 | 0x19330d10D9Cc8751218eaf51E8885D058642E08A |
MessageTransmitter: Mainnet
Chain | Domain | Address |
---|---|---|
Ethereum | 0 | 0x0a992d191deec32afe36203ad87d7d289a738f81 |
Avalanche | 1 | 0x8186359af5f57fbb40c6b14a588d2a59c0c29880 |
OP Mainnet | 2 | 0x4d41f22c5a0e5c74090899e5a8fb597a8842b3e8 |
Arbitrum | 3 | 0xC30362313FBBA5cf9163F0bb16a0e01f01A896ca |
TokenMinter: Mainnet
Chain | Domain | Address |
---|---|---|
Ethereum | 0 | 0xc4922d64a24675e16e1586e3e3aa56c06fabe907 |
Avalanche | 1 | 0x420f5035fd5dc62a167e7e7f08b604335ae272b8 |
OP Mainnet | 2 | 0x33E76C5C31cb928dc6FE6487AB3b2C0769B1A1e3 |
Arbitrum | 3 | 0xE7Ed1fa7f45D05C508232aa32649D89b73b8bA48 |
Testnet contract addresses
TokenMessenger: Testnet
Chain | Domain | Address |
---|---|---|
Ethereum Goerli | 0 | 0xd0c3da58f55358142b8d3e06c1c30c5c6114efe8 |
Avalanche | 1 | 0xeb08f243e5d3fcff26a9e38ae5520a669f4019d0 |
OP Goerli | 2 | 0x23a04d5935ed8bc8e3eb78db3541f0abfb001c6e |
Arbitrum Goerli | 3 | 0x12dcfd3fe2e9eac2859fd1ed86d2ab8c5a2f9352 |
MessageTransmitter: Testnet
Chain | Domain | Address |
---|---|---|
Ethereum Goerli | 0 | 0x26413e8157cd32011e726065a5462e97dd4d03d9 |
Avalanche | 1 | 0xa9fb1b3009dcb79e2fe346c16a604b8fa8ae0a79 |
OP Goerli | 2 | 0x9ff9a4da6f2157a9c82ce756f8fd7e0d75be8895 |
Arbitrum Goerli | 3 | 0x109bc137cb64eab7c0b1dddd1edf341467dc2d35 |
TokenMinter: Testnet
Chain | Domain | Address |
---|---|---|
Ethereum Goerli | 0 | 0xca6b4c00831ffb77afe22e734a6101b268b7fcbe |
Avalanche | 1 | 0x4ed8867f9947a5fe140c9dc1c6f207f3489f501e |
OP Goerli | 2 | 0x162580c71df51638df454e9ad75f11d184ff867b |
Arbitrum Goerli | 3 | 0xe997d7d2f6e065a9a93fa2175e878fb9081f1f0a |
The relationship between these contracts is outlined in the diagram below:
Updated 23 days ago
What’s Next