{"id":"EIP-1191","name":"Chain-specific Address Checksum","status":"Last Call","chain":"both","category":{"id":"comprehension","name":"Comprehension & Display","description":"Making blockchain data readable to humans"},"journeyStages":[{"id":"status","name":"Status & Confirmation","description":"Waiting for and confirming outcomes"}],"uxImpact":"Addresses have different checksums per chain — prevents sending mainnet funds to a testnet address that happens to be valid. Design implications: validate addresses against current network's chain ID, show chain badge alongside addresses, warn when address checksum doesn't match current network. Design decisions: which chains to support (RSK uses this, Ethereum mainnet doesn't), whether to treat cross-chain checksum mismatch as error or warning, how to handle chains that don't adopt this standard.","hasDetailedContent":true,"content":{"id":"EIP-1191","summary":"EIP-1191 extends address checksums to include the chain ID. The same address looks slightly different on each chain (different letter capitalizations). This prevents users from accidentally sending funds to the right address but on the wrong network - a common and costly mistake in multi-chain world.","applicability":{"whenToUse":["Your product addresses: same checksum valid on all chains.","Your product addresses: cross-chain address confusion.","The flow should deliver: checksum differs by chain, wrong-chain addresses fail validation.","You are designing a chain-specific address display experience with visible states and recovery paths."],"whenToAvoid":["Always validate checksum and warn on mismatch.","Show what was corrected and why.","Offer chain-specific copy buttons when relevant.","Users never see addresses, amounts, or signing payloads in your UI."]},"designerTakeaways":["You can design UI that delivers checksum differs by chain.","You can design UI that delivers chain-specific checksum catches the mistake.","You can design UI that delivers different capitalizations hint at different chains."],"problemsSolved":[{"problem":"Same checksum valid on all chains","oldWay":"Address looks identical on Ethereum and Polygon, easy to send to wrong chain","newWay":"Checksum differs by chain, wrong-chain addresses fail validation","impact":"high"},{"problem":"Cross-chain address confusion","oldWay":"Copy address from one chain, paste to another, funds go to wrong place","newWay":"Chain-specific checksum catches the mistake","impact":"high"},{"problem":"No visual indicator of intended chain","oldWay":"All addresses look the same regardless of chain","newWay":"Different capitalizations hint at different chains","impact":"medium"}],"uxPatterns":[{"name":"Chain-Specific Address Display","description":"Show address with checksum matching current chain","mockup":"concept/typed-data","userFlow":["User views their address","Address shown with chain-specific checksum","Copy button labeled with chain name","Explanation of why they differ"]},{"name":"Wrong Chain Address Warning","description":"Detect and warn about chain mismatch","mockup":"concept/typed-data","userFlow":["User pastes address","Checksum validated against current chain","Mismatch detected","Warning shown with detected chain","User can proceed with caution or cancel"]},{"name":"Address Input with Chain Validation","description":"Validate address format matches current chain","mockup":"concept/typed-data","userFlow":["User enters recipient address","Checksum validated in real-time","Green check if matches current chain","Warning if different chain checksum","Proceed only with valid checksum"]}],"uiComponents":[{"name":"ChainAwareAddressInput","description":"Address input that validates checksum for current chain","states":["empty","valid","invalid","wrong-chain"],"props":["chainId","value","onChange","onValidation"]},{"name":"ChecksumMismatchWarning","description":"Warning modal for chain-mismatched addresses","states":["detected","confirmed","cancelled"],"props":["detectedChain","currentChain","address","onProceed","onCancel"]},{"name":"MultiChainAddressDisplay","description":"Shows same address with different chain checksums","states":["single","multiple"],"props":["address","chains[]","onCopy"]}],"antiPatterns":[{"pattern":"Ignoring checksum validation","why":"Misses opportunity to catch wrong-chain mistakes","instead":"Always validate checksum and warn on mismatch","severity":"high"},{"pattern":"Silently correcting checksum","why":"User doesn't learn about the safety feature","instead":"Show what was corrected and why","severity":"medium"},{"pattern":"Only showing one address format","why":"User might copy and paste to wrong chain","instead":"Offer chain-specific copy buttons when relevant","severity":"medium"},{"pattern":"Blocking wrong-chain addresses entirely","why":"Sometimes user knows what they're doing (same address, different chain)","instead":"Warn but allow proceeding with confirmation","severity":"medium"}],"onMonad":[{"aspect":"Monad-Specific Checksum","ethereum":"Checksum includes chain ID 1","monad":"Monad checksum uses Monad's chain ID","designImplication":"Show Monad-formatted addresses when on Monad network"},{"aspect":"Cross-Chain Transfers","ethereum":"Users often bridge between L1 and L2s","monad":"Users may bridge between Ethereum and Monad","designImplication":"Extra clarity needed when copying addresses for bridge operations"}],"relatedStandards":[{"id":"ERC-55","relationship":"ERC-55 is the base checksum standard, EIP-1191 extends it with chain ID"},{"id":"EIP-155","relationship":"EIP-155 introduced chain ID concept that EIP-1191 uses in checksums"},{"id":"EIP-695","relationship":"eth_chainId provides the chain ID used for checksum calculation"}]},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-1191","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=EIP-1191","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/EIP-1191","markdown":"https://www.eipsfordesigners.com/standards/EIP-1191/content.md","agent":"https://www.eipsfordesigners.com/standards/EIP-1191/agent.md","api":"https://www.eipsfordesigners.com/api/standards/EIP-1191","official":"https://eips.ethereum.org/EIPS/eip-1191","discussion":"https://ethereum-magicians.org/search?q=EIP-1191"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}