Skip to content

Add ERC: Readable Interoperable Addresses using ENS #735

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 54 commits into
base: master
Choose a base branch
from

Conversation

jrudolf
Copy link

@jrudolf jrudolf commented Nov 27, 2024

No description provided.

@eip-review-bot
Copy link
Collaborator

eip-review-bot commented Nov 27, 2024

File ERCS/erc-7828.md

Requires 1 more reviewers from @g11tech, @SamWilsn, @xinbenlv

@eip-review-bot eip-review-bot changed the title Add ERC: chain-specific addresses using ENS Add ERC: Chain-specific addresses using ENS Nov 27, 2024
@eip-review-bot eip-review-bot enabled auto-merge (squash) November 27, 2024 10:45
eip-review-bot
eip-review-bot previously approved these changes Nov 27, 2024
Copy link
Collaborator

@eip-review-bot eip-review-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All Reviewers Have Approved; Performing Automatic Merge...

@github-actions github-actions bot added the w-ci label Nov 27, 2024

The resolution of a `address@chain` on the contrary, imposes that the left-hand resolves to an address and the right-hand to a chain identifier.

When given a `[email protected]`, the wallet can resolve `rollup.eth` to get a chain identifier and `user.rollup.eth` to get an address. In any other case it fails.
Copy link

@niran niran Nov 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't require a new syntax: When the wallet is resolving user.rollup.eth, the standard resolution process should be resolve to resolve the way you described: resolve rollup.eth to get a chain identifier and user.rollup.eth to get an address.

This approach also allows user.rollup.eth to override this behavior by setting a record for their own preferred chain identifier to use when their ENS name is resolved. *.rollup.eth names will likely never override this, but I'd expect almost every user.eth to want to receive funds on some chain that isn't L1.

```
### Note: default fallbacks

If a user receives a legacy address without chain name, the wallet can:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think any of these fallbacks should be our target behavior. Users should be able to control on which chain assets sent to their ENS name arrive. I think ENS experts should lead the way on this resolution process via an ENSIP.

account ::= <user>@<chain>
```

Note the difference between `ens-name`, which is a full ENS name, and `ens-subdomain` that is just a segment of a name between dots. E.g. `user.app.eth` is a name, `user` and `app` are subdomains.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the below examples, isn't the user also just <address> | <ens-name>?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the examples below it's indeed an but if I understand correctly it could also use an ens-subdomain such as [email protected] which might mean something different from [email protected].

The former would resolve user locally on arbitrum, and the latter (being a fully-qualified name) would resolve user.eth on L1. Is that not the intention?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This actually opens up a very big issue that I believe it’s not discussed here: in theory, user should beuser across the whole Ethereum ecosystem at least, but in fact there are many Domain Name Services beyond ENS that are local to some L2s or even just one.

For example, I have jaack.eth, and also registered jaack.avax on Avalanche C-Chain and jaack.blast on Blast.

