1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
// SPDX-FileCopyrightText: 2025 Semiotic AI, Inc.
//
// SPDX-License-Identifier: Apache-2.0
//! Contract addresses for CCTP contracts across all supported chains
//!
//! This module centralizes all contract address constants for both `MessageTransmitter`
//! and `TokenMessenger` contracts across mainnet and testnet chains.
use ;
// MessageTransmitter Addresses
/// <https://arbiscan.io/address/0xC30362313FBBA5cf9163F0bb16a0e01f01a896ca>
pub const ARBITRUM_MESSAGE_TRANSMITTER_ADDRESS: Address =
address!;
/// <https://sepolia.arbiscan.io/address/0xacf1ceef35caac005e15888ddb8a3515c41b4872>
pub const ARBITRUM_SEPOLIA_MESSAGE_TRANSMITTER_ADDRESS: Address =
address!;
/// <https://snowtrace.io/address/0x8186359af5f57fbb40c6b14a588d2a59c0c29880>
pub const AVALANCHE_MESSAGE_TRANSMITTER_ADDRESS: Address =
address!;
/// <https://basescan.org/address/0xAD09780d193884d503182aD4588450C416D6F9D4>
pub const BASE_MESSAGE_TRANSMITTER_ADDRESS: Address =
address!;
/// <https://base-sepolia.blockscout.com/address/0x7865fAfC2db2093669d92c0F33AeEF291086BEFD>
pub const BASE_SEPOLIA_MESSAGE_TRANSMITTER_ADDRESS: Address =
address!;
/// <https://etherscan.io/address/0x0a992d191DEeC32aFe36203Ad87D7d289a738F81>
pub const ETHEREUM_MESSAGE_TRANSMITTER_ADDRESS: Address =
address!;
/// <https://sepolia.etherscan.io/address/0x7865fAfC2db2093669d92c0F33AeEF291086BEFD>
pub const ETHEREUM_SEPOLIA_MESSAGE_TRANSMITTER_ADDRESS: Address =
address!;
/// <https://optimistic.etherscan.io/address/0x4D41f22c5a0e5c74090899E5a8Fb597a8842b3e8>
pub const OPTIMISM_MESSAGE_TRANSMITTER_ADDRESS: Address =
address!;
/// <https://polygonscan.com/address/0x9daF8c91AEFAE50b9c0E69629D3F6Ca40cA3B3FE>
pub const POLYGON_CCTP_V1_MESSAGE_TRANSMITTER: Address =
address!;
/// <https://uniscan.xyz/address/0x353bE9E2E38AB1D19104534e4edC21c643Df86f4>
pub const UNICHAIN_CCTP_V1_MESSAGE_TRANSMITTER: Address =
address!;
// TokenMessenger Addresses
/// <https://developers.circle.com/stablecoins/evm-smart-contracts>
pub const ARBITRUM_TOKEN_MESSENGER_ADDRESS: Address =
address!;
/// <https://developers.circle.com/stablecoins/evm-smart-contracts>
pub const ARBITRUM_SEPOLIA_TOKEN_MESSENGER_ADDRESS: Address =
address!;
/// <https://developers.circle.com/stablecoins/evm-smart-contracts>
pub const AVALANCHE_TOKEN_MESSENGER_ADDRESS: Address =
address!;
/// <https://developers.circle.com/stablecoins/evm-smart-contracts>
pub const BASE_TOKEN_MESSENGER_ADDRESS: Address =
address!;
/// <https://developers.circle.com/stablecoins/evm-smart-contracts>
pub const BASE_SEPOLIA_TOKEN_MESSENGER_ADDRESS: Address =
address!;
/// <https://developers.circle.com/stablecoins/evm-smart-contracts>
pub const ETHEREUM_TOKEN_MESSENGER_ADDRESS: Address =
address!;
/// <https://developers.circle.com/stablecoins/evm-smart-contracts>
pub const ETHEREUM_SEPOLIA_TOKEN_MESSENGER_ADDRESS: Address =
address!;
/// <https://developers.circle.com/stablecoins/evm-smart-contracts>
pub const OPTIMISM_TOKEN_MESSENGER_ADDRESS: Address =
address!;
/// <https://developers.circle.com/stablecoins/evm-smart-contracts>
pub const POLYGON_CCTP_V1_TOKEN_MESSENGER: Address =
address!;
/// <https://uniscan.xyz/address/0x4e744b28E787c3aD0e810eD65A24461D4ac5a762>
pub const UNICHAIN_CCTP_V1_TOKEN_MESSENGER: Address =
address!;
// =============================================================================
// CCTP V2 Contract Addresses
// =============================================================================
//
// V2 uses unified contract addresses across all chains within each environment.
// This is a major improvement over V1, simplifying integration and reducing
// configuration complexity.
//
// Reference: <https://developers.circle.com/cctp/evm-smart-contracts>
/// CCTP V2 `MessageTransmitter` address (Mainnet)
///
/// Used across ALL v2 mainnet chains including:
/// - Linea (Domain 11)
/// - Sonic (Domain 13)
/// - And other v2-supported mainnets
///
/// <https://developers.circle.com/cctp/evm-smart-contracts>
pub const CCTP_V2_MESSAGE_TRANSMITTER_MAINNET: Address =
address!;
/// CCTP V2 `TokenMessenger` address (Mainnet)
///
/// Used across ALL v2 mainnet chains including:
/// - Linea (Domain 11)
/// - Sonic (Domain 13)
/// - And other v2-supported mainnets
///
/// <https://developers.circle.com/cctp/evm-smart-contracts>
pub const CCTP_V2_TOKEN_MESSENGER_MAINNET: Address =
address!;
/// CCTP V2 `MessageTransmitter` address (Testnet)
///
/// Used across ALL v2 testnet chains including:
/// - Linea Sepolia (Domain 11)
/// - Sonic Testnet (Domain 13)
/// - And other v2-supported testnets
///
/// <https://developers.circle.com/cctp/evm-smart-contracts>
pub const CCTP_V2_MESSAGE_TRANSMITTER_TESTNET: Address =
address!;
/// CCTP V2 `TokenMessenger` address (Testnet)
///
/// Used across ALL v2 testnet chains including:
/// - Linea Sepolia (Domain 11)
/// - Sonic Testnet (Domain 13)
/// - And other v2-supported testnets
///
/// <https://developers.circle.com/cctp/evm-smart-contracts>
pub const CCTP_V2_TOKEN_MESSENGER_TESTNET: Address =
address!;