# Supported chains and per-chain rules

AIPAY talks to public blockchains directly. This page lists every chain AIPAY supports today, what works on each, and the mistakes that can cost you funds.

## Chain list

| Chain | Chain ID | Native coin | Tokens | Status |
|---|---|---|---|---|
| Ethereum | `eip155:1` | ETH | USDT, USDC, DAI | Available |
| BNB Chain | `eip155:56` | BNB | USDT, USDC, BUSD | Available |
| Polygon | `eip155:137` | POL | USDT, USDC | Available |
| Arbitrum One | `eip155:42161` | ETH | USDT, USDC, ARB | Available |
| Optimism | `eip155:10` | ETH | USDT, USDC, OP | Available |
| Avalanche C-Chain | `eip155:43114` | AVAX | USDT, USDC | Available |
| Base | `eip155:8453` | ETH | USDC | Available |
| Solana | `solana-mainnet` | SOL | USDT, USDC | Available |
| MSG (MSGChain) | — | MSG | — | **Not enabled** |

The only chain intentionally missing from the app is MSG: `public/msg-config.json` ships with `enabled: false`, and MSG is excluded from the chain list until MSGChain mainnet parameters are configured. Everything above it is live mainnet.

Test networks (Sepolia, Solana Devnet) exist in the code for development but are not part of the released mainnet app.

## The five rules that prevent lost funds

### 1. Same `0x` address, different balances — per chain

Because all EVM chains share one derivation path, your Ethereum address is also your Base, Polygon, Arbitrum, Optimism, BNB Chain and Avalanche address.

- This is convenient, but **assets are not shared**. Your USDC on Base and your USDC on Ethereum are two different balances.
- The **Receive** page lets you pick a chain; the address stays the same but the network you tell the sender matters.

### 2. The network must match — always

Only send an asset **on the chain the receiving wallet expects**.

- Sending ETH on Base to an address that only supports Ethereum Mainnet does not deliver ETH to that wallet's Ethereum balance.
- Many exchanges, exchanges' deposit pages and other wallets do **not** auto-migrate cross-chain deposits. If they do not support the network you used, the funds may be unrecoverable.
- **Rule of thumb:** when paying someone, use the chain *they* asked for. When using an exchange deposit address, use the exact network the exchange lists.

### 3. Solana is a different world

- Your Solana address (base58, ed25519) is **not** usable on any EVM chain, and your `0x...` address is not usable on Solana. Sending across the boundary loses funds.
- Solana tokens are SPL tokens, not ERC-20. The IDs are different even for "the same" USDC/USDT.
- Solana transaction fees are paid in SOL; EVM fees are paid in that chain's native coin (ETH, BNB, POL, AVAX).

### 4. You need the native coin for gas

Every transfer costs a small fee paid in the **native** coin of that chain:

- To move USDC on Base you need a little **ETH** on Base.
- To move USDT on Polygon you need a little **POL**.
- To move anything on Solana you need a little **SOL**.

A wallet with tokens but no native coin cannot transact. The Send page estimates the fee in advance and refuses to build a payment you cannot afford.

### 5. Confirmations take time — and differ by chain

AIPAY checks pending payments against each chain's expected finality:

| Chain | Confirmations used for confirmation |
|---|---|
| Ethereum | 12 |
| BNB Chain | 15 |
| Polygon | 30 |
| Arbitrum One | 1 |
| Optimism | 1 |
| Avalanche C-Chain | 1 |
| Base | 1 |
| Solana | Slot-based |

A payment is shown as **confirmed** only after the chain reaches the expected depth, so a merchant may see a short wait on Ethereum or Polygon and a nearly instant one on a Layer 2.

Always verify by transaction hash when the amount is significant — AIPAY links out to the chain's block explorer (Etherscan, BscScan, Polygonscan, Arbiscan, Optimistic Etherscan, Snowtrace, BaseScan, Solana Explorer).

## Where the data comes from

AIPAY reads chain data from public RPC endpoints, with failover between providers:

- No AIPAY-run node and no AIPAY API. If every public RPC for a chain is unreachable, balances for that chain can temporarily fail to load; your funds are unaffected.
- Transaction status is re-checked from the chain itself, so confirmation does not depend on AIPAY staying online.
- Because everything is client-side, your IP address is visible to the RPC providers you query, exactly as in any wallet using public endpoints.

## What is not enabled

- **MSG (MSGChain):** adapter ready, disabled. No MSG address, balance or payment appears in the app.
- **Fiat on-ramp (`/buy`):** disabled — you cannot buy crypto with a card inside AIPAY yet.
- **EVM token swaps:** disabled — use Solana swaps on the `/swap` page if you need a swap today.
- **NFT gallery:** disabled.

See [../llms.txt](../llms.txt) for the authoritative status list.