First, I believe we should consider ENS as the ‘main router’ for DNS resolutions, because it’s stated as a requirement in the ERC. Since this is the case, then resolution should be global across Ethereum, including rollups. So user needs to be `user.eth on any chain, especially considering that this ERC would likely be implemented around the time that Namechain will be at least on testnet, so the ENS registry is itself on a ‘service’ L2.

@yoavw the case where an address is local only to its chain is the one where most addresses owned by users are smart wallets / accounts that are not the same across chains (unlike EOAs, that have the same pubkey / privkey across any EVM).

auto-merge was automatically disabled December 2, 2024 17:50

Head branch was pushed to by a user without write access

@github-actions github-actions bot removed the w-ci label Dec 2, 2024
Copy link
Member

@lucemans lucemans left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not approval, just natural amendment fixing markdown formatting

ERCS/erc-7828.md Outdated
Comment on lines 14 to 15
## Abstract
This proposal builds off of [ERC-7930] (Interoperable Addresses & Names) to provide a standard and human-readable format for chain-specific addresses which provides:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Abstract
This proposal builds off of [ERC-7930] (Interoperable Addresses & Names) to provide a standard and human-readable format for chain-specific addresses which provides:
## Abstract
This proposal builds off of [ERC-7930] (Interoperable Addresses & Names) to provide a standard and human-readable format for chain-specific addresses which provides:

ERCS/erc-7828.md Outdated
Comment on lines 21 to 22
## Motivation
The current Ethereum address landscape is leading to an ecosystem that will have hundreds and eventually thousands of L2s that use the same address format as Ethereum mainnet. This means an address by itself is not enough information to know which chain the address is related to. This can be problematic if funds are sent to an unreachable address on the incorrect chain. From the user account it should be possible to obtain the right chain identifier (chainID) to include in a transaction.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Motivation
The current Ethereum address landscape is leading to an ecosystem that will have hundreds and eventually thousands of L2s that use the same address format as Ethereum mainnet. This means an address by itself is not enough information to know which chain the address is related to. This can be problematic if funds are sent to an unreachable address on the incorrect chain. From the user account it should be possible to obtain the right chain identifier (chainID) to include in a transaction.
## Motivation
The current Ethereum address landscape is leading to an ecosystem that will have hundreds and eventually thousands of L2s that use the same address format as Ethereum mainnet. This means an address by itself is not enough information to know which chain the address is related to. This can be problematic if funds are sent to an unreachable address on the incorrect chain. From the user account it should be possible to obtain the right chain identifier (chainID) to include in a transaction.

ERCS/erc-7828.md Outdated
Comment on lines 44 to 45
## Specification
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Specification
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174.
## Specification
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174.

ERCS/erc-7828.md Outdated
Comment on lines 47 to 48
### Format
This standard defines a sub-syntax with extra semantics on top of the syntax defined in [ERC-7930].
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Format
This standard defines a sub-syntax with extra semantics on top of the syntax defined in [ERC-7930].
### Format
This standard defines a sub-syntax with extra semantics on top of the syntax defined in [ERC-7930].

ERCS/erc-7828.md Outdated
Comment on lines 107 to 108
### Checksum
Addresses must be serialized to the `ChainType, ChainReferenceLength, ChainReference, AddressLength, Address` format proposed in [ERC-7930] as Interoperable Addresses v1, and the 4-byte checksum MUST be displayed as part of the address as described in the syntax above.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Checksum
Addresses must be serialized to the `ChainType, ChainReferenceLength, ChainReference, AddressLength, Address` format proposed in [ERC-7930] as Interoperable Addresses v1, and the 4-byte checksum MUST be displayed as part of the address as described in the syntax above.
### Checksum
Addresses must be serialized to the `ChainType, ChainReferenceLength, ChainReference, AddressLength, Address` format proposed in [ERC-7930] as Interoperable Addresses v1, and the 4-byte checksum MUST be displayed as part of the address as described in the syntax above.

ERCS/erc-7828.md Outdated
Comment on lines 229 to 230
### Reverse Resolution step-by-step example
Starting from the Interoperable Address serialized above: `0x00020000010A14AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00010002`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Reverse Resolution step-by-step example
Starting from the Interoperable Address serialized above: `0x00020000010A14AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00010002`
### Reverse Resolution step-by-step example
Starting from the Interoperable Address serialized above: `0x00020000010A14AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00010002`

ERCS/erc-7828.md Outdated
Comment on lines 263 to 264
## Rationale
- We chose to use a centralized list of name registries, aka a [^name resolver registry], since mapping of chain names to chain ids, aka on-chain configs (as proposed in [ERC-7785]) are not yet a solved problem. Therefore there is a need to maintain a list of possible implementations, including stopgap solutions such as relying on ethereum-lists/chains.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Rationale
- We chose to use a centralized list of name registries, aka a [^name resolver registry], since mapping of chain names to chain ids, aka on-chain configs (as proposed in [ERC-7785]) are not yet a solved problem. Therefore there is a need to maintain a list of possible implementations, including stopgap solutions such as relying on ethereum-lists/chains.
## Rationale
- We chose to use a centralized list of name registries, aka a [^name resolver registry], since mapping of chain names to chain ids, aka on-chain configs (as proposed in [ERC-7785]) are not yet a solved problem. Therefore there is a need to maintain a list of possible implementations, including stopgap solutions such as relying on ethereum-lists/chains.

## Rationale
- We chose to use a centralized list of name registries, aka a [^name resolver registry], since mapping of chain names to chain ids, aka on-chain configs (as proposed in [ERC-7785]) are not yet a solved problem. Therefore there is a need to maintain a list of possible implementations, including stopgap solutions such as relying on ethereum-lists/chains.

## Open Discussions
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Open Discussions
## Open Discussions

ERCS/erc-7828.md Outdated
Comment on lines 275 to 276
## Backwards Compatibility
The naming scheme herein defined can represent all names supported by [ERC-7930] by displaying raw addresses without resolution
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Backwards Compatibility
The naming scheme herein defined can represent all names supported by [ERC-7930] by displaying raw addresses without resolution
## Backwards Compatibility
The naming scheme herein defined can represent all names supported by [ERC-7930] by displaying raw addresses without resolution

ERCS/erc-7828.md Outdated
Comment on lines 278 to 279
## Security Considerations
- By coupling the domain's TLD to a known resolution method, we avoid the case where the same human-readable name is registered on different naming registries pointing to different addresses, which would only have the address' 4-byte checksum as a mitigation on users sending funds to unintended addresses.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Security Considerations
- By coupling the domain's TLD to a known resolution method, we avoid the case where the same human-readable name is registered on different naming registries pointing to different addresses, which would only have the address' 4-byte checksum as a mitigation on users sending funds to unintended addresses.
## Security Considerations
- By coupling the domain's TLD to a known resolution method, we avoid the case where the same human-readable name is registered on different naming registries pointing to different addresses, which would only have the address' 4-byte checksum as a mitigation on users sending funds to unintended addresses.

@eip-review-bot eip-review-bot changed the title Add ERC: Human readable names for Interoperable Addresses Add ERC: Human readable names for Interoperable Addresses using ENS May 20, 2025
@github-actions github-actions bot added w-ci and removed w-ci labels May 20, 2025
@eip-review-bot eip-review-bot changed the title Add ERC: Human readable names for Interoperable Addresses using ENS Add ERC: Human readable Interoperable Addresses using ENS Jun 10, 2025
@github-actions github-actions bot removed the w-ci label Jun 10, 2025
@eip-review-bot eip-review-bot changed the title Add ERC: Human readable Interoperable Addresses using ENS Add ERC: Readable Interoperable Addresses using ENS Jun 10, 2025
<!-- TODO: find a few more edge cases or get rid of the ul -->

#### Supported CASA namespaces
Forward resolution (Interoperable Address -> Interoperable Name): `eip155` (via ENSIP-11) and anything supported by SLIP-0044, as defined in ENSIP-9.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ENSIPs are not currently permitted for external links. Instead use the ERC (might be eip-2304?)

ERCS/erc-7828.md Outdated
Comment on lines 200 to 205
## Open Discussions
- Further constrain the syntax of human-readable names to minimize:
- Collisions on names by e.g. UTS46 case folding
- Addresses that are valid ERC-7828 but cant be squeezed into ENS or comparable standards
- Conflicts with existing standards:
- ENSIP-11 defines the bitmask to use for `eip155` `coinType` assuming chainids are 31 bits or shorter, which is in conflict with [ERC-7785] and the addresses representable in [ERC-7930].
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These kind of sections end up being problematic in Final proposals. They tend to get frozen in time, and cannot be updated. Instead, put this in an <!-- HTML-style comment --> and the linter will ensure it gets removed before advancing.

@github-actions github-actions bot added the w-ci label Jun 10, 2025
Copy link

The commit 9aa2b40 (as a parent of addcc58) contains errors.
Please inspect the Run Summary for details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.