# Chain-Specific Addresses ## Possible use-cases for discussion (throw any ideas here) 1. Alice wants to publicly post where she wants to get paid (e.g. alice.eth@optimism is in her twitter bio) ## User Stories 1. Alice got an airdrop on Bob-Chain and wants to sell it for Dai on Optimism, where she is saving up. She puts those tokens in escrow and publishes a sell order payable for XX Dai sent to `alice@optimism` (exact format tbd) 2. Polymarket use-case (targeted, human-error-proof deposits) * ![FA4BDBF9-8D68-4FAB-9CC6-95377D27F22D](https://hackmd.io/_uploads/r1mT_Py2A.jpg) * https://x.com/VitalikButerin/status/1810633473750683974 ## Goals A.) Hard Requirements 1. 1:1 mapping of unique ENS names to unique chainIds (whatever the ENS namespace defined for chain info) B.) Consensus Goal FOR FIRST EIP 1. Reduce "wrong-chain" fund loss 2. Reduce config burden for wallets 3. End-user can use a chain they've 4. Move L2s with canonical bridges to an on-chain registry 5. Human readability C.) Goals for future EIPs or Non-Consensus Goals 1. Enable standard interface for cross-chain intents & solvers 2. Stop using ethereum-lists/chains altogether 3. [EIP-7683][]-conformant dapp API for payments? ## Candidate Solutions * Use existing ENS for chains (e.g. optimism.chainbridge.eth) to claim names, with required record-types * some kind of check at time of registration for liveness of network and uniques of chainId * Existing ENS relying on CCIP * has a latency issue motivating Linea and ZKSync's * Vitalik: CCIP can function as a fallback, slow-lane lightclient of last resort; feels transitional for me, would like to see richer query systems for reading L2 state from L1 and vice versa * Alim: https://ethereum-magicians.org/t/rip-7728-l1sload-precompile/20388 * Extend ENS to allow `chain.TBD` to be a new registry or name type (but with all the same possible record types), changes ENS mechanics * Marco's solution is here, making `alice@` a parameter passed to `chain.TBD` registry with a mainnet fallback * user.rollup.eth (status quo) still works, using L1 ENS registry * user@rollup.eth for L2 registries that live on rollup * open questions: how prevent spoofing, enforce unique chainIds, etc? * Extend ENS to allow `@chain` modifier on `name.eth` records * Extend ENS to allow `@chain` to be a distinct registry and novel TLD (e.g. `.chain`) on eth-main * Sam's syntax based on `:` * `(samwilsn.eth:optimism)` `(samwilsn.eth:ethereum)` `(D3BAf1080b1Cfb5897225a21EcdcC25a1F4456:ethereum)` `(samwilsn.eth:ethereum:11155111)` * See https://hackmd.io/@SamWilsn/BkchNZxhA * Yoav: human-writable/editable is a major footgun- wallets could discourage this, and/or a chainid-including checksum * chainId-aware checksum replacing EIP55 such as [EIP-1191] may mitigate human editing * still reinforces ## References [EIP-1191]: https://eips.ethereum.org/EIPS/eip-1191 [EIP-7683]: https://eip.tools/eip/7683