cctp.constants

Documentation for eth_defi.cctp.constants Python module.

Circle CCTP V2 constants.

Cross-Chain Transfer Protocol V2 deployment addresses and domain mappings.

CCTP enables burn-and-mint USDC transfers across chains:

  1. Source chain: call depositForBurn() on TokenMessengerV2 to burn USDC

  2. Circle’s Iris attestation service signs the burn event

  3. Destination chain: call receiveMessage() on MessageTransmitterV2 to mint USDC

The burnToken parameter is always the source chain’s native USDC address. On the destination chain, TokenMinterV2 uses a remoteTokensToLocalTokens mapping (managed by Circle’s TokenController) to resolve which local token to mint. The caller does not need to specify the destination USDC address.

All CCTP V2 contracts share the same address across all EVM chains (deployed via CREATE2).

Module Attributes

TOKEN_MESSENGER_V2

CCTP V2 TokenMessengerV2 - entry point for cross-chain USDC transfers.

MESSAGE_TRANSMITTER_V2

CCTP V2 MessageTransmitterV2 - handles message passing and attestation verification.

TOKEN_MINTER_V2

CCTP V2 TokenMinterV2 - executes burning/minting of USDC.

CCTP_DOMAIN_ETHEREUM

CCTP domain ID for Ethereum mainnet

CCTP_DOMAIN_ARBITRUM

CCTP domain ID for Arbitrum One

CCTP_DOMAIN_BASE

CCTP domain ID for Base

CCTP_DOMAIN_POLYGON

CCTP domain ID for Polygon PoS

CHAIN_ID_TO_CCTP_DOMAIN

Mapping from EVM chain ID to CCTP domain ID.

CCTP_DOMAIN_TO_CHAIN_ID

Reverse mapping from CCTP domain to EVM chain ID.

CCTP_DOMAIN_NAMES

Mapping from CCTP domain ID to human-readable chain name.

IRIS_API_BASE_URL

Circle Iris attestation API base URL (mainnet).

IRIS_API_SANDBOX_URL

Circle Iris attestation API base URL (testnet/sandbox).

FINALITY_THRESHOLD_STANDARD

Minimum finality threshold for standard (finalized) transfers.

FINALITY_THRESHOLD_FAST

Minimum finality threshold for fast (confirmed) transfers.

TESTNET_TOKEN_MESSENGER_V2

CCTP V2 TokenMessengerV2 on Sepolia testnets.

TESTNET_MESSAGE_TRANSMITTER_V2

CCTP V2 MessageTransmitterV2 on Sepolia testnets.

TESTNET_TOKEN_MINTER_V2

CCTP V2 TokenMinterV2 on Sepolia testnets.

TESTNET_CHAIN_IDS

Sepolia testnet chain IDs that use CCTP testnet contracts.

TESTNET_CHAIN_ID_TO_CCTP_DOMAIN

Sepolia chain IDs share the same CCTP domain IDs as their mainnet counterparts.

TOKEN_MESSENGER_V2: eth_typing.evm.HexAddress = '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d'

CCTP V2 TokenMessengerV2 - entry point for cross-chain USDC transfers. Same address on all EVM chains via CREATE2.

MESSAGE_TRANSMITTER_V2: eth_typing.evm.HexAddress = '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64'

CCTP V2 MessageTransmitterV2 - handles message passing and attestation verification. Same address on all EVM chains via CREATE2.

TOKEN_MINTER_V2: eth_typing.evm.HexAddress = '0xfd78EE919681417d192449715b2594ab58f5D002'

CCTP V2 TokenMinterV2 - executes burning/minting of USDC. Same address on all EVM chains via CREATE2.

CCTP_DOMAIN_ETHEREUM = 0

CCTP domain ID for Ethereum mainnet

CCTP_DOMAIN_ARBITRUM = 3

CCTP domain ID for Arbitrum One

CCTP_DOMAIN_BASE = 6

CCTP domain ID for Base

CCTP_DOMAIN_POLYGON = 7

CCTP domain ID for Polygon PoS

CHAIN_ID_TO_CCTP_DOMAIN: dict[int, int] = {1: 0, 137: 7, 8453: 6, 42161: 3}

Mapping from EVM chain ID to CCTP domain ID.

CCTP uses its own domain identifiers, not EVM chain IDs.

CCTP_DOMAIN_TO_CHAIN_ID: dict[int, int] = {0: 1, 3: 42161, 6: 8453, 7: 137}

Reverse mapping from CCTP domain to EVM chain ID.

CCTP_DOMAIN_NAMES: dict[int, str] = {0: 'Ethereum', 3: 'Arbitrum', 6: 'Base', 7: 'Polygon'}

Mapping from CCTP domain ID to human-readable chain name.

IRIS_API_BASE_URL = 'https://iris-api.circle.com'

Circle Iris attestation API base URL (mainnet).

IRIS_API_SANDBOX_URL = 'https://iris-api-sandbox.circle.com'

Circle Iris attestation API base URL (testnet/sandbox).

FINALITY_THRESHOLD_STANDARD = 2000

Minimum finality threshold for standard (finalized) transfers.

FINALITY_THRESHOLD_FAST = 1000

Minimum finality threshold for fast (confirmed) transfers. Uses lower block confirmation, may incur fees.

TESTNET_TOKEN_MESSENGER_V2: eth_typing.evm.HexAddress = '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA'

CCTP V2 TokenMessengerV2 on Sepolia testnets. Different from mainnet, but identical across all Sepolia chains via CREATE2.

TESTNET_MESSAGE_TRANSMITTER_V2: eth_typing.evm.HexAddress = '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275'

CCTP V2 MessageTransmitterV2 on Sepolia testnets.

TESTNET_TOKEN_MINTER_V2: eth_typing.evm.HexAddress = '0xb43db544E2c27092c107639Ad201b3dEfAbcF192'

CCTP V2 TokenMinterV2 on Sepolia testnets.

TESTNET_CHAIN_IDS: set[int] = {84532, 421614, 11155111}

Sepolia testnet chain IDs that use CCTP testnet contracts.

TESTNET_CHAIN_ID_TO_CCTP_DOMAIN: dict[int, int] = {84532: 6, 421614: 3, 11155111: 0}

Sepolia chain IDs share the same CCTP domain IDs as their mainnet counterparts.