{"id":"ERC-7930","name":"Chain-Specific Address Format","status":"Review","chain":"both","category":{"id":"cross-chain","name":"Cross-Chain","description":"Moving assets and messages between chains"},"journeyStages":[{"id":"authentication","name":"Authentication & Identity","description":"Proving who you are and logging in"},{"id":"reading","name":"Reading & Understanding","description":"Interpreting what you're being asked to do"},{"id":"status","name":"Status & Confirmation","description":"Waiting for and confirming outcomes"}],"uxImpact":"ERC-7930 defines a versioned, length-prefixed binary envelope for chain-specific account identifiers. Pair it with a human-readable companion such as ERC-7828 or a CAIP-350 display profile when showing chain context to users; the ERC-7930 wire format is not itself a user-facing prefix string.","officialUrl":"https://ercs.ethereum.org/ERCS/erc-7930","lastReviewed":"2026-09-18","lastUpdated":"2026-09-18","kind":"proposal","hasDetailedContent":true,"content":{"id":"ERC-7930","sources":[{"label":"Official specification","url":"https://ercs.ethereum.org/ERCS/erc-7930","type":"official-spec"}],"lastReviewed":"2026-09-18","specConstraints":[{"id":"interoperable-envelope","constraint":"An Interoperable Address uses a structured binary envelope that identifies a target address together with its chain context.","appliesTo":"application","normativity":"normative","specQuote":"An _Interoperable Address_ as defined by this standard MUST have the following binary format:","specSection":"Specification / Interoperable Address Definition","specUrl":"https://ercs.ethereum.org/ERCS/erc-7930#specification","designImplication":"Decode and preserve version, chain type, chain reference, and address as separate context before signing or displaying an account identifier; do not treat the binary blob as a human-readable label."},{"id":"chain-identifier-distinction","constraint":"A zero-length address denotes a chain identifier, while an address length cannot be zero when the chain reference length is also zero.","appliesTo":"application","normativity":"normative","specQuote":"Note that it MAY be zero, in which case the _Interoperable Address_ is a _Chain Identifier_ and MUST NOT include an address. It MUST NOT be zero if the _ChainReferenceLength_ is also zero.","specSection":"Specification / Interoperable Address Definition","specUrl":"https://ercs.ethereum.org/ERCS/erc-7930#specification","designImplication":"Label chain-only identifiers differently from account addresses and show missing address context as intentional rather than malformed."},{"id":"canonicality-validation","constraint":"Implementers requiring canonical addresses are advised to review the relevant CAIP-350 profile for non-canonical serialization and namespace collisions.","appliesTo":"application","normativity":"security-considerations","specQuote":"It is therefore advised for implementers requiring canonicity of addresses (e.g by using them as keys in smart contract mappings or other key-value stores), to thoroughly review the [CAIP-350] profile of a chain namespace for the possibility of a lack of canonicity of addresses (which should be noted in the profile's 'Extra Considerations' section) as well as collisions with other already-supported namespaces.","specSection":"Security Considerations","specUrl":"https://ercs.ethereum.org/ERCS/erc-7930#security-considerations","designImplication":"Validate decoded chain context and collision policy before using an Interoperable Address as an account key, and show an unresolved or ambiguous network state instead of claiming canonical identity."},{"id":"interoperable-address-lowercase","constraint":"If an Interoperable Address is displayed directly, it is RECOMMENDED to use a lowercase hexadecimal string.","appliesTo":"application","normativity":"normative","specQuote":"If you choose to display an _Interoperable Address_ it is RECOMMENDED that you display it as a lower case hexadecimal string.","specSection":"Specification — Interoperable Address Definition","specUrl":"https://ercs.ethereum.org/ERCS/erc-7930#interoperable-address-definition","designImplication":"When exposing the raw format, use lowercase hexadecimal consistently and pair it with decoded chain context; prefer a human-readable companion when users need network meaning."},{"id":"human-readable-companion-option","constraint":"A CAIP-350 human-readable representation MAY be displayed in user-facing contexts.","appliesTo":"application","normativity":"normative","specQuote":"The companion standard, CAIP-350, specifies on a per-namespace basis, the rules for converting the `ChainReference` and `Address` components of the _Interoperable Address_ into human readable representations. These MAY be displayed in user-facing contexts.","specSection":"Specification — Text representation","specUrl":"https://ercs.ethereum.org/ERCS/erc-7930#text-representation","designImplication":"Offer a human-readable companion profile when users need readable network and account context, while retaining the binary identifier for wire and API use."}],"lastUpdated":"2026-09-18","summary":"ERC-7930 defines a versioned, length-prefixed binary envelope for chain-specific account identifiers. Pair it with a human-readable companion such as ERC-7828 or a CAIP-350 display profile when showing chain context to users; the ERC-7930 wire format is not itself a user-facing prefix string.","partialDeployment":{"body":"ERC-7930 is Review. Treat binary chain-aware identifiers as conditional on encoder, parser, wallet, and client support; verify a human-readable companion profile and the selected network context before sending."},"designerTakeaways":["You can display a human-readable chain label beside an address encoded with the ERC-7930 binary envelope.","Your parser can validate the decoded chain context against the intended network before sending.","You can offer a companion display/copy profile such as ERC-7828 while keeping ERC-7930 for API or wire use."],"applicability":{"whenToUse":["Multi-chain send and receive flows.","Wrong-chain sends are critical risk.","Wallets need a binary chain-aware account identifier plus a human-readable display profile."],"whenToAvoid":["Legacy hex-only addresses only.","Single-chain app with no cross-chain send.","Format not supported by target wallets."]},"prototypeFirst":[{"screen":"Chain-aware address display","why":"Every address shown should expose chain context through an appropriate human-readable profile.","covers":["With companion chain label","Legacy fallback"],"include":["Chain icon","Chain label","Truncated hex","Copy button"]},{"screen":"Paste validation mismatch","why":"Catch wrong chain before compose completes.","covers":["Match","Mismatch","Invalid format"],"include":["Red inline error","Expected vs got chain","Switch or fix CTA"]},{"screen":"Send confirm with chain emphasis","why":"Last chance before irreversible send.","covers":["Confirm step"],"include":["Large chain badge","Decoded chain context and address","This sends on [chain] copy"]},{"screen":"Copy profile picker","why":"Power users may need wire versus human-readable companion copy.","covers":["Settings preference"],"include":["Copy profile toggle","Preview string","Save preference"]}],"mentalModel":[{"label":"Decoded chain context","description":"The binary envelope identifies the target network; a companion profile can render it as a label."},{"label":"Legacy address","description":"Raw 0x hex — ambiguous across chains."},{"label":"ERC-7930 envelope","description":"Versioned, length-prefixed binary account identifier for parsers and APIs."},{"label":"Validation","description":"Parser checks decoded chain context against the intended send chain."},{"label":"Conversion","description":"Wallets may convert between legacy and formatted views."}],"statesToDesign":[{"state":"Valid chain context — match","trigger":"Decoded chain context matches the intended chain.","userNeed":"Send confidently.","designResponse":"Green validation; proceed."},{"state":"Chain context mismatch","trigger":"Decoded identifier targets a different chain.","userNeed":"Not send on wrong chain.","designResponse":"Block with This address is for [chain] message."},{"state":"Legacy address pasted","trigger":"Only a legacy 0x address or an unsupported display profile is present.","userNeed":"Pick chain or convert.","designResponse":"Prompt for a network and offer a human-readable companion format; do not call the legacy string ERC-7930."},{"state":"Invalid format","trigger":"Malformed string.","userNeed":"Fix paste.","designResponse":"Invalid address format inline error."},{"state":"Copy chain-aware profile","trigger":"User copies receive address.","userNeed":"Share unambiguous address.","designResponse":"Copy includes the selected human-readable chain profile; retain ERC-7930 for wire/API use."}],"designDecisions":[{"question":"Display decoded chain context as icon, name, or code?","recommendation":"Icon plus short name in UI; code in advanced.","rationale":"Icons scan fast; chainId codes confuse."},{"question":"Offer a human-readable companion for the binary envelope?","recommendation":"Suggest a companion profile on paste, do not silently rewrite the underlying identifier.","rationale":"Conversion errors send to wrong encoding."},{"question":"Hide chain context in compact views?","recommendation":"Never on send confirm; optional in lists with a chain column.","rationale":"Confirm step needs maximum clarity."}],"problemsSolved":[{"problem":"Ambiguous 0x address across chains","oldWay":"Same hex valid everywhere","newWay":"Chain context encoded in the ERC-7930 envelope and rendered with a companion profile","impact":"critical"},{"problem":"Wrong-chain loss from copy-paste","oldWay":"Sent ETH mainnet to Base user address","newWay":"Decoded chain-context mismatch blocks before sign","impact":"critical"},{"problem":"Support cannot tell intended chain","oldWay":"User sends hex only","newWay":"A companion display profile can self-document the decoded chain context","impact":"medium"}],"uxPatterns":[{"name":"Chain-Aware Address Display","description":"Human-readable chain label beside the decoded address context.","components":["ChainIcon","ChainLabel","CopyButton"],"userFlow":["Display address","Chain context visible","User copies","Recipient parses chain"]},{"name":"Format Validation Gate","description":"Block send on decoded chain-context mismatch.","components":["FormatValidator","MismatchBanner","SwitchChainCTA"],"userFlow":["Paste address","Validate decoded chain context","Mismatch blocks","User fixes or switches"]}],"antiPatterns":[{"pattern":"Hiding decoded chain context in the companion display","why":"Defeats the purpose of a human-readable profile","instead":"Always show decoded chain context on send and receive through a human-readable companion profile","severity":"critical"},{"pattern":"Silent legacy conversion","why":"Wrong encoding sends to void","instead":"Explicit companion-profile conversion with preview; preserve the ERC-7930 envelope for wire use","severity":"high"},{"pattern":"Chain ID number as the only companion label","why":"Users do not know chain ids","instead":"Icon plus network name for the decoded chain context","severity":"medium"}],"vocabulary":[{"use":"[Chain] address","avoid":"7930-encoded CAIP string","why":"Human chain attribution."},{"use":"Wrong network for this address","avoid":"Prefix chainId mismatch","why":"Plain error language."},{"use":"Copy with network","avoid":"Export formatted blob","why":"Share action language."}],"technicalNotes":"ERC-7930 defines a versioned, length-prefixed binary envelope for chain-specific account identifiers and is not intended directly for human-facing contexts. Use a human-readable companion such as ERC-7828 or a CAIP-350 display profile for chain labels and confirmation UI; validate the decoded chain context before signing.","relatedStandards":[{"id":"ERC-7828","relationship":"ERC-7828 is a human-readable companion profile for chain-aware names"},{"id":"ERC-1191","relationship":"Chain-specific checksum"}]},"sources":[{"label":"Official specification","url":"https://ercs.ethereum.org/ERCS/erc-7930","type":"official-spec"},{"label":"Discussion search","url":"https://ethereum-magicians.org/search?q=ERC-7930","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-7930","markdown":"https://www.eipsfordesigners.com/standards/ERC-7930/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-7930/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-7930","official":"https://ercs.ethereum.org/ERCS/erc-7930","discussion":"https://ethereum-magicians.org/search?q=ERC-7930"},"freshness":{"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18"}}