Networks and swaps
which chains each app offers, and how to change them.
NFC Crypto covers seven EVM networks, Solana and Bitcoin. CryptoCard Wallet covers four EVM networks and Solana, and starts on test networks. All endpoints are set in the brand file of each app.
01NFC Crypto networks
| Network | Chain ID | Default explorer | Key-free swap router |
|---|---|---|---|
| Ethereum | 1 | etherscan.io | Uniswap V2 Router02 |
| Base | 8453 | basescan.org | Uniswap V2 Router02 (Base) |
| Arbitrum One | 42161 | arbiscan.io | Uniswap V2 Router02 (Arbitrum) |
| Optimism | 10 | optimistic.etherscan.io | None set; the app probes the common routers |
| Polygon | 137 | polygonscan.com | QuickSwap V2 |
| BNB Smart Chain | 56 | bscscan.com | PancakeSwap V2 |
| Avalanche | 43114 | snowtrace.io | Trader Joe V1 |
| Solana | — | solscan.io | Jupiter |
| Bitcoin | — | mempool.space | No swap source |
Users can add their own EVM networks in the app under Settings → Networks.
Every value comes from lib/brand/brand_config.dart: evmChainIds (which networks, in which order), evmNetworks (RPC URLs, explorer, router and wrapped coin per network), solanaRpcUrl with solanaFallbackRpcUrls, and bitcoinApiUrl with bitcoinFallbackApiUrls (an Esplora-compatible API).
02Add, remove or reorder networks
- Remove a network: delete its chain ID from
evmChainIds. - Reorder: change the order of
evmChainIds. The app shows them in that order. - Add a network: add its chain ID to
evmChainIdsand aBrandEvmNetworkentry toevmNetworkswith at least one HTTPS RPC URL and an explorer URL. A chain ID that the app's built-in chain catalog does not know is skipped, not invented (test/brand_config_test.dart). - Use your own RPC provider: put its URL first in
rpcUrls. The first URL is tried first; the others are fallbacks. - Check:
flutter test test/brand_config_test.dart.
The shipped URLs are free public endpoints. They are rate-limited and can be slow or down. Before you launch, use RPC URLs from a provider you have an account with. An RPC URL with an API key in it is compiled into the app, like the .env keys.
03Swaps
| Source | Networks | Needs |
|---|---|---|
| Jupiter | Solana | Nothing |
| Uniswap V2-style router, on chain | EVM networks with a router in evmNetworks | Nothing |
| 0x | EVM | ZEROX_API_KEY |
| 1inch | EVM | ONEINCH_API_KEY |
Slippage: swapDefaultSlippagePct sets the starting value (empty keeps 0.5 %), and swapMaxSlippagePct sets the highest value a user may pick (empty = no ceiling). When a card is required for payments, every swap is confirmed with the card. For the optional operator fee, see Swap fee.
04CryptoCard Wallet networks
ID in networkIds | Network | Type |
|---|---|---|
sepolia | Ethereum Sepolia | Test network (default) |
solana-devnet | Solana Devnet | Test network (default for Solana) |
ethereum | Ethereum | Main network |
base | Base | Main network |
polygon | Polygon | Main network |
bnb | BNB Chain | Main network |
solana | Solana | Main network |
CryptoCard sends and receives the native coin (ETH, POL, BNB, SOL). On Solana it shows SPL token balances (Token and Token-2022), read-only. It has no swaps. EVM addresses use the path m/44'/60'/0'/0/0 and Solana m/44'/501'/0'/0', so a phrase shows the same addresses as in MetaMask and Phantom.
Change networkIds and defaultNetworkId in lib/brand/brand_config.dart. Users can replace any RPC URL in the app's Settings (HTTPS only; the chain ID or Solana genesis hash is checked).
New installs start on Sepolia so nothing of value moves until the owner switches. Set defaultNetworkId to ethereum (or another main network) for a production build if you want that.
05Networks and spending limits
Spender card limits are set per network, in that network's coin: ETH, POL, BNB, AVAX, SOL or BTC. Tokens are never covered by a Spender limit. See Spending limits.