{"id":"ERC-7950","name":"Chain ID with Tx Hash","status":"Final","chain":"both","category":{"id":"cross-chain","name":"Cross-Chain","description":"Moving assets and messages between chains"},"journeyStages":[{"id":"status","name":"Status & Confirmation","description":"Waiting for and confirming outcomes"}],"uxImpact":"ERC-7950 encodes an EIP-155 chain ID and a transaction hash as chainId:txHash:tx. Compatible apps can use that reference for chain-aware lookup and sharing. The reference is not itself an explorer URL or proof of payment, and wallets and explorers choose whether to support it.","officialUrl":"https://ercs.ethereum.org/ERCS/erc-7950","lastReviewed":"2026-09-18","lastUpdated":"2026-09-18","kind":"proposal","hasDetailedContent":true,"content":{"id":"ERC-7950","specConstraints":[{"id":"transaction-link-chain-id","constraint":"Transaction links use an EIP-155 chain ID from the stated chain ID registry.","appliesTo":"application","normativity":"normative","specQuote":"- A chain ID, denoted as `chainId`. The used chain id MUST be based on [EIP-155](./eip-155.md) and the chain ID repository stated in that EIP.","specSection":"Specification","specUrl":"https://ercs.ethereum.org/ERCS/erc-7950#specification","designImplication":"Show the network alongside a transaction link and resolve it against the correct chain, not only by transaction hash."},{"id":"transaction-link-hash-format","constraint":"Transaction links encode the transaction hash with the `0x` prefix.","appliesTo":"application","normativity":"normative","specQuote":"- A transaction hash, denoted as `txHash`. The hash MUST include the `0x` prefix.","specSection":"Specification","specUrl":"https://ercs.ethereum.org/ERCS/erc-7950#specification","designImplication":"Preserve the canonical hash format in copy, QR, and explorer links so the destination can parse it reliably."}],"sources":[{"label":"Official specification","url":"https://ercs.ethereum.org/ERCS/erc-7950","type":"official-spec"}],"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18","summary":"ERC-7950 encodes an EIP-155 chain ID and a transaction hash as chainId:txHash:tx. Compatible apps can use that reference for chain-aware lookup and sharing. The reference is not itself an explorer URL or proof of payment, and wallets and explorers choose whether to support it.","designerTakeaways":["Offer Copy transaction reference for the encoded string, and Copy explorer link only when copying an actual URL.","A compatible paste field can decode the reference, then use a configured network and explorer mapping for lookup.","Show transaction status from a trusted chain lookup; the encoded reference alone does not establish success or finality."],"applicability":{"whenToUse":["Support and social sharing of transactions across chains.","Activity feeds span multiple networks.","Users paste tx refs from other users frequently."],"whenToAvoid":["Single-chain app with native explorer links only.","No multi-chain explorer routing.","Users never share raw tx references."]},"prototypeFirst":[{"screen":"Transaction status with share","why":"Share a transaction identifier with explicit chain context, including pending or failed transactions.","covers":["Confirmed","Pending","Failed"],"include":["Status strip","Copy transaction reference","Chain badge on status"]},{"screen":"Paste tx reference lookup","why":"Support and power users paste refs from tickets.","covers":["Valid decode","Unknown chain","Malformed"],"include":["Paste field","Decoded chain + hash","Open explorer CTA"]},{"screen":"Activity feed tx row","why":"Each row must show chain context.","covers":["Multi-chain feed"],"include":["Chain icon on row","Share icon","Explorer link"]},{"screen":"Unrecognized chain ID","why":"New chains appear before explorer list updates.","covers":["Unknown chain"],"include":["Unknown network message","Raw hash fallback","Add explorer config admin"]}],"mentalModel":[{"label":"Tx reference","description":"Portable string tying hash to chain."},{"label":"Decode","description":"A compatible parser validates the chain ID, prefixed hash, and tx suffix."},{"label":"Explorer routing","description":"The app maps a recognized chain ID to a configured explorer; unknown chains need a fallback."},{"label":"Reference versus link","description":"The encoded reference is a string. A clickable explorer URL is a separate app-generated artifact."},{"label":"Cross-app paste","description":"The receiving wallet, support tool, or explorer must implement the format; universal paste support is not guaranteed."}],"statesToDesign":[{"state":"Transaction reference available","trigger":"The app has a chain ID and transaction hash.","userNeed":"Share the identifier and see its current status.","designResponse":"Copy the reference with chain context. Keep pending, failed, successful, and finalized states separate."},{"state":"Paste valid reference","trigger":"User pastes encoded ref.","userNeed":"See tx details.","designResponse":"Validate the format, show the chain and hash, then query a supported network for status. Handle a transaction that is not found."},{"state":"Malformed paste","trigger":"Invalid format.","userNeed":"Fix input.","designResponse":"Could not read transaction reference inline error."},{"state":"Unknown chain in reference","trigger":"Chain id not in app registry.","userNeed":"Still access hash.","designResponse":"Show the numeric chain ID and hash. Do not construct an explorer link until a trusted mapping is available."},{"state":"Pending tx share","trigger":"User shares before confirm.","userNeed":"Recipient knows may pending.","designResponse":"Copy the reference with a Pending when shared label. The recipient still needs a fresh status lookup."}],"designDecisions":[{"question":"Show encoded string in UI?","recommendation":"Hide behind copy; show chain badge plus truncated hash.","rationale":"A readable network label exposes the chain context without requiring the reader to interpret the encoded form."},{"question":"Auto-open explorer on paste?","recommendation":"Load in-app status first; explorer as secondary action.","rationale":"Keep users in app when possible."},{"question":"Pending tx shareable?","recommendation":"Yes with Pending disclaimer in share template.","rationale":"Support needs refs before confirmation."}],"problemsSolved":[{"problem":"Which chain was this tx on?","oldWay":"Support asks back and forth","newWay":"Encoded reference self-documents chain","impact":"high"},{"problem":"Wrong explorer opened","oldWay":"Etherscan link for Arbitrum tx","newWay":"A supported chain ID routes through the app's configured explorer mapping","impact":"high"},{"problem":"Ugly tx hash only shares","oldWay":"0x hash ambiguous","newWay":"One copy button produces portable reference","impact":"medium"}],"uxPatterns":[{"name":"Copy Transaction Reference","description":"One button copies the encoded reference. Offer an explorer URL separately when available.","components":["ShareButton","ChainBadge","TxHashTruncate"],"userFlow":["Chain ID and transaction hash are available","User selects Copy transaction reference","Encoded ref copied","Recipient pastes into a compatible app and looks up current status"]},{"name":"Paste Tx Reference Lookup","description":"Validate a pasted reference and query a supported network for status.","components":["PasteField","DecodePreview","ExplorerLink"],"userFlow":["Paste reference","Decode succeeds","Recognized network is queried, or an unsupported-network fallback is shown","Status or transaction-not-found state loads","Optionally open a configured explorer"]}],"antiPatterns":[{"pattern":"Showing raw encoded string as primary UI","why":"The encoded form alone does not explain the network or the transaction's current status.","instead":"Chain badge plus hash; encode only on copy","severity":"high"},{"pattern":"Looking up a bare hash on an assumed network","why":"A transaction hash alone does not supply the chain context needed for lookup.","instead":"Decode a valid ERC-7950 reference, or ask for the network when accepting a bare hash.","severity":"critical"},{"pattern":"Dead end on unknown chain id","why":"New chains break support flow","instead":"Keep the chain ID and hash available for copying, and explain that the app cannot look up this network yet.","severity":"medium"}],"vocabulary":[{"use":"Transaction reference","avoid":"7950-encoded reference","why":"Use reference for the encoded string and explorer link only for an actual URL."},{"use":"On [chain name]","avoid":"ChainId prefix","why":"Network name on status rows."},{"use":"Look up transaction","avoid":"Decode tx reference","why":"Paste field action label."}],"technicalNotes":"ERC-7950 uses chainId:txHash:tx with an EIP-155 chain ID, a transaction hash carrying the 0x prefix, and the tx type marker. Characters are case-insensitive. The format does not define an HTTP URL, mandate wallet or explorer support, or attest to a transaction's outcome. Resolve status and explorer destinations through the app's supported networks and configured providers.","relatedStandards":[{"id":"ERC-7930","relationship":"Chain-aware addresses complement tx refs"},{"id":"EIP-695","relationship":"Chain ID in encoded reference"}]},"sources":[{"label":"Official specification","url":"https://ercs.ethereum.org/ERCS/erc-7950","type":"official-spec"},{"label":"Discussion search","url":"https://ethereum-magicians.org/search?q=ERC-7950","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-7950","markdown":"https://www.eipsfordesigners.com/standards/ERC-7950/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-7950/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-7950","official":"https://ercs.ethereum.org/ERCS/erc-7950","discussion":"https://ethereum-magicians.org/search?q=ERC-7950"},"freshness":{"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18"}}