# Networks and tokens

> The chains and assets NERO 402's reference implementation supports.

The `aa-native` scheme is chain-agnostic by design. Any network with an ERC-4337 stack (`EntryPoint`, bundler, paymaster) can host a settlement contract and serve x402 payments. The reference implementation currently targets two networks.

## NERO Chain mainnet

| Property | Value |
|---|---|
| CAIP-2 | `eip155:1689` |
| Chain ID | `1689` |
| RPC URL | `https://rpc.nerochain.io` |
| Bundler RPC | `https://bundler-mainnet.nerochain.io` |
| Paymaster RPC | `https://paymaster-mainnet.nerochain.io` |
| EntryPoint | `0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789` (v0.6) |
| SimpleAccountFactory | `0x9406Cc6185a346906296840746125a0E44976454` |
| `SettlementContract` (proxy) | `0x5eCfc64f2339992668f555918674B604F97B412D` |
| Explorer | https://neroscan.io |

### Mainnet allowlisted assets

| Symbol | Address | Decimals | EIP-3009? |
|---|---|---|---|
| USDC.e | `0x97eec1c29f745dc7c267f90292aa663d997a601d` | 6 | ✓ |
| USDC.arb | `0x8712796136Ac8e0EEeC123251ef93702f265aa80` | 6 | ✓ |
| USDT | `0xff13a7a12fd485bc9687ff88d8ae1a6b655ab469` | 6 | ✗ |

## NERO Chain testnet

| Property | Value |
|---|---|
| CAIP-2 | `eip155:689` |
| Chain ID | `689` |
| RPC URL | `https://rpc-testnet.nerochain.io` |
| Bundler RPC | `https://bundler-testnet.nerochain.io` |
| Paymaster RPC | `https://paymaster-testnet.nerochain.io` |
| EntryPoint | `0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789` (v0.6) |
| SimpleAccountFactory | `0x9406Cc6185a346906296840746125a0E44976454` |
| `SettlementContract` (proxy) | `0x925dbba44570683ac8da99be08bc5ece8cf5a8c6` |
| Faucet | https://app.testnet.nerochain.io/faucet |
| Explorer | https://testnet.neroscan.io |

### Testnet allowlisted asset

| Symbol | Address | Decimals | Notes |
|---|---|---|---|
| DEMO-USDT | `0x9a2eabdecda3eae051bca75fbe71a3dbdb35f9d4` | 6 | Public `mint(address, uint256)` for self-faucet |

DEMO-USDT exposes a public `mint()` so any agent can self-faucet without a centralized drip. The `examples/learn-nero/` script auto-mints on first run if the SCW balance is below the call cost, gas-sponsored.

## EntryPoint version

NERO mainnet uses ERC-4337 v0.6, confirmed via `eth_supportedEntryPoints` on the bundler. `paymasterAndData` is a single `bytes` value, not the split form introduced in v0.7. The SDK targets v0.6; agents using a v0.7-shaped `UserOperation` will be rejected at verification with `invalid_inner_payload`.

## Adding a network

Adding a new chain requires:

1. An ERC-4337 deployment on the chain (EntryPoint, bundler, paymaster).
2. A fresh `SettlementContract` deployment with the chain's allowlisted assets.
3. The facilitator's configuration extended with the new network's RPCs and contract address.

The wire format treats the network identifier as opaque (CAIP-2). A facilitator handling multiple networks tracks one contract address per network.

## Adding a token

Tokens are added to the settlement contract's allowlist by the contract's owner. The current owner is multisig-controlled; a new asset listing involves a multisig transaction calling `setTokenAllowed(token, true)`.

For testing, deploy a new token on testnet, give it a public `mint()`, and add it to the testnet contract's allowlist. The reference DEMO-USDT is the canonical example.
