# Agent instructions

You are advising on UX and product design for **EIP-695: eth_chainId Method**.
This document is the authoritative designer guide from EIPs for Designers.

- Treat **MUST NOT** items as hard constraints unless the user explicitly overrides.
- Use the **Vocabulary** section for UI copy; do not use avoided terms.
- Cite the canonical source URL when giving recommendations.
- Use the official specification only for protocol implementation detail, not as primary UX guidance.

---

# EIP-695: eth_chainId Method

Source: https://www.eipsfordesigners.com/standards/EIP-695
Agent brief: https://www.eipsfordesigners.com/standards/EIP-695/agent.md
Machine-readable JSON: https://www.eipsfordesigners.com/api/standards/EIP-695
Last reviewed: 2026-04-05
Last updated: 2026-04-05

| Field | Value |
| --- | --- |
| Status | Final |
| Chain | both |
| Category | Comprehension & Display |
| Journey stages | Discovery & Connection, Status & Confirmation |
| Detailed guide | Yes |
| Official specification | https://eips.ethereum.org/EIPS/eip-695 |
| Discussion search | https://ethereum-magicians.org/search?q=EIP-695 |

## UX Impact

Wallets reliably detect which chain they're connected to — prevents transaction replay attacks across chains. Design implications: display current chain prominently in UI, show chain ID in network selector, validate chain consistency before transactions, alert users to chain mismatches. Design decisions: how to handle unknown chain IDs, whether to auto-switch chains or require manual confirmation, prominence of chain indicator (always visible vs on-demand).

## Summary

EIP-695 introduced the eth_chainId RPC method, giving dApps a reliable way to ask "which network am I connected to?" Before this, apps had to use net_version which was inconsistent and confusing. Now wallets can clearly tell users "Connected to Ethereum Mainnet (Chain ID: 1)" and apps can verify they're on the right network.

## For Designers

- You can design UI that delivers eth_chainId returns the actual chain ID used in signatures.
- You can design UI that delivers direct query: "What chain ID is this?".
- You can all wallets use standardized chain ID in the interface.

## Applicability

### When to Use

- Your product addresses: no reliable way to identify the network.
- Your product addresses: apps couldn't verify correct network connection.
- The flow should deliver: eth_chainId returns the actual chain ID used in signatures.
- Connect flows must list wallets with names, icons, and explicit user choice.

### When to Avoid

- Always call eth_chainId after wallet connection.
- Show both name AND chain ID for verification.
- Always use eth_chainId for network identification.
- Users never see addresses, amounts, or signing payloads in your UI.

## Problems It Solves

### No reliable way to identify the network

Impact: critical

Old way: net_version returned network ID which differed from chain ID

New way: eth_chainId returns the actual chain ID used in signatures

### Apps couldn't verify correct network connection

Impact: high

Old way: Guess based on other RPC calls, often wrong

New way: Direct query: "What chain ID is this?"

### Wallet network display was inconsistent

Impact: high

Old way: Different wallets showed different identifiers

New way: All wallets use standardized chain ID

### Wrong network transactions were common

Impact: medium

Old way: User thinks they're on mainnet, actually on testnet

New way: Apps verify chain ID before any transaction

## MUST NOT (Anti-Patterns)

- **Not verifying chain ID after connection** (critical)
  - Why: User might connect on wrong network, lose funds or get errors
  - Instead: Always call eth_chainId after wallet connection

- **Only showing network name without chain ID** (high)
  - Why: Malicious RPCs could claim to be mainnet
  - Instead: Show both name AND chain ID for verification

- **Using net_version instead of eth_chainId** (high)
  - Why: net_version can differ from chain ID used in signatures
  - Instead: Always use eth_chainId for network identification

- **Silently failing on wrong network** (medium)
  - Why: User doesn't know why app isn't working
  - Instead: Clear "Please switch to [Network]" message with action button

## UX Patterns

### Network Connection Status

Show current network with chain ID verification

User flow:

- User connects wallet
- App calls eth_chainId
- Network name + chain ID displayed
- Verification badge shows match
- User confident they're on correct network

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

### Network Verification Gate

Block actions until correct network confirmed

User flow:

- App requires specific chain ID
- User connected to different chain
- Clear comparison shown
- One-click switch option
- App unblocks after switch

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

### Network Selector Dropdown

Easy network switching with chain IDs visible

User flow:

- User clicks network selector
- All available networks shown
- Chain ID visible for each
- Click to switch
- Wallet handles the switch

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

## UI Components

### ChainIdDisplay

Shows chain ID with optional verification
States: verified, unverified, mismatch
Props: chainId, chainName, showVerification

### NetworkSelector

Dropdown for switching networks
States: idle, open, switching
Props: networks[], currentChainId, onSelect

### NetworkGate

Blocks UI until correct network selected
States: blocked, switching, unblocked
Props: requiredChainId, currentChainId, onSwitch

## On Monad

### Monad Chain ID

Ethereum: Mainnet = 1, various L2s have different IDs

Monad: Monad has its own unique chain ID

Design implication: Add Monad to network selectors with proper chain ID

### Network Discovery

Ethereum: Popular networks are well-known

Monad: May need "Add Monad" helper for new users

Design implication: Provide easy one-click "Add Monad Network" button

### Multi-Chain Users

Ethereum: Users often switch between L1 and L2s

Monad: Users may switch between Ethereum and Monad frequently

Design implication: Make network switching prominent and easy

## Related Standards

- EIP-155: EIP-155 introduced chain ID in signatures, EIP-695 provides the query method — https://www.eipsfordesigners.com/standards/EIP-155/agent.md

- EIP-1344: EIP-1344 makes chain ID available to smart contracts via opcode — https://www.eipsfordesigners.com/standards/EIP-1344/agent.md

- EIP-1193: The provider API through which eth_chainId is called — https://www.eipsfordesigners.com/standards/EIP-1193/agent.md

## Official specification (reference only)

https://eips.ethereum.org/EIPS/eip-695
