{"id":"EIP-695","name":"eth_chainId Method","status":"Final","chain":"both","category":{"id":"comprehension","name":"Comprehension & Display","description":"Making blockchain data readable to humans"},"journeyStages":[{"id":"discovery","name":"Discovery & Connection","description":"Finding and connecting wallet to dApp"},{"id":"status","name":"Status & Confirmation","description":"Waiting for and confirming outcomes"}],"uxImpact":"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).","hasDetailedContent":true,"content":{"id":"EIP-695","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.","applicability":{"whenToUse":["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."],"whenToAvoid":["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."]},"designerTakeaways":["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."],"problemsSolved":[{"problem":"No reliable way to identify the network","oldWay":"net_version returned network ID which differed from chain ID","newWay":"eth_chainId returns the actual chain ID used in signatures","impact":"critical"},{"problem":"Apps couldn't verify correct network connection","oldWay":"Guess based on other RPC calls, often wrong","newWay":"Direct query: \"What chain ID is this?\"","impact":"high"},{"problem":"Wallet network display was inconsistent","oldWay":"Different wallets showed different identifiers","newWay":"All wallets use standardized chain ID","impact":"high"},{"problem":"Wrong network transactions were common","oldWay":"User thinks they're on mainnet, actually on testnet","newWay":"Apps verify chain ID before any transaction","impact":"medium"}],"uxPatterns":[{"name":"Network Connection Status","description":"Show current network with chain ID verification","mockup":"concept/verify-safety","userFlow":["User connects wallet","App calls eth_chainId","Network name + chain ID displayed","Verification badge shows match","User confident they're on correct network"]},{"name":"Network Verification Gate","description":"Block actions until correct network confirmed","mockup":"concept/verify-safety","userFlow":["App requires specific chain ID","User connected to different chain","Clear comparison shown","One-click switch option","App unblocks after switch"]},{"name":"Network Selector Dropdown","description":"Easy network switching with chain IDs visible","mockup":"concept/verify-safety","userFlow":["User clicks network selector","All available networks shown","Chain ID visible for each","Click to switch","Wallet handles the switch"]}],"uiComponents":[{"name":"ChainIdDisplay","description":"Shows chain ID with optional verification","states":["verified","unverified","mismatch"],"props":["chainId","chainName","showVerification"]},{"name":"NetworkSelector","description":"Dropdown for switching networks","states":["idle","open","switching"],"props":["networks[]","currentChainId","onSelect"]},{"name":"NetworkGate","description":"Blocks UI until correct network selected","states":["blocked","switching","unblocked"],"props":["requiredChainId","currentChainId","onSwitch"]}],"antiPatterns":[{"pattern":"Not verifying chain ID after connection","why":"User might connect on wrong network, lose funds or get errors","instead":"Always call eth_chainId after wallet connection","severity":"critical"},{"pattern":"Only showing network name without chain ID","why":"Malicious RPCs could claim to be mainnet","instead":"Show both name AND chain ID for verification","severity":"high"},{"pattern":"Using net_version instead of eth_chainId","why":"net_version can differ from chain ID used in signatures","instead":"Always use eth_chainId for network identification","severity":"high"},{"pattern":"Silently failing on wrong network","why":"User doesn't know why app isn't working","instead":"Clear \"Please switch to [Network]\" message with action button","severity":"medium"}],"onMonad":[{"aspect":"Monad Chain ID","ethereum":"Mainnet = 1, various L2s have different IDs","monad":"Monad has its own unique chain ID","designImplication":"Add Monad to network selectors with proper chain ID"},{"aspect":"Network Discovery","ethereum":"Popular networks are well-known","monad":"May need \"Add Monad\" helper for new users","designImplication":"Provide easy one-click \"Add Monad Network\" button"},{"aspect":"Multi-Chain Users","ethereum":"Users often switch between L1 and L2s","monad":"Users may switch between Ethereum and Monad frequently","designImplication":"Make network switching prominent and easy"}],"relatedStandards":[{"id":"EIP-155","relationship":"EIP-155 introduced chain ID in signatures, EIP-695 provides the query method"},{"id":"EIP-1344","relationship":"EIP-1344 makes chain ID available to smart contracts via opcode"},{"id":"EIP-1193","relationship":"The provider API through which eth_chainId is called"}]},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-695","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=EIP-695","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/EIP-695","markdown":"https://www.eipsfordesigners.com/standards/EIP-695/content.md","agent":"https://www.eipsfordesigners.com/standards/EIP-695/agent.md","api":"https://www.eipsfordesigners.com/api/standards/EIP-695","official":"https://eips.ethereum.org/EIPS/eip-695","discussion":"https://ethereum-magicians.org/search?q=EIP-695"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}