# ERC-7828: Chain-Specific Address Resolution

Source: https://www.eipsfordesigners.com/standards/ERC-7828
Agent brief: https://www.eipsfordesigners.com/standards/ERC-7828/agent.md
Machine-readable JSON: https://www.eipsfordesigners.com/api/standards/ERC-7828
Last reviewed: 2026-05-25
Last updated: 2026-05-25

| Field | Value |
| --- | --- |
| Status | Draft |
| Chain | both |
| Category | Cross-Chain |
| Journey stages | Authentication & Identity, Executing Transactions |
| Detailed guide | Yes |
| Official specification | https://eips.ethereum.org/EIPS/erc-7828 |
| Discussion search | https://ethereum-magicians.org/search?q=ERC-7828 |

## UX Impact

Chain-aware addresses route to the correct network automatically — no manual chain switching required when interacting. Design implications: resolve addresses to their target chain context, auto-switch or prompt for network change when interacting with chain-specific addresses, show chain indicator alongside resolved addresses. Design decisions: whether to auto-switch silently or confirm with users, how to display chain context in address fields, fallback behavior when target chain is not supported by wallet. High priority — 'Auto-switch networks on interaction — no manual chain switching.' Resolves the Manual Network Switching pain point.

## Summary

Chain-aware addresses route to the correct network automatically — no manual chain switching required when interacting.

## For Designers

- You can detect chain context when address is pasted and show Target network: Arbitrum chip.
- Your switch prompt can explain Switch to Arbitrum to continue with confirm, not silent hop.
- You can block send when current network mismatches with Switch network CTA.

## Applicability

### When to Use

- Multi-chain wallet or dApp.
- Addresses encode or map to specific chains.
- Wrong-chain sends are support burden.

### When to Avoid

- Single-chain product.
- Address format ambiguous without ERC-7828.
- User explicitly pinned to one network.

## Problems It Solves

### Wrong-chain sends lose funds

Impact: critical

Old way: Send USDC on Ethereum to Arbitrum address

New way: Detect chain and switch before send

### Manual network switching friction

Impact: high

Old way: User guesses chain from context

New way: Address resolution suggests target network

### dApp on wrong network empty state

Impact: medium

Old way: Broken UI with no explanation

New way: Switch network banner on mismatch

## Anti-Patterns

### Silent auto network switch

Severity: critical

User loses context; phishing vector

Instead: Confirm switch modal every time unless opted in

### Send enabled on wrong chain

Severity: critical

Funds stuck or lost

Instead: Block confirm until network matches

### No chain indicator on address field

Severity: high

User assumes current network is correct

Instead: Target chain chip after detection

## Design Decisions

### Auto-switch silent or prompt?

Recommendation: Always confirm switch unless user enabled auto in settings.

Rationale: Silent switch disorients and enables phishing.

### Chain chip in address field?

Recommendation: Yes after detection resolves.

Rationale: Constant context during compose.

### Fallback when detection fails?

Recommendation: Require manual chain pick before enable send.

Rationale: Better delay than wrong-chain loss.

## States to Design

### Chain detected — match

Trigger: Wallet already on target.

User need: Proceed smoothly.

Design response: Green chain chip; enable send.

### Chain detected — mismatch

Trigger: Wrong network active.

User need: Switch safely.

Design response: Banner plus Switch to [chain] CTA.

### Switch in progress

Trigger: User approved switch.

User need: Know wallet prompting.

Design response: Switching network… status.

### Unsupported chain

Trigger: Wallet lacks chain.

User need: Add network path.

Design response: Add [chain] to wallet flow.

### Detection failed

Trigger: Ambiguous address.

User need: Pick chain manually.

Design response: Select network dropdown required.

## Vocabulary

- Use "This address is on [chain]" instead of "Chain context resolved": Plain routing language.

- Use "Switch network" instead of "Change chainId": Wallet-familiar terms.

- Use "Add [chain] to wallet" instead of "Register network RPC": Setup action users know.

## What to Prototype First

### Paste address chain detect

Immediate feedback when address entered.

Covers: Detected chain, Ambiguous, Unsupported chain

- Chain chip on field
- Detecting spinner
- Unsupported message

### Network switch prompt

User must consent to network change.

Covers: Switch needed, User declines

- Switch to [chain] modal
- Reason copy
- Switch / Stay buttons

### Wrong network block

Prevent send on current chain when mismatch.

Covers: Blocked send

- Wrong network banner
- Switch CTA
- Disabled confirm until match

### Interaction deep link

Link opens app on correct chain.

Covers: Auto route, Wallet lacks chain

- Add network if missing
- Switch then continue

## Mental Model

### Chain-aware address

Address implies or maps to target network.

### Current network

Wallet active chain — must match for success.

### Resolution

App reads address → determines target chain.

### Switch prompt

User approves network change — not silent.

### Fallback

Unknown address → ask user to pick chain manually.

## Seen in the Wild

- Rainbow: Network switch prompts on chain mismatch. (https://rainbow.me/)

- MetaMask: Switch network when dApp requests different chain. (https://metamask.io/)

- Across: Cross-chain address context in bridge flows. (https://across.to/)

## On Monad

### Monad detection

Ethereum: New chains missing from resolution tables

Monad: Register Monad in resolution from launch

Design implication: Monad chip appears on Monad-native addresses immediately.

### Switch speed

Ethereum: Switch feels sluggish

Monad: Fast switch-to-confirm loop after user approves

Design implication: Inline switching status on Monad without long modal.

## UX Patterns

### Chain Detect on Paste

Resolve target chain when address entered.

Components: AddressInput, ChainChip, DetectSpinner

User flow:

- Paste address
- Chain detected
- Chip shows
- Switch if needed

Mockup registry key: `concept/bridge` (React UI on the live standard page).

### Switch Network Prompt

Confirm before changing active chain.

Components: SwitchModal, ChainIcon, ConfirmSwitch

User flow:

- Mismatch detected
- Modal appears
- User confirms
- Wallet switches

Mockup registry key: `concept/verify-safety` (React UI on the live standard page).

## Related Standards

- ERC-7930: Chain-encoded address format

- EIP-695: Chain ID standard complement

## Technical Notes

ERC-7828 is draft High priority; never enable send on chain mismatch without user-confirmed switch.
