{"id":"ERC-6538","name":"Stealth Meta-Address Registry","status":"Final","chain":"both","category":{"id":"identity","name":"Identity & Privacy","description":"Who you are on-chain, and what you choose to reveal"},"journeyStages":[{"id":"authentication","name":"Authentication & Identity","description":"Proving who you are and logging in"}],"uxImpact":"Users register stealth meta-addresses in central registry — senders look up recipient's stealth keys to send privately. Design implications: add 'Register for Private Payments' onboarding, show registration status, enable ENS-like stealth address lookup. Design decisions: registry discoverability vs privacy — registered users are known to want privacy, balance convenience with metadata exposure.","hasDetailedContent":true,"content":{"id":"ERC-6538","sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/erc-6538","type":"official-spec"}],"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25","summary":"Users register stealth meta-addresses in central registry — senders look up recipient's stealth keys to send privately.","designerTakeaways":["You can add Register for private payments in wallet setup with clear discoverability tradeoff.","Your send flow can resolve ENS or handle to stealth meta-address from registry lookup.","You can show registration status so users know if they appear in private payment search."],"applicability":{"whenToUse":["Product supports ERC-5564 stealth sends.","Users want discoverable private receive without sharing keys manually.","Registry exists on target chain."],"whenToAvoid":["Users need maximum anonymity — registry reveals privacy preference.","Stealth sending is not implemented end-to-end.","Manual key exchange is preferred for high-security contexts."]},"prototypeFirst":[{"screen":"Private payments registration","why":"Users opt in with informed discoverability tradeoff.","covers":["Unregistered","Registering","Registered"],"include":["Benefit copy","Discoverability note","Confirm registration"]},{"screen":"Send lookup by name","why":"Senders find recipients like ENS but for private pay.","covers":["Found in registry","Not registered","Multiple matches"],"include":["Search field","Registry result row","Send privately CTA"]},{"screen":"Registry profile settings","why":"Users control public visibility of private payment preference.","covers":["Registered visible","Unregister"],"include":["Status toggle","What others see","Unregister warning"]},{"screen":"Recipient not in registry fallback","why":"Manual meta-address entry must remain for unlisted users.","covers":["Paste meta-address","Invalid format"],"include":["Advanced paste field","Validation feedback"]}],"mentalModel":[{"label":"Registry entry","description":"Maps identity (ENS, address) to stealth meta-address for lookup."},{"label":"Discoverability tradeoff","description":"Registration helps senders find you but signals you use privacy features."},{"label":"Lookup before send","description":"Sender queries registry, then ERC-5564 derivation produces deposit address."},{"label":"Public profile vs private payments","description":"Registry is about finding how to pay privately, not seeing private history."},{"label":"Unregister","description":"Removing registry entry stops discovery; existing stealth keys may still work."}],"statesToDesign":[{"state":"Not registered","trigger":"User has stealth keys but no registry entry.","userNeed":"Choose whether to be discoverable.","designResponse":"Prompt with Register benefits and privacy note."},{"state":"Registered — discoverable","trigger":"Entry live on registry.","userNeed":"Know others can find them for private pay.","designResponse":"Registered badge in settings with unregister option."},{"state":"Lookup success in send","trigger":"Sender searches name.","userNeed":"Confidence correct person found.","designResponse":"Show avatar, name, Private payments enabled, continue."},{"state":"Lookup miss","trigger":"Name not in registry.","userNeed":"Alternative path.","designResponse":"Not registered for private payments with paste meta-address option."},{"state":"Unregister pending","trigger":"User removes registry entry.","userNeed":"Understand senders cannot find them via lookup.","designResponse":"Confirmation modal with unregister consequences."}],"designDecisions":[{"question":"Surface registry in global search?","recommendation":"Show Private payments available badge on resolved profiles.","rationale":"Senders discover capability at moment of payment."},{"question":"Explain discoverability paradox?","recommendation":"One sentence: Helps friends pay you privately; shows you use privacy features.","rationale":"Informed consent prevents backlash from privacy purists."},{"question":"Require registration for stealth receive?","recommendation":"No — allow manual meta-address share without registry.","rationale":"Registry is convenience, not gate."}],"problemsSolved":[{"problem":"Stealth keys shared through insecure DMs","oldWay":"Copy-paste meta-address in Twitter DM","newWay":"Registry lookup by ENS or handle","impact":"high"},{"problem":"Senders cannot find stealth-capable recipients","oldWay":"Assume everyone uses public address only","newWay":"Registry signals private payment endpoint","impact":"medium"},{"problem":"Wrong meta-address pasted","oldWay":"Typo sends funds to unrecoverable address","newWay":"Verified lookup from registry reduces manual entry","impact":"high"}],"uxPatterns":[{"name":"Private Payments Registration","description":"Opt-in registry onboarding with tradeoff copy.","mockup":"concept/siwe-sign-in","components":["RegisterCTA","DiscoverabilityNote","StatusBadge"],"userFlow":["User opens privacy settings","Reads tradeoff","Registers","Badge shows active"]},{"name":"Registry Lookup Send","description":"Find recipient stealth profile by name.","mockup":"concept/verify-safety","components":["SearchInput","RegistryResult","PrivateSendCTA"],"userFlow":["Sender searches name","Registry returns meta-address","Send privately pre-filled","Payment sent"]}],"seenInTheWild":[{"app":"Umbra","url":"https://umbra.cash/","note":"Stealth registry patterns with ENS integration."},{"app":"ENS App","url":"https://app.ens.domains/","note":"Name resolution UX extends to stealth lookup."},{"app":"Rainbow","url":"https://rainbow.me/","note":"Send flow name resolution sets lookup interaction bar."},{"app":"Lens Protocol","url":"https://lens.xyz/","note":"Profile-based payment discovery parallels registry model."}],"antiPatterns":[{"pattern":"Auto-register without consent","why":"Privacy preference leaked without opt-in","instead":"Explicit registration with discoverability explanation","severity":"critical"},{"pattern":"Registry lookup without identity confirmation","why":"Funds sent to wrong person","instead":"Show avatar, ENS, and confirm screen before send","severity":"critical"},{"pattern":"Hiding manual meta-address entry","why":"Unregistered recipients cannot get paid","instead":"Advanced paste path always available","severity":"high"}],"vocabulary":[{"use":"Private payments profile","avoid":"Stealth meta-address registry entry","why":"Profile language over registry jargon."},{"use":"Find by name","avoid":"Query registry mapping","why":"Search interaction users know."},{"use":"Accepts private payments","avoid":"6538 registered","why":"Capability label, not standard number."}],"onMonad":[{"aspect":"Registry freshness","ethereum":"Lookup may lag behind registration tx","monad":"Fast finality shows registered status quickly","designImplication":"Refresh lookup immediately after registration success."},{"aspect":"Privacy feature adoption","ethereum":"Gas may deter registration","monad":"Low-cost registration encourages opt-in","designImplication":"Bundle registration into wallet setup on Monad."}],"technicalNotes":"ERC-6538 registry trades discoverability for convenience; always explain paradox and keep manual meta-address path.","relatedStandards":[{"id":"ERC-5564","relationship":"Stealth addresses registered for discovery"},{"id":"ERC-137","relationship":"ENS names as registry lookup keys"}]},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/erc-6538","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-6538","type":"discussion"},{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/erc-6538","type":"official-spec"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-6538","markdown":"https://www.eipsfordesigners.com/standards/ERC-6538/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-6538/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-6538","official":"https://eips.ethereum.org/EIPS/erc-6538","discussion":"https://ethereum-magicians.org/search?q=ERC-6538"},"freshness":{"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25"}}