> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Contract addresses

> Arc Testnet contract addresses for USDC, EURC, USYC, CCTP, Gateway, StableFX, transaction extensions (Memo, Multicall3From), and common Ethereum contracts (CREATE2, Multicall3, Permit2).

<Note>
  All addresses on this page are for **Arc Testnet**. Mainnet addresses are not
  yet available.
</Note>

## Stablecoins

Stablecoins are the foundation of the Arc ecosystem, supporting a growing set of
fiat-backed and yield-bearing tokens. These assets provide price stability,
onchain yield, and multi-currency support for payments, FX, and financial
applications. The ERC-20 functions affect native balance movements.

### USDC

USDC is the native EVM asset on Arc and is used for gas fees. An optional ERC-20
interface is also available for developers who need features such as
`transferFrom`, `approve`, and allowance management. See
[Stablecoin native model](/arc/concepts/stablecoin-native-model) for details on
how the native and ERC-20 interfaces share the same underlying balance.

| Contract | Address                                                                                                                        | Notes                                                                                    |
| :------- | :----------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- |
| **USDC** | [`0x3600000000000000000000000000000000000000`](https://testnet.arcscan.app/address/0x3600000000000000000000000000000000000000) | Optional ERC-20 interface for interacting with the native USDC balance. Uses 6 decimals. |

<Info>
  **Getting testnet USDC:** You can request USDC on Arc Testnet from the
  [Circle Faucet](https://faucet.circle.com/). USDC is required to pay for gas and
  interact with contracts on Arc.

  **Note:** As with any ERC-20 token, always use the `decimals()` function to
  interpret balances and transfer amounts accurately. On Arc, the **native USDC
  gas token** uses 18 decimals of precision, while the **USDC ERC-20 interface**
  uses 6 decimals. Avoid mixing these values directly, as doing so may result in
  incorrect balance handling. For applications integrating USDC, it's recommended
  to rely solely on the standard ERC-20 interface for reading balances and sending
  transfers.
</Info>

### EURC

EURC is the euro-denominated stablecoin issued by Circle and supported natively
on Arc for use in payments, FX, and other financial applications.

| Contract | Address                                                                                                                        | Notes                                      |
| :------- | :----------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------- |
| **EURC** | [`0x89B50855Aa3bE2F677cD6303Cec089B5F319D72a`](https://testnet.arcscan.app/address/0x89B50855Aa3bE2F677cD6303Cec089B5F319D72a) | Main EURC token contract. Uses 6 decimals. |

<Info>
  **Getting testnet EURC:** Testnet EURC can be requested from the [Circle
  Faucet](https://faucet.circle.com/). Select **Arc Testnet** as the network and
  **EURC** as the token to receive a small test allocation.
</Info>

### USYC

[USYC](https://developers.circle.com/tokenized/usyc/overview) is a yield-bearing
token issued by Circle International Bermuda Ltd. and supported on Arc for
institutional and DeFi use cases. It represents shares of a tokenized money
market fund backed by short-duration U.S. Treasury securities, offering onchain
access to regulated, low-risk yield.

<Note>
  USYC is only accessible to institutions outside the United States, subject to
  eligibility restrictions and a \$100,000 USD minimum investment. See
  [USYC Document Certification Requirements](https://help.circle.com/s/article/Document-certification-requirements-for-USYC-onboarding?language=en_US\&category=USYC)
  for more information.
</Note>

| Contract         | Address                                                                                                                        | Notes                                                                                              |
| :--------------- | :----------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- |
| **USYC**         | [`0xe9185F0c5F296Ed1797AaE4238D26CCaBEadb86C`](https://testnet.arcscan.app/address/0xe9185F0c5F296Ed1797AaE4238D26CCaBEadb86C) | The main USYC token contract representing tokenized money market fund shares. Uses 6 decimals.     |
| **Entitlements** | [`0xcc205224862c7641930c87679e98999d23c26113`](https://testnet.arcscan.app/address/0xcc205224862c7641930c87679e98999d23c26113) | Manages allowlisted access and entitlement controls for permissioned addresses on the Arc Testnet. |
| **Teller**       | [`0x9fdF14c5B14173D74C08Af27AebFf39240dC105A`](https://testnet.arcscan.app/address/0x9fdF14c5B14173D74C08Af27AebFf39240dC105A) | Contract used to mint and redeem testnet USYC from testnet USDC once your wallet is allowlisted.   |

<Info>
  **Getting testnet USYC:**

  1. Obtain testnet USDC from the [Circle Faucet](https://faucet.circle.com/).
  2. Request allowlisting by opening a ticket with
     [Circle Support](https://support.circle.com/) and include your Arc Testnet
     wallet address. Requests are typically processed in 24–48 hours.
  3. Once approved, call the USYC Teller contract or interact with the
     [USYC Portal](https://usyc.dev.hashnote.com/) to deposit testnet USDC and
     receive testnet USYC.

  For more information on issuance, redemption, and eligibility, see
  [USYC Overview](https://developers.circle.com/tokenized/usyc/overview).
</Info>

## Crosschain

The contracts below enable crosschain interoperability between Arc and other
blockchains through Circle's
[Cross-Chain Transfer Protocol](https://developers.circle.com/cctp) (CCTP) and
[Gateway](https://developers.circle.com/gateway). CCTP handles crosschain
message passing and stablecoin transfers, while Gateway provides
chain-abstracted USDC balances for seamless liquidity movement.

### CCTP

| Contract                 | Domain | Address                                                                                                                        |
| :----------------------- | :----- | :----------------------------------------------------------------------------------------------------------------------------- |
| **TokenMessengerV2**     | 26     | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://testnet.arcscan.app/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA) |
| **MessageTransmitterV2** | 26     | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://testnet.arcscan.app/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275) |
| **TokenMinterV2**        | 26     | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://testnet.arcscan.app/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192) |
| **MessageV2**            | 26     | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://testnet.arcscan.app/address/0xbaC0179bB358A8936169a63408C8481D582390C4) |

### Gateway

| Contract          | Domain | Address                                                                                                                        |
| :---------------- | :----- | :----------------------------------------------------------------------------------------------------------------------------- |
| **GatewayWallet** | 26     | [`0x0077777d7EBA4688BDeF3E311b846F25870A19B9`](https://testnet.arcscan.app/address/0x0077777d7EBA4688BDeF3E311b846F25870A19B9) |
| **GatewayMinter** | 26     | [`0x0022222ABE238Cc2C7Bb1f21003F0a260052475B`](https://testnet.arcscan.app/address/0x0022222ABE238Cc2C7Bb1f21003F0a260052475B) |

## Payments and settlement

Arc provides payment and settlement contracts that enable foreign exchange and
onchain settlement workflows using stablecoins. These components support
application-level use cases such as FX execution and escrow-based settlement.

### StableFX

[StableFX](https://developers.circle.com/stablefx) is an enterprise-grade
stablecoin FX engine that combines Request-for-Quote (RFQ) execution with
onchain settlement on Arc. The following is the address for the escrow contract
used to settle stablecoin swaps.

| Contract     | Address                                                                                                                        | Notes                                                                          |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
| **FxEscrow** | [`0x867650F5eAe8df91445971f14d89fd84F0C9a9f8`](https://testnet.arcscan.app/address/0x867650F5eAe8df91445971f14d89fd84F0C9a9f8) | The escrow contract used by both makers and takers to settle stablecoin swaps. |

<Info>
  Before executing FX trades, StableFX must be able to transfer USDC from your
  wallet. To enable this, you need to grant a USDC allowance to the Permit2
  contract. See the Common Ethereum contracts section for the Permit2 address.
</Info>

## Transaction extensions

Arc provides predeployed contracts for attaching memos to transactions and
batching calls with sender preservation. Both contracts route subcalls through
the CallFrom precompile, which preserves the original `msg.sender` in each
subcall.

| Contract           | Address                                                                                                                        | Notes                                                                                            |
| :----------------- | :----------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------- |
| **Memo**           | [`0x5294E9927c3306DcBaDb03fe70b92e01cCede505`](https://testnet.arcscan.app/address/0x5294E9927c3306DcBaDb03fe70b92e01cCede505) | Attaches memo metadata to contract calls. Emits `Memo` events with a sequential index.           |
| **Multicall3From** | [`0x522fAf9A91c41c443c66765030741e4AaCe147D0`](https://testnet.arcscan.app/address/0x522fAf9A91c41c443c66765030741e4AaCe147D0) | Batches multiple calls like Multicall3, but preserves the original `msg.sender` in each subcall. |

<Warning>
  **Offchain blocklist operators:** If you maintain an offchain blocklist or
  compliance screening system, you must include the Memo and Multicall3From
  contract addresses. These contracts preserve `msg.sender` through the CallFrom
  precompile, meaning the original caller's address appears as the sender in
  subcalls. Your monitoring should account for transactions routed through these
  contracts to ensure blocklist enforcement is not bypassed.
</Warning>

## Common Ethereum contracts

Arc Testnet includes a set of widely used Ethereum ecosystem contracts for
deterministic deployment, batched reads, and standardized token approvals.
Although not Circle-managed, these contracts are deployed on Arc to ensure
compatibility with common EVM tooling and workflows.

| Contract                       | Address                                                                                                                        | Notes                                                                           |
| :----------------------------- | :----------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------ |
| **CREATE2 Factory (Arachnid)** | [`0x4e59b44847b379578588920cA78FbF26c0B4956C`](https://testnet.arcscan.app/address/0x4e59b44847b379578588920cA78FbF26c0B4956C) | Minimal proxy for deterministic contract deployment using the `CREATE2` opcode. |
| **Multicall3**                 | [`0xcA11bde05977b3631167028862bE2a173976CA11`](https://testnet.arcscan.app/address/0xcA11bde05977b3631167028862bE2a173976CA11) | Aggregates multiple read calls into a single call for efficient data retrieval. |
| **Permit2**                    | [`0x000000000022D473030F116dDEE9F6B43aC78BA3`](https://testnet.arcscan.app/address/0x000000000022D473030F116dDEE9F6B43aC78BA3) | Universal contract for signature-based token approvals. Required for StableFX.  |

## Test addresses for restricted transfer behavior

To help you exercise the value transfer revert paths described in
[EVM differences](/arc/references/evm-differences#value-transfer-rules), Arc
Testnet seeds a well-known blocklisted address derived from the standard test
mnemonic `test test test test test test test test test test test junk`. Because
the mnemonic is public, you can derive its private key locally and sign as the
address, for example with Foundry:

```bash theme={null}
cast wallet private-key --mnemonic "test test test test test test test test test test test junk" --mnemonic-index 1
```

| Purpose         | Mnemonic index | Address                                                                                                                        | Behavior                                                                                                                        |
| :-------------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |
| **Blocklisted** | 1              | [`0x70997970C51812dc3A010C7d01b50e0d17dc79C8`](https://testnet.arcscan.app/address/0x70997970C51812dc3A010C7d01b50e0d17dc79C8) | A value transfer to or from this address reverts at runtime, including when the address is the beneficiary of a `SELFDESTRUCT`. |

Use this address to confirm your contract handles a runtime revert on a value
transfer (including as a `SELFDESTRUCT` beneficiary). See
[EVM differences](/arc/references/evm-differences#value-transfer-rules) for the
full set of rules.
