Skip to content

Document Arc native token handling - #286

Merged
jlin27 merged 9 commits into
mainfrom
jessica/arc-native-tokens
Sep 16, 2026
Merged

jlin27 merged 9 commits into
mainfrom
jessica/arc-native-tokens

Conversation

@jlin27

@jlin27 jlin27 commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds an Arc section to the Handle Native Tokens guide, ahead of Arc support shipping Thursday.

On Arc, USDC is both the native gas token (18 decimals, 0xEeee…) and an enshrined ERC-20 (0x3600000000000000000000000000000000000000, 6 decimals). The two share a single balance. The Swap API returns amounts in the base units of whichever identity was requested and does no conversion, so an integrator that assumes the wrong one misprices by 10^12.

Changes

  • #### Arc Exception under Notes on Native Token Representation, pointing to the full section.
  • ## Arc: USDC as the native gas token:
    • Comparison table of the two identities (address, decimals, transfer mechanism, allowance).
    • Warning about the 10^12 decimals mismatch.
    • Four integration steps: pick one identity per request, read decimals from the address sent, apply native-token rules only to the native identity, set maxFeePerGas to at least 20 gwei.
    • Note that there is no wrap/unwrap step, since no wrapped-native contract exists.
    • Wallet and analytics notes: show one USDC balance, expect duplicate transfer logs, avoid SELFDESTRUCT patterns.

Notes for reviewers

  • Values verified against docs.arc.io (stablecoin-native model, gas and fees, connect to Arc) rather than only internal threads.
  • No chain ID added and supported-chains.mdx untouched: Arc docs currently publish only the testnet ID (5042002). Happy to add the rows once the mainnet ID is confirmed.
  • Deliberately left out the solver-side routing caveat (UniV4 native pools vs UniV3 ERC-20 pools), since our external position is that the dual representation is abstracted from partners. Say the word if it should be documented.

Arc uses USDC as both its native gas token and an enshrined ERC-20 at
0x3600000000000000000000000000000000000000. The two identities share one
balance but differ in decimals (18 vs 6), so integrators that mix them
misprice swaps by 10^12.

Adds a section covering the two identities, the decimals footgun, the
20 gwei maxFeePerGas floor, the absence of a wrapped-native token, and
wallet/indexer notes (single balance row, duplicate transfer logs,
SELFDESTRUCT restrictions).
@github-actions

github-actions Bot commented Sep 14, 2026

Copy link
Copy Markdown

Mantle was buried as a subsection of the representation notes and the Arc
material had grown into the largest part of the page. Both now live on a
Chain-Specific Native Tokens page, leaving the main guide as a single
straight-through path: overview, steps, code example, ETH/WETH wrapping.
@jlin27
jlin27 requested a review from duncancmt September 16, 2026 01:42
@jlin27
jlin27 merged commit 0de49eb into main Sep 16, 2026
3 checks passed
@jlin27
jlin27 deleted the jessica/arc-native-tokens branch September 16, 2026 15:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants