Chain-Specific Native Tokens
Chain-Specific Native Tokens
Most chains we support represent their native token with the placeholder address 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE, and the flow described in Handle Native Tokens applies without changes. This page covers the two chains that behave differently.
Mantle: MNT has a contract address
Mantle’s native token, MNT, does not follow this convention. On the Mantle EVM chain, MNT has a designated contract address: 0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000.
This address applies only to the native MNT token on Mantle and should not be used for wrapped or bridged versions on other networks. Refer to the linked guide for additional differences between Ethereum and Mantle.
Arc: USDC is the native gas token
USDC plays two roles on Arc at once. It is the native gas token, and it is also an ERC-20 token that the chain has built in at a fixed address. There is no wrapped-native token, and Circle does not plan to deploy one, so the ETH/WETH wrapping pattern does not apply. Refer to Arc’s own guide for the full details of USDC as the native gas token.
The two interfaces of USDC
Both interfaces are backed by a single balance. Sending native USDC and transferring ERC-20 USDC move the same money, and the two forms are entangled at the protocol level: an ERC-20 transfer also emits a native transfer.
What this means for your integration
Native USDC and ERC-20 USDC differ in scale by a factor of 10^12. One whole USDC ($1.00) is 1000000 in ERC-20 base units and 1000000000000000000 in native base units. Mixing the two misprices a swap by a factor of one trillion.
The Swap API returns amounts in the base units of whichever interface you requested, and performs no conversion between them. Follow these rules:
Pick one interface per request
Use 0x3600000000000000000000000000000000000000 if you want to work in 6
decimals, or 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE if you want to
work in 18 decimals. Do not mix the two within a single quote.
Read decimals from the interface you sent, not from the symbol
sellAmount, buyAmount, minBuyAmount and fee amounts are all
denominated in the base units of the address you passed. Balance checks,
allowance logic and any USD display must use the same decimals.
Apply the usual native-token rules only to the native interface
If you requested the ERC-20 interface, the standard ERC-20 flow applies,
including an allowance. If you requested the native interface, skip the
approval and set transaction.value, as described in Handle Native
Tokens.
There is no wrap or unwrap step to build on Arc. A quote between the native and ERC-20 interfaces of USDC is not a supported swap; move between them by using the interface you need, since they share one balance.
Notes for wallets and analytics
- Show one USDC balance. Displaying gas balance and USDC balance as separate rows suggests a user holds two assets when they hold one.
- Expect duplicate transfer logs on ERC-20 moves only. Moving USDC through the ERC-20 interface emits both a native transfer and an ERC-20
Transferevent, so indexers that count both will double-count USDC volume. Moving it through the native interface emits a single log. - Avoid
SELFDESTRUCTpatterns. Arc forbids burning USDC, so a self-destructed account cannot receive value-bearing calls. Contracts that rely onSELFDESTRUCTcan revert in ways that are hard for users to interpret.