Private names: ENS and CCIP-Read
How name.ephmrl.eth will resolve to a fresh stealth address on every lookup, who publishes the announcement, and what the gateway can and cannot do.
Most wallets do not speak ERC-5564. They do resolve ENS names. A private name bridges the two: the sender types a name, their wallet asks ENS for an address, and the answer is a brand-new stealth address that only you can spend from.
How a lookup works
The wallet asks ENS for the address of name.ephmrl.eth. The resolver for ephmrl.eth answers with an offchain lookup (EIP-3668, CCIP-Read) that points to our gateway.
The gateway derives a fresh stealth address from your registered meta-address, with a new random ephemeral key, exactly as a sender would. See Stealth address math.
The gateway signs its answer. The resolver contract checks that signature before the wallet accepts the address.
The gateway publishes the announcement. A sender with an ordinary wallet will not call the Announcer, so the gateway does, so that your client finds the payment like any other.
What the gateway can and cannot do
| Knows | Which stealth addresses it issued for your name, and the IP address of each lookup |
| Cannot | Spend from those addresses, or see which of them were paid without reading the chain like anyone else |
| Could, if compromised | Hand out an address it controls instead of one of yours, for new payments only |
The last line is the real trust in this design. Defences we plan:
- A public log. Every issued address is published with its ephemeral key in the announcement. Your client checks that each address issued for your name is one it can derive. A mismatch is visible at once.
- Separate keys. The gateway's signing key is kept apart from everything else we run, and can be rotated in the resolver.
- A way around it. A sender who wants zero trust pays your raw meta-address. The gateway is a convenience, never a requirement.
Caching and reuse
Some wallets cache the address an ENS name resolved to. If the same sender pays your name twice from a cached result, both payments land on the same stealth address. That links the two payments to each other, and to that sender, but not to you. The gateway sets the shortest cache lifetime ENS allows.
Abuse limits
Each lookup creates an announcement, which every scanner then checks. To keep names from being used to flood the chain, lookups are rate-limited per name and per caller, and announcements may be batched.